以下简单的 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,您会在浏览器工具中看到异常。该异常也出现在 node.js 环境中,因此它肯定与 pegjs 有关)。
这个 ws 规则中的 * 有什么问题?