Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python目标在ANTLR中构建解析树_Python_Python 2.7_Antlr_Antlr3 - Fatal编程技术网

使用python目标在ANTLR中构建解析树

使用python目标在ANTLR中构建解析树,python,python-2.7,antlr,antlr3,Python,Python 2.7,Antlr,Antlr3,我有解析SQL脚本的语法。语法的lexer可以很好地处理以下代码: 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脚本的语法。语法的lexer可以很好地处理以下代码:

    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脚本,因为我有解析SQL脚本的语法。语法的lexer可以很好地处理以下代码。ANLTR的网站上没有太多关于Python运行时的文档。

通常,在完成上述操作后,您要做的是从Lexer的输出创建一个令牌流,并将这些令牌提供给解析器。顺便说一句,您提供给lexer作为输入的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()