次のように MIME メディア タイプを記述できる Xtext 文法が必要です。
mediaType application/atom+xml
specURL "http://www.rfc-editor.org/rfc/rfc4287.txt",
これは問題ではありませんが、次の点があります。
mediaType application/*
specURL "http://www.iana.org/assignments/media-types/application",
/*
通常、複数行のコメントを定義する文字を使用すると、先の問題を推測できます。そのためのターミナルは、Xtext が提供するデフォルトのターミナル、より具体的には ML_COMMENT ターミナルで定義されています。
terminal ML_COMMENT : '/*' -> '*/';
デフォルトのターミナルを自分の新しいターミナルにコピーしてカスタマイズしました。ML_COMMENT ターミナルは代わりに次のように定義されています。
terminal ML_COMMENT : '"""' -> '"""';
これにより、複数行のコメントを持つためのよりPython的な方法が生成されます。生成された DSL で問題なく動作します。しかし、上記のように、/*
のメディア タイプを定義しようとすると、文字は依然として問題を引き起こします。'}' を期待する不一致の入力 '/*' のapplication/*
エラー メッセージが表示されます(文字は、メディア タイプ リストの末尾を指定します)。}
さらに厄介なのは、(おそらく時代遅れの)コンボ文字を入力すると、Xtext エディターのコンテンツ アシストがまだ*/
複数行のコメント文字を自動入力することです。/*
複数行のコメント ターミナルを上書きしたので、なぜオートコンプリートがまだ古い ML_COMMENT 定義をいじくり回しているのか不思議に思っています。他の何かをオーバーライドする必要がありますか?
メディア タイプ文法の一部を次に示します。
MediaType returns restapi::MediaType:
{restapi::MediaType}
'mediaType' name=MediaTypeQualifier ('specURL' specURL=EString)?;
MediaTypeQualifier:
MediaTypeFragment ('/' MediaTypeFragment)?(';' MediaTypeFragment'='MediaTypeFragment)*;
MediaTypeFragment:
(ID ( ('-'|'+'|'.') ID )* ) | '*'
Eclipse 4.2.2 内で Xtext バージョン 2.3.1 を使用しています。複数行のコメント端末をオーバーライドした経験のある人はいますか? 見逃したものはありますか?