【问题标题】:Parsing a reserved word in Parsing Expressive Grammar (PEG.js)在 Parsing Expressive Grammar (PEG.js) 中解析保留字
【发布时间】:2012-07-29 21:00:43
【问题描述】:

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

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

ReservedWord
  = "test"
  / "abc"

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

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

提前致谢。

【问题讨论】:

    标签: parsing peg


    【解决方案1】:

    ReservedWord 成功,当保留字完成时,不管后面是什么。所以解决方案是在包含更多标识符字符的更长匹配时使其失败:

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

    【讨论】:

    • 不错的解决方案。这对我帮助很大。
    • 这不是非常低效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 2020-01-22
    • 2019-03-28
    相关资源
    最近更新 更多