1
매우 단순한 재귀 문법에 대한 추상 구문 트리를 추출합니다 (예 : , C 함수 호출 문). 문법을 다음과 같이 정의했습니다 :pyparsing을 사용하여 간단한 AST를 작성하는 방법
name = Word(srange("[a-z]"), srange("[a-zA-Z0-9_]"))
func_args = Forward()
func_call = (name + "(" + func_args + ZeroOrMore(Word(",") + func_args) + ")").setParseAction(create_node)
func_args <<= (func_call | name)
res = func_call.parseString("func1(func2(v1,func3(v2,v3)))", True)
구문 분석은 괜찮지 만 AST를 생성하는 가장 좋은 방법은 없습니다. 내가 클래스 tree
이
func1
- func2
- v1
- func3
- v2
- v3
가정하자 :이 예를 들어 문자열을 원하는 것은
이 AST입니다. 콜백 create_node
이 첫 번째 func3(v2, v3)
에 호출 될 때 외부 문이 구문 분석 될 때까지 및 하위 노드 v2
및 v3
등을 생성해야합니다. 가장 좋은 방법은 무엇입니까? 고마워요