2

Xtext 文法にファイルの終わりを有効なステートメントとして認識させようとしていますが、これまでに試したことはすべてうまくいきません。

EOF を直接使用しようとすると、エディターに「入力 'EOF' で実行可能な代替手段がありません」というメッセージが表示されます。

Object :
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') ( ' ' | ';' | EOF )
;

そこで、EOF にリンクする端末を導入しようとしました。

terminal ETX: EOF;
...
Object :
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') ( ' ' | ';' | ETX )
;

xtext はそのようにコンパイルできますが、
「言語エディター ウィンドウ」(xtext を eclipse アプリケーションとして実行するときに開くウィンドウ)で上記と同じエラーが表示されます
。最後の要素 (文字):

symbol number char(!)

許可されている 3 つの要素をすべて端末に配置すると、同じことが起こります。

terminal END: ( ' ' | ';' | EOF);
...
Object :
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') END
;


文法は、定義された形式の文字列を解析するために使用される一種の正規表現言語を記述するために使用されます。例:(
これを明確にするために、スペースをアンダースコアに置き換えます)

char_symbol_number_
char_symbol_number;

コード訂正で受け付けます(エラーは表示されません)。

一方

char_symbol_number

2番目のEclipseエディターウィンドウに上記のエラーが表示されます。
(私の定義した言語のコード補完などを備えたもの。)

これを指摘するために、私が達成しようとしているのは
、スペースやセミコロンを追加せずに最後のステートメントをそのままにしておくことができるように、純粋な装飾的な調整です.


問題は、Xtext に EOF (nothing) を有効な終了ステートメントとして認識させるにはどうすればよいかということです。

4

1 に答える 1

0

文法のスニペットから、最終的な構文がどのように見えるかを推測することしかできませんが、そうではありません

Object: typ=('char'|'any') ';'? ;

あなたのために働きますか?

于 2012-06-13T14:55:01.477 に答える