PEG.js 允许两个标签之间的任何文本

PEG.js Allow any text between two tags

我在定义允许两个标签(包括那些标签)之间的任何文本的表达式时遇到问题。

示例:

#ifdef
 asdasdasdasdasdsasd
asdasdasdasdasdasdasd
asdasdasdasdasdasasd
#endif

也应该允许

#ifdef
asdasdasd
asdasdsad
#ifdefasdasdasd
asdasdasd
#endif#endif
asdasdasd
asdasdasd
#endif

所以如你所见,只要以#ifdef 和endif 开始和结束,里面的任何文本都应该没问题。

谁能帮我造一个这样的表情?

到目前为止我试过的是:

H_IF_IGNORE 
= ("#ifdef) _
  H_IF_IGNORE / (!"#endif"i SourceCharacter)*
  "#endif"

但效果不是很好,在最后一个 endif 后最终会消耗更多文本。

此致

内部部分可以是另一个#ifdefSourceCharacter重复,所以两个部分都需要在括号中。

沿着这些方向尝试一些东西:

H_IF_IGNORE
= "#ifdef" _*
  (H_IF_IGNORE / (!"#endif" SourceCharacter))* _*
  "#endif"

SourceCharacter = .

_ = [\s\n]