2013-05-10 2 views
0

SQL 구문 분석을위한 문법이 있습니다. 문법을위한 렉서는 다음 코드를 사용하여 잘 작동 :Python 타겟으로 ANTLR에서 구문 분석 트리 만들기

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 웹 사이트에는 Python 런타임에 대한 많은 문서가 없습니다.

답변

1

일반적으로 위/과거를 수행하려는 것은 Lexer의 출력에서 ​​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() 
:

어쩌면 같은 것을 시도