gpt4 book ai didi

ruby - treetop 上最简单的规则不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:15 29 4
gpt4 key购买 nike

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

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。我无法理解这两条规则如何以任何方式重叠。这让我发疯!

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

最佳答案

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

关于ruby - treetop 上最简单的规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205785/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com