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 后最终会消耗更多文本。
此致
内部部分可以是另一个#ifdef
或SourceCharacter
重复,所以两个部分都需要在括号中。
沿着这些方向尝试一些东西:
H_IF_IGNORE
= "#ifdef" _*
(H_IF_IGNORE / (!"#endif" SourceCharacter))* _*
"#endif"
SourceCharacter = .
_ = [\s\n]
我在定义允许两个标签(包括那些标签)之间的任何文本的表达式时遇到问题。
示例:
#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 后最终会消耗更多文本。
此致
内部部分可以是另一个#ifdef
或SourceCharacter
重复,所以两个部分都需要在括号中。
沿着这些方向尝试一些东西:
H_IF_IGNORE
= "#ifdef" _*
(H_IF_IGNORE / (!"#endif" SourceCharacter))* _*
"#endif"
SourceCharacter = .
_ = [\s\n]