【发布时间】:2012-08-27 21:57:49
【问题描述】:
这是一个示例语法:
语法 org.xtext.example.mydsl.MyDsl 与 org.eclipse.xtext.common.Terminals
生成 myDsl“http://www.xtext.org/example/mydsl/MyDsl”
开始:elem += 狗;
狗: '狗'INT';' ;
终端 CAT : ('A'..'Z')('A'..'Z')('A'..'Z')' '('0'..'9')+;
当 Xtext 看到 DOG 1234 行时,它无法解析并会给出类似的错误“mismatch input DOG 1234... Expecting DOG”。我认为当Xtext遇到关键字时,它应该比终端具有更高的优先级。但它似乎很困惑。我该如何解决这个问题?
注意 DOG 和 CAT 用在不同的地方(即终端 CAT 用于其他规则,但其定义与 DOG 规则冲突)
【问题讨论】:
-
你能稍微澄清一下你的语法吗?我个人对术语的使用有点困惑。 FOO 是您的生产规则,再次有“FOO”,然后有一个称为 BAR 的终端定义。 'FOO' 应该是 BAR 类型吗?
-
好吧,我修好了。希望它更容易。尽管如此,这在我的实际语法中是相同的语法规则,只是术语不同。规则 DOG 将识别输入字符串,如
DOG 134、DOG 1234,但终端 CAT 也会识别相同的内容。
标签: xtext