2012-05-05 3 views
2

나는 스택 (stack<stack<char>>)의 스택을 구문 분석하는 구문 분석 트리를 가지고 있습니다. 문자를 파스 트리로 가져옵니다. 내 질문은 그것을 분석하기 위해이 구문 분석 트리를 AST로 변환하는 방법입니다.구문 분석 트리를 AST (추상 구문 트리)로 변환 C++

나는 AST를 평가하는 사람이있다. 평가를 위해 트리를 구문으로 변환하기 만하면된다.

도움을 주시면 감사하겠습니다.

Here is a picture of what I am trying to accomplish

+0

를 사용하여 내가 문자 – Dani

+0

의 스택의 스택에 나무를 볼 수 없습니다 + 6 - (4 * 6) + 5' 문자 스택 스택 [0] [+] [6] [+] [5]] 이것은 구문 분석 트리로 변환됩니다. – Dfranc3373

+0

이 스택은 평범한 이전 스택과 다릅니 까? 내부 스택에 두 개 이상의 항목이 있습니까? 스택은 어디에 있습니까? 입력 시퀀스를 그대로 반복하는 일련의 문자가 나타납니다. 여기에 변화 란 무엇입니까? –

답변

2

나는 내가 그들에 값을 추가 한 잎 노드를 저장하기 위해 스택을 사용하여 사전 주문 순회

preorder(node) 
    if node == null then return 
    print node.value 
    preorder(node.left) 
    preorder(node.right) 

를 사용하여 Tree Traversal Algorithm

사용하여 변환 할 수 있었고, 수 있었다 스택을 횡단하여 lea 노드로 바꾼다.

나는

Make_Plus이 점을 변환 할 수있는 도우미 함수를 사용하여 나에게 [+ 10 4]

의 스택을 줄 것이다 예약 주문을 사용하여 10 + 4

파스 트리 잎을위한 예 문자열이 원래 `5 인 경우 (Make_Int (10), Make_Int (4)) 재귀