Ruby 规则';在树梢上,谁的命令重要?
我刚刚开始使用TreeTop进行解析工作。以下是让我困惑的片段:Ruby 规则';在树梢上,谁的命令重要?,ruby,treetop,Ruby,Treetop,我刚刚开始使用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 o
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, ""]
但是当我把
规则id
放在规则整数
上面时,结果是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"]]