2017-11-26 35 views
0

Antlr을 사용하여 Datalog 파서를 만들었습니다. 진행 방법을 모르겠습니다.Antlr Parser Testing Python

Lexer.py 
Listener.py 
Lexer.tokens 
Parser.py 
Program.tokens 

내가 튜토리얼을 통해 갈 : 나는 AST ANTLR은 다음 파일을 생성 한

을 생성합니다. 나는 그것을 이해할 수 없었다. 어떻게하면 파이썬에서 입력을 테스트 할 수 있습니까?

a(X): b(X) 

쿼리 처리 엔진을 사용할 수 있도록 AST를 생성하고 싶습니다.

그래서 알아 냈습니다. AST를 생성하는 코드를 작성하고 있습니다.

import sys 
import antlr4 
from antlr4 import * 
from NLexer import * 
from NParser import * 
from NListener import * 

char_stream = InputStream('a(1)\n') 
lexer = NLexer(char_stream) 
stream = CommonTokenStream(lexer) 
parser = NParser(stream) 
tree = parser.XXX() . // This is where I am confused. How do I generate 
         tree. What function should be called here 
         instead of XXX? 

답변

1

호출해야하는 함수는 구문 분석하려는 대상에 따라 다릅니다. 파서에서 생성 된 함수 중 하나를 사용하여 언어의 하위 구문을 파싱 할 수 있지만 전체 언어의 경우 일반적으로 최상위 파서 규칙을 선택합니다 (문법을 작성한 경우 어떤 규칙이 최상위 규칙인지 알고 있어야합니다).

모든 구문 분석기 함수는 구문 분석 트리를 반환합니다. 기호 또는 입력 구조 등.

Btw. 추상 구문 트리가 아닌 구문 분석 트리를 생성하는 ANTLR4를 사용하고 있습니다.