Xtext 生成的 internal.tokens 文件中不会捕获每条规则的隐藏终端

Per-rule hidden terminals are not captured in the internal.tokens file generated by Xtext

提问人:Amine Ben 提问时间:10/11/2023 最后编辑:Amine Ben 更新时间:10/12/2023 访问量:37

问:

我有以下简约的语法:

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。这是在较新版本中解决的已知问题吗?

提前感谢您的回答或解释。 亲切问候

XText 词法分析器

评论

0赞 Sebastian Zarnekow 10/15/2023
生成语言时,它是否打印任何错误或警告?
0赞 Amine Ben 10/26/2023
嗨,塞巴斯蒂安,既不会抛出错误,也不会抛出警告。

答: 暂无答案