1

我想建立自己的編譯器的小C語言: 我已經讓我的語法,使用ANTLR建立一個AST(抽象語法樹),並實現我的符號表(以下GRosemberg code編譯器:填充符號表的最佳方法是什麼?

我必須填寫我的符號表與我的符號,但是我真的不知道該怎麼..

  • 我必須到y AST運行,並根據所令牌,我覺得我把一個新的符號在我的符號表或創建一個新的範圍...?
  • 我是否必須在語法中使用語義功能,我聽說過樹Walker ......?

我對這一步有點失落,有沒有人有一個例子,或者可以告訴我該怎麼做?

回答

2

對於ANTLR 3 & 2您可以輕鬆地在解析器操作中執行此操作。當您跨越範圍邊界並在適當時添加條目時,您必須推送和彈出範圍。您可以在http://www.antlr3.org/grammar/cgram/grammars/StdCParser.g的真正C語言分析器中看到如何執行此操作。如果您願意,也可以在樹分析器中進行。

在ANTLR 4中,您將改爲編寫一個執行push/pop操作並添加條目的偵聽器。如果語法支持的類型定義像C一樣,則需要在語法操作中處理它,因爲符號表會影響解析。微小的C應該不需要那樣做。

相關問題