1

次のように 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 を使用しています。複数行のコメント端末をオーバーライドした経験のある人はいますか? 見逃したものはありますか?

4

1 に答える 1

0

提供された文法の断片からはわかりにくいですが、/*文法のどこかにまだキーワードがあるようです。

于 2014-10-02T08:02:01.623 に答える