为什么pegjs无法处理空格规则“”*

时间:2013-08-17 11:30:15

标签: javascript parsing peg pegjs

以下简单的pegjs语法工作正常:

start
  = sentence

sentence
  = word ws sentence
  / word

word
  = [a-z]*

ws
  = " "

可在http://jsfiddle.net/4V3Zt/处找到。 gramar也可以粘贴到http://pegjs.majda.cz/online

如果我更改ws规则以允许空格任意空格:

ws
  = " "*    // add an asterisk to allow " ", "  ", "   ", ...

解析失败并抛出最大的callstack异常。 (如果使用jsfiddle,你会在浏览器工具中看到异常。例外也出现在node.js环境中,所以它肯定与pegjs有关。)

此ws规则中的*有什么问题?

1 个答案:

答案 0 :(得分:1)

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

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