私は xtext を学ぼうとしていますが、ANY_OTHER が完全に混乱していて、それについていくつか質問があります。
私の .xtext ファイルには 1 つのプロダクションしかありません。
document: text = '<' ANY_OTHER* '>';
これを「Eclipse アプリケーション」として実行すると、次の入力が正しく機能します。
<>
< >
<.>
<....>
<.. ..>
しかし、以下は失敗しているようです:
<a>
エラー余分な入力 'a' が '>' を期待しています。
Q1) ANY_OTHER がリテラル '.' に一致する理由 キャラクター?
ANY_OTHER をオーバーライドしてみました
terminal ANY_OTHER: .;
これはCommon Terminals hereの元の定義と同じだと思います。
これで、動作が変わります。入力エラーなくなっている。しかし、私が試してみると
<aa>
、無関係な入力 'aa' が '>' を期待してエラーを返します。
Q2) ANY_OTHER をオーバーライドすると動作が変わるのはなぜですか?
Q3) なぜ「.」'a' とは異なる扱いですか? <..> は受け入れられますが、受け入れられません。