파이썬 ast (추상 구문 트리)로 놀고 있습니다.Python ast 모듈을 사용하여 구문 트리에 노드 방문
나는 다음과 같이 썼고 AST의 모든 노드를 방문했다.
import ast
class Py2Neko(ast.NodeVisitor):
def generic_visit(self, node):
print type(node).__name__
ast.NodeVisitor.generic_visit(self, node)
def visit_Name(self, node):
print 'Name :', node.id
def visit_Num(self, node):
print 'Num :', node.__dict__['n']
def visit_Str(self, node):
print "Str :", node.s
if __name__ == '__main__':
node = ast.parse("a = 1 + 2")
print ast.dump(node)
v = Py2Neko()
v.visit(node)
그런 다음 Py2Neko 클래스에 몇 가지 방법
def visit_Print(self, node):
print "Print :"
def visit_Assign(self, node):
print "Assign :"
def visit_Expr(self, node):
print "Expr :"
그러나이 "인쇄"문 또는 assignement 또는 식을 발견하면 그때는 멈출 추가하지 않을 것 같다을 추가했다.
그것은 출력 :
이Module(body=[Assign(targets=[Name(id='a', ctx=Store())], value=BinOp(left=Num(n=1), op=Add(), right=Num(n=2)))])
Module
Assign :
누군가가 내가 뭘 잘못했는지 말해 줄 수.
나는 비 터미널 노드의 파이썬 2.6.6
좋아요, 당신이 설명했던 것을 가지고 있습니다, 지금은 분명합니다, 정말 고마워요! – narke