考虑到以下语法:
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"
Program:
{Range} ID '.' '.' ID
| {Group} ID ID ID ID
;
terminal ID:
'a' | '.'
;以及以下投入:
a . . a我认为可以解析字符串的方式有两种:作为Range (第一个选项)或作为Group (第二个选项)。当我在生成的IDE中尝试并检查Ecore模型时,将实例化一个Range。
是什么使Xtext决定支持Range?
编辑:,我想知道为什么Xtext语法本身并不含糊,因为range 'a'..'z'可以被解析为Group of Keyword, Wildcard, Wildcard, Keyword,也可以被解析为CharacterRange of Keyword, Keyword。
发布于 2015-08-29 20:07:10
关键词成为词汇规则的一口井。因此,您有两个Lexer规则
terminal FULL_STOP_KEYWORD: '.' ;和
terminal ID: 'a' | '.';莱克星不是有状态的。只有一条规则能赢。这样“.”将始终以关键字的形式出现,而不作为ID
https://stackoverflow.com/questions/32273005
复制相似问题