Ruby 规则';在树梢上,谁的命令重要?

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

我刚刚开始使用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, ""]

但是当我把
规则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"]]