【发布时间】:2016-04-22 06:24:11
【问题描述】:
我试图了解如何使用 PEG.js 在文本中进行简单的搜索/替换。当然这不是解析器的预期用途,但无论如何我很好奇这些语言背后的逻辑以产生一些搜索/替换。
我遇到的问题是很难正面定义某些定义的互补性。一个例子:假设我想搜索和替换类似这样的语法:
rule = (whatever_is_not_my_syntax* m:my_syntax)+ {replace m}
word = [a-z0-9_]+
my_syntax = word "." word
whatever_is_not_my_syntax = ???
很难肯定地描述 PEG.js 中的 whatever_is_not_my_syntax 是什么,而不会与 my_syntax 发生部分冲突(以及随之而来的解析器错误),或者至少我不知道该怎么做,因为唯一的否定解析器PEG.js 上的函数是 !expression 和 [^characters]。
你能帮帮我吗?如果有任何关于这个主题的书籍或参考书目,我将不胜感激。提前谢谢你。
【问题讨论】: