Xtext:缩进感知语言的内容辅助

时间:2017-04-18 09:44:24

标签: xtext

要使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。

为什么内容辅助仅适用于部分输入?

1 个答案:

答案 0 :(得分:0)

您的语法规则规定,规则BEGIN中的ENDLine令牌之间必须包含类型信息。如果省略那里的类型,我会假设解析器显示奇怪的错误恢复行为。如果您将类型标记为可选类型,则可能会有所帮助。