我目前正在參加「編譯器構造」課程,我正在開發Antlr 4中的簡化Java語法。涉及Java語法的部分工作得很好,除了它與原創的Java。用於Antlr4的縮進代替括號
我被告知我不應該使用括號,而是使用縮進。我已經嘗試了一些來自互聯網的例子,只有Antlr 3的例子在Antlr 4中不起作用。
任何人都可以幫我解決這個縮進問題,或者提供給我Antlr 4的Python語法嗎?
我目前正在參加「編譯器構造」課程,我正在開發Antlr 4中的簡化Java語法。涉及Java語法的部分工作得很好,除了它與原創的Java。用於Antlr4的縮進代替括號
我被告知我不應該使用括號,而是使用縮進。我已經嘗試了一些來自互聯網的例子,只有Antlr 3的例子在Antlr 4中不起作用。
任何人都可以幫我解決這個縮進問題,或者提供給我Antlr 4的Python語法嗎?
官方GitHub ANTLR4 grammar repository?你可以找到許多共同的語言語法。甚至有一個python3 directory包含Python3.g4
。
這應該會幫助你。
我寫了一個小型庫,可以幫助完全確定這個用例:antlr-denter。
簡而言之,你可以在你的語法中定義INDENT和DEDENT標記,做一些樣板文件來將antlr-denter掛接到antlr生成的詞法分析器中,然後離開你。例如,看起來像這樣的代碼:
hello:
world
<eof>
可能生成令牌流WORD COLON INDENT WORD DEDENT
。