2011-11-15 76 views
0

我正在尋找能夠以可讀格式打印樹的ANTLR語法。當我嘗試打印Java.g(http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g)時,結果很不方便。但我發現一個語法(包括Java項目),它打印AST好。這個語法是Marton Papp的Pascal語法(http://www.antlr.org/grammar/1279217060704/pascal3.zip)。ANTLR打印樹

喜歡的東西:

VARDECL text="Var" 
     VARLIST text="" 
     VAR text="a" 
     VAR text="b" 
     VARTYPE text="Integer" 

它是帕斯卡(pascal3.zip)。

你曾經看到過這樣的東西:C,Java,C#,VB。也許,你看到它用於其他一些語言?

  • 所需的目標語言(Parser和Lexer)只有Java。
+0

@BartKiers,你是對的。這絕對是我對Java語法的意思。所以我的問題是:我發現fortran解析器,它似乎符合條件:http://sourceforge.net/projects/fortran-parser/(它是用Java編寫的)。有人可以爲所提到的語言提供語法建議,它構建了真正有用的AST(其中包含程序結構)? –

回答

1

你可以很容易地改變Java語法(假設你知道一點ANTLR)。編寫詞法和語法分析器語法是最困難的部分,在這種情況下,已經爲您完成了。

如果你想知道如何讓一個解析器語法輸出AST,而不是一個簡單的解析樹,看這之前常見&答:How to output the AST built using ANTLR?

+0

你的教程在「如何輸出使用antlr構建的AST?」是很棒的。我想我可以對Java.g.實施這種修改。但是,也許在這種情況下,我做了雙重工作。如果我只需要一個語法,也許可以完成,但對於:C,Java,C#,VB。我想知道,如果沒有語法,可以爲這些語言打印AST。問題是:也許有人在萬維網上看到它? –

+0

@МихаилФоканов,也許有一些AST產生C和C#語法,我不知道。但是,我很確定VB沒有ANTLR語法,如果有的話,我懷疑它解析VB源文件是否有體面的工作。 VB有一個可怕的語法! –