1
간단한 antlr3 문법 MicroXpath을 얻고 Python 용 lexer 및 parser를 빌드합니다.Python에서 ANTLR로 구문 분석 할 때 목록 대신 AST- 트리를 가져 오는 방법은 무엇입니까?
import antlr3
from XPathLexer import XPathLexer
from XPathParser import XPathParser
def print_level_order(tree, indent):
print('{0}{1}'.format(' '*indent, tree.text, tree.getType()))
for child in tree.getChildren():
print_level_order(child, indent+1)
input = 'descendant::name[class/name[test="x"]="File"]'
char_stream = antlr3.ANTLRStringStream(input)
lexer = XPathLexer(char_stream)
tokens = antlr3.CommonTokenStream(lexer)
parser = XPathParser(tokens)
tree = parser.xPath().tree
print_level_order(tree, 0)
결과 :
None
descendant
:
name
[
class
/
name
[
test
=
"x"
]
=
"File"
]
트리
은 그 때 나는 간단한 테스트 코드를 작성? 선형 목록입니다! 내가 도대체 뭘 잘못하고있는 겁니까? 또는 ANTLR을 사용하여 트리를 만들 수 없습니까?
감사합니다 많이! 그게 내가 찾고 있던거야! – Cosmologist
당신은 @ Cosmologist를 환영합니다. –