假设我有一种简单的语言来解析,它只是由字符串组成。"this is a string"
string -> "\"" chars "\""
但是,该字符串可以在花括号内包含代码。为了简单起见,我们只说code
只能是另一个字符串。"this is a string with {"code"}"
code -> "{" string "}"
如何在 Nearley 中定义新字符串以包含code
定义?我不断得到大量结果,因为chars
可以匹配一个或多个字符。
string -> "\"" charCode "\""
charCode -> (chars | code) charCode
| (chars | code)
code -> "{" string "}"
chars -> char chars
| char
char -> [^{}]
理想情况下,我可以将这样的东西"chars {"code"} chars chars {"code"} chars"
变成一个数组["chars ", "code", " chars chars ", "code", " chars"]
也许只能按照这个答案中的建议使用正则表达式和 moo 来做到这一点?(在这个例子中,开始和结束标签不那么模棱两可了,我没有遇到同样的问题。)[Nearley]:如何解析匹配的开始和结束标签