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