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

PG_*_*PG_ 3 parsing peg

类似的问题作者的网站给我这样的解决方案:

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

ReservedWord
  = "test"
  / "abc"
Run Code Online (Sandbox Code Playgroud)

此解决方案无法解析此"test_var"之类的标识符.

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

提前致谢.

Gun*_*her 5

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

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

ReservedWord
  = ( "test" / "abc" ) ![A-Za-z_]
Run Code Online (Sandbox Code Playgroud)