簡體   English   中英

建立抽象語法樹

[英]Building Abstract Syntax Tree

我有解析樹,現在我已經按順序遍歷了解析樹,並且也生成了Symbol表。 但是,我如何為此構建AST?

這是我收集的(一些不可靠的資源):

  • 在您的分析樹中,您的順序是:I拿最左邊的孩子,然后是Parent,然后是其他孩子的列表。
  • 如果遇到類似SEMICOL,Parenthesis之類的內容,請不要將其添加到AST,如果一個節點上只有一個子代,請刪除該節點,而改用子代。

這就是我需要做的嗎?

根據評論更新

在您的示例中,解析樹可能包含這樣的語句節點

(int)->(ageArray)->([)->(30)->(])->(;)

教授期望類似

(intArray)->(ageArray)->(30)

我猜。


您正在使解決方案變得簡單。 這不僅僅是遍歷樹並扔掉一些東西的問題。 AST代表程序語言的構造。 為了構建AST,您首先必須設計AST的外觀。

例如,“ IF”節點可能設計為具有布爾方程元素(它本身也可能是樹),真語句樹和假語句樹。

您必須根據要編譯的語言來設計所有元素的外觀。 一旦有了該設計,然后通常在分析樹上使用詞法分析器來生成AST。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM