2011-11-15 9 views
0

私はANTLR文法を探しています。 Java.g(http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g)を印刷しようとすると、結果は不便でした。しかし、私はASTをうまく印刷する1つの文法(javaプロジェクトを含む)を見つける。この文法はMarton Papp(http://www.antlr.org/grammar/1279217060704/pascal3.zip)のPascal文法です。それはパスカル(pascal3.zip)のためであるANTLRプリントツリー

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

:よう

何か。

あなたはC、Java、C#、VBのようなものを見たことがありますか?たぶん、あなたは他の言語のためにそれを見ますか?

  • 必要なターゲット言語(ParserおよびLexerの)はJavaのみです。
+0

@BartKiers、あなたが正しいです。これは、Java文法について私が言っていることです。だから私の質問です:私は条件に合うように思えるfortranパーサーを見つける:http://sourceforge.net/projects/fortran-parser/(これはJavaで書かれています)。実際の有用なAST(プログラムの構造を含む)を構築する、言及された言語の文法をアドバイスすることはできますか? –

答えて

1

あなたは非常に簡単にJava文法を変更できます(少しANTLRが分かっていると仮定します)。レクサーとパーサーの文法の書き方は、この場合はすでにあなたのために行われている最も難しい部分です。

あなたはこの前のQ & Aを見て、パーサの文法出力を代わりに簡単な構文解析ツリーのASTを許可する方法を知りたい場合は、次のHow to output the AST built using ANTLR?

+0

「antlrを使用して構築されたASTを出力する方法」のチュートリアル素晴らしいです。私はJava.gのためのそのような変更を実装できると思う。しかし、多分、この場合、私は二重の仕事をします。たぶん1つの文法が必要なのかもしれませんが、C、Java、C#、VBのために、それはできます。文法がなければ、これらの言語のASTを印刷することができますか?問題は、誰かがワールドワイドウェブでそれを見るかもしれないということですか? –

+0

@МихаилФоканов、おそらくそこにASTを生成するCとC#の文法がありますが、わかりません。しかし、私はVB用のANTLR文法がないと確信しています。もしあれば、VBソースファイルを構文解析してまともな仕事をするのではないかと疑います。 VBにはひどい文法があります! –