0
xtext言語がインデントを認識するためには、合成トークンが使用されます。as described here。しかし、インデントされた場所では、最初の文字が入力されない限り、コンテンツアシストは何も提案しません。例えばXtext:インデント認識言語のコンテンツアシスト
、次の文法を検討:モデルと改行とタブを入力した後、コンテンツアシスト、今
Model:
\t lines += Line+;
\t
Line:
\t 'model' name=ID
\t BEGIN
\t \t type=(Type1 | Type2 | Type3)
\t END
;
Type1:
'type1:' attr=ID;
Type2:
'type2:' attr=ID;
Type3:
'type3:' attr=ID;
// The following synthetic tokens are used for the indentation-aware blocks
terminal BEGIN: 'synthetic:BEGIN'; // increase indentation
terminal END: 'synthetic:END'; // decrease indentation
を何も要求しません。しかし、tと入力してコンテンツアシスタンスを求めると、type1、type2、およびtype3が得られます。
コンテンツアシストは部分的な入力時にのみ機能するのはなぜですか?
この場合、空白に敏感な言語を実装しようとしています。コンテンツアシストを使用して、その場所で可能なさまざまなタイプのプロンプトを表示したいと考えています。今、「モデル」、新しい行、およびタブを入力した後にctrl +スペースを打つと、何も返されません。しかし、その後に文字 't'をタイプすると、パーサーはタイプを認識し、 'タイプ1、タイプ2、タイプ3'で私にプロンプトを出します。 合成トークンの動作を変更するにはどうすればよいですか? –
オプションとしてマークしても役立たない –