2011-11-15 73 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有一个可怕的语法! –