0

SQL スクリプトを解析するための文法があります。文法のレクサーは、次のコードで正常に動作します。

    with open("/path/to/sql/script.sql") as f:
    query = f.read().upper()
    tokenStream = antlr3.StringStream(query)
    lexer = MyLexer(tokenStream)
    for token in lexer:
        # process the token

    pass

構文解析の方法がわかりません SQL スクリプトを構文解析するための文法があります。文法のレクサーは、次のコードで正常に動作します。ANLTR の Web サイトには、Python ランタイムに関するドキュメントはあまりありません。

4

1 に答える 1

1

通常、上記の前後にやりたいことは、レクサーの出力から TokenStream を作成し、これらのトークンをパーサーにフィードすることです。ところで、レクサーへの入力として指定する StringStream は、名前を付けたにもかかわらず、実際にはトークン ストリームではありません。

多分次のようなものを試してください:

...
lexer = MyLexer(tokenStream)
// Get a token stream
tokens = CommonTokenSream(lexer)
// Feed it to the parser   (assumes you named the Grammar/Parser  "MyParser")
parser = MyParser(tokens)

// Invoke the topmost rule (or some other rule) of the grammar, to start
// the parsing process
parser.SomeRule()
于 2013-05-10T16:24:11.877 に答える