要使xtext语言成为缩进识别,使用合成标记as described here。但是,在缩进的位置,除非输入第一个字母,否则内容辅助不会提出任何建议。
例如,请考虑以下语法:
Model:
lines += Line+;
Line:
'model' name=ID
BEGIN
type=(Type1 | Type2 | Type3)
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。
为什么内容辅助仅适用于部分输入?
答案 0 :(得分:0)
您的语法规则规定,规则BEGIN
中的END
和Line
令牌之间必须包含类型信息。如果省略那里的类型,我会假设解析器显示奇怪的错误恢复行为。如果您将类型标记为可选类型,则可能会有所帮助。