以下简单的pegjs语法运行良好:
start
= sentence
sentence
= word ws sentence
/ word
word
= [a-z]*
ws
= " "
它可以在http://jsfiddle.net/4V3Zt/上使用。语法也可以粘贴到http://pegjs.majda.cz/online中。
如果我更改ws规则以允许空白空间任意空格:
ws
= " "* // add an asterisk to allow " ", " ", " ", ...
解析失败,引发最大调用堆栈异常。(如果使用jsfiddle,您会看到浏览器中的tools.The异常也出现在node.js环境中,因此它肯定与pegjs有关)。
这个ws规则中的*有什么问题吗?
发布于 2013-08-17 05:53:40
使用+
而不是*
(也适用于word
)。
*
可以匹配空字符串;+
至少需要一个实例。
https://stackoverflow.com/questions/18288296
复制