gpt4 book ai didi

ruby - 规则的顺序在 TreeTop 中很重要吗?

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

我刚刚开始使用 TreeTop 来做解析工作。以下是令我困惑的片段:

grammar Fortran
rule integer
[1-9] [0-9]*
end

rule id
[a-zA-Z] [a-zA-Z0-9]*
end
end

parser = FortranParser.new
ast = parser.parse('1')

结果 ast 是:

[SyntaxNode offset=0, "1", SyntaxNode offset=1, ""]

但是当我将 rule id 放在 rule integer 之上时,结果是 nil。那么问题是什么?提前致谢!

最佳答案

我想我只是想出了哪里错了!!!应该有一个包含其他规则的顶级规则,它被放在第一条规则中:

grammar Fortran
rule statement
( id / integer )* {
def content
elements.map { |e| e.content }
end
}
end

rule id
[a-zA-Z] [a-zA-Z0-9]* {
def content
[:id, text_value]
end
}
end

rule integer
[1-9] [0-9]* {
def content
[:integer, text_value]
end
}
end
end

parser = FortranParser.new
ast = parser.parse('1')

那么结果就是

[[:integer, "1"]]

关于ruby - 规则的顺序在 TreeTop 中很重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16059997/

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