0

以下简单的 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 规则中的 * 有什么问题?

4

1 回答 1

1

使用+代替*word也用于)。

* 可以匹配空字符串;+至少需要一个实例。

于 2013-08-17T13:53:40.477 回答