1
我已經使用ANTLR4編寫Fortran語法分析。現在我得到了解析樹(ANTLR4中沒有AST)。我的下一個工作是根據我的需要修改分析樹,比如插入新的數據聲明語句並替換當前的語句。我在ANTLR的java API文件中尋找addChild
,但是在RuleNode
中似乎沒有這樣的方法。所以我該怎麼做?如何修改ANTLR4中的分析樹?
我已經使用ANTLR4編寫Fortran語法分析。現在我得到了解析樹(ANTLR4中沒有AST)。我的下一個工作是根據我的需要修改分析樹,比如插入新的數據聲明語句並替換當前的語句。我在ANTLR的java API文件中尋找addChild
,但是在RuleNode
中似乎沒有這樣的方法。所以我該怎麼做?如何修改ANTLR4中的分析樹?
一種方法是將您的代碼嵌入到語法文件中。這使事情變得非常混亂。
另一種方法是在單獨的文件中編寫您的類,在@parser::members{...}
部分創建所需的對象或將其作爲您規則的一部分,然後使用它們從語法中獲取細節。這樣,你就可以從語法中獲得信息,並且可以用你的類爲你的數據建模。
祝你好運!
我剛剛發現我應該尋找'ParserRuleContext',它實現了接口'ParseTree'。其中'RuleNode'只是'ParseTree'的子接口。 –