2

解析作業を行うために 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ます。それで、問題は何ですか?前もって感謝します!

4

1 に答える 1

3

どこが悪いのか分かった気がする!!! 最初のルールとして配置される、他のルールを含むトップ ルールがあるはずです。

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"]]
于 2013-04-20T12:51:02.127 に答える