在解析表达式语法(PEG.js)中解析保留字

时间:2012-07-29 21:00:44

标签: parsing peg

similar questionauthor's website给我这样的解决方案:

Identifier "identifier"
  = !ReservedWord [A-Za-z_]+

ReservedWord
  = "test"
  / "abc"

此解决方案无法解析像“test_var”这样的标识符。

在这个例子中,语法!ReservedWord将排除以“test”或“abc”开头的所有变量。

提前致谢。

1 个答案:

答案 0 :(得分:5)

ReservedWord成功,当保留字完成时,无论如何。因此,解决方案是在包含更多标识符字符的较长匹配时使其失败:

Identifier "identifier"
  = !ReservedWord [A-Za-z_]+

ReservedWord
  = ( "test" / "abc" ) ![A-Za-z_]