我在定义允许两个标签(包括那些标签)之间的任何文本的表达式时遇到问题。
例子:
#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 之后消耗更多的文本。
最好的问候
最佳答案
inner 部分可以是另一个 #ifdef
或重复的 SourceCharacter
,因此这两部分都需要放在括号中。
按照这些思路尝试一些事情:
H_IF_IGNORE
= "#ifdef" _*
(H_IF_IGNORE / (!"#endif" SourceCharacter))* _*
"#endif"
SourceCharacter = .
_ = [\s\n]
关于javascript - PEG.js 允许两个标签之间的任何文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50815740/