【问题标题】:simplest rules in treetop not working树梢中最简单的规则不起作用
【发布时间】:2011-11-20 23:48:11
【问题描述】:

我有一个只有两条规则的树顶语法:

grammar RCFAE
    rule num
        [0-9]+ <Num>
    end

    rule identifier
        [a-zA-Z] [a-zA-Z]* <ID>
    end
end

我正在尝试解析简单的字符串(“A”和“5”)。如果我将该规则放在第一位,则“5”被识别为 Num,如果我将该规则放在第二位,则返回 nil。同样,如果我将该规则放在第一位,“A”将被识别为 ID,如果我将该规则放在第二位,则返回 nil。我无法理解这两个规则如何以任何方式重叠。快把我逼疯了!

关于树顶表达式或正则表达式,我有什么遗漏或不了解的地方吗?提前感谢您的帮助。

【问题讨论】:

    标签: ruby treetop peg


    【解决方案1】:

    Treetop 期望第一条规则是“主要规则”。它不会尝试应用您定义的所有规则,直到一个匹配 - 它只应用主规则,如果不匹配,它会失败。

    要做你想做的事,你需要添加一个可能是数字或标识符的主规则,如下所示:

    grammar RCFAE
        rule expression
            num / identifier
        end
    
        rule num
            [0-9]+ <Num>
        end
    
        rule identifier
            [a-zA-Z] [a-zA-Z]* <ID>
        end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      相关资源
      最近更新 更多