2017-10-07 129 views
0

我使用ANTLR4和Java編寫代碼indentor。我已成功生成詞法分析器和分析器。我正在使用的方法是遍歷生成的分析樹。使用ANTLR的代碼indentor 4

ParseTreeWalker mywalker = new ParseTreeWalker(); 
    mywalker.walk(myListener, myTree);  

自動生成* BaseListener有類似下面的方法......

@Override public void enterEveryRule(ParserRuleContext ctx) { } 

我很新的ANTLR。但是,據我所知,我需要擴展* BaseListener並重寫相關的方法並編寫代碼來縮進,所以我的問題是我應該重寫縮進輸入代碼文件的方法是什麼?或者,如果我需要採取其他方法,請告訴我。

謝謝!

回答

1

無。你不需要解析器來完成這個任務,並且當你需要一個解析器時,你將自己限制爲有效的代碼(因此你不能用格式錯誤重新格式化代碼)。取而代之的是詞法分析器並遍歷所有的令牌。保持一個狀態來知道你在哪裏(一個塊,一個函數,不管)和縮進。