非常に単純なAntlr文法をXtextに変換したいので、syntactic predicates、fancy features of Antlr not provided by Xtextはありません。この文法に単純なAntlr文法をXtextに変換する
grammar simple; // Antlr3
foo: number+;
number: NUMBER;
NUMBER: '0'..'9'+;
とのXtextの対応
grammar Simple; // Xtext
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate Simple "http://www.example.org/Simple"
Foo: dummy=Number+;
Number: NUMBER_TOKEN;
terminal NUMBER_TOKEN: '0'..'9'+;
を考えるのXtextは舞台裏ANTLRを使用しますが、2つのフォーマットがまったく同じではありません。
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
を含めるterminal
キーワードと
- プレフィックス端子:を含む、私は変更する必要がかなりの数の迷惑な(そして部分的に理解しやすい)ものがありますが、例えばレベルルール
foo: dummy=number+
- ルール名と端末名は、大文字と小文字を区別しないで一意である必要があります。
- 必要に応じて、Java規則に従うようにルール名の最初の文字を大文字にします。
少なくとも単純なケースでは、この変換を自動的に行うツールはありますか?そうでない場合は、そのような修正のチェックリストが完全にありますか?
あなたが望むものはまったくわからないツールですが、文法をXMLに変換して(http://bottlecaps.de/convert/)、その結果をXQueryまたはXSLTで実行することができます希望するターゲット形式に変換します。コンバータはANTLR文法の基本構造のみを理解しますが、それはあなたが求めていたものです。 – Gunther
@BartKiersとGunther、私はあなたの助けを借りてお互いに感謝していますが、この会話は話題にならないようです。 Gunther、あなたはあなたのコンバーターのための問題トラッカーを持っているかもしれません(私はこれも多くの喜びをもって使います)。 –
@AdamSchmideg、そうです、それは全く話題ではありませんでしたが、それはトピックに関する_was_から始まりました。正直言って、あなたはちょっとしたことだと思います。しかし、十分に公正な、あなたの質問、私は私のノイズを削除します。私の謝罪。 @Gunther、このQ&Aで '〜' charの使い方を説明しようとしました:http://stackoverflow.com/questions/8284919/negating-inside-lexer-and-parser-rules –