为什么pegjs无法处理空白规则""*

Why does pegjs fail to process the whitespace rule " "*

本文关键字:quot 规则 空白 pegjs 处理 为什么      更新时间:2023-09-26

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

使用+而不是*(对于word也是如此)。

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