Xtext:具有重要/语义空白的语言的语法

nic*_*ten 11 eclipse grammar parsing xtext coffeescript

如何使用Xtext解析具有语义空白的语言?我正在尝试为CoffeeScript编写语法,但我找不到任何好的文档.

Jam*_*han 17

这是XText中的空白敏感语言示例

  • 不幸的是,我无法在任何地方找到这个样本. (3认同)

Bar*_*ers 4

AFAIK,你不能。

在解析类似 Python 的语言时,您需要词法分析器来发出INDENTDEDENT标记。为此,您需要在词法分析器规则(Xtextterminal规则)内支持语义谓词,该规则首先检查输入中下一个字符的当前位置是否等于 0(行的开头)并且' ''\t'

但是浏览文档我没有看到 Xtext 目前支持这一点。从 Xtext 2.0 开始,在生产规则中添加了对语义谓词的支持请参阅:6.2.8. 句法谓词),但在终端规则中不添加支持。

使用 Xtext 执行此操作的唯一方法是让词法分析器生成终端空格和换行符,但这会使您的生产规则完全混乱。

如果你想使用 Java(和面向 Java 的解析器生成器)解析这样的语言,我推荐 ANTLR,在其中你可以很容易地发出这样的INDENTDEDENT令牌。但如果您热衷于 Eclipse 集成,那么抱歉,我不知道您如何能够使用 Xtext 来做到这一点。