提问人:Amine Ben 提问时间:10/11/2023 最后编辑:Amine Ben 更新时间:10/12/2023 访问量:37
Xtext 生成的 internal.tokens 文件中不会捕获每条规则的隐藏终端
Per-rule hidden terminals are not captured in the internal.tokens file generated by Xtext
问:
我有以下简约的语法:
grammar org.example.minimalDSL hidden (WS, SL_COMMENT, ML_COMMENT)
...
Class:
(Documentation=documentation)?
'class' name=ValidId '{' (attributes+=Attribute ';') '}';
Attribute:
type=[Type | ID] (multiplicity=Multiplicity)? name=PropertyName;
Documentation hidden(WS, HIDDEN_ASTERISK):
'/**' {Documentation}((tags+=Tag)*) '*/';
Tag:
'@' tagName=ID (tagValue= STRING)?
Multiplicity hidden():
'[' (bounds+=UnlimitedNatural ('..' bounds+=UnlimitedNatural)?)? ']');
terminal HIDDEN_ASTERISK: ('*') !('*/');
UnlimitedNatural returns EInt hidden():
INT | '*';
我正在尝试将 Javadoc 样式添加到现有的 DSL 中。文档以“/**”开头,以“/”结尾。文档块应忽略空格和“”,当它不是开始和结束标记的一部分时。
HIDDEN_ASTERICKS 终端导致 Xtext 不会在 [DSL]Internal.tokens 文件中生成“*”。这会导致在尝试解析包含“*”边界的文本时产生错误的标记,例如 [*]。
虽然不在令牌文件中捕获隐藏的终端是完全有意义的,但我天真地期望在 [DSL]internal.tokens 中捕获每个规则的隐藏令牌。然后,只能在规则应用时忽略这些本地令牌。
我错过了什么?我正在使用 Xtext v2.28.0。这是在较新版本中解决的已知问题吗?
提前感谢您的回答或解释。 亲切问候
答: 暂无答案
评论