给定以下语法:
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
实例化 a。
是什么让 Xtext 决定支持Range
?
编辑:具体来说,我想知道为什么Xtext 语法本身并不模棱两可,因为范围'a'..'z'
可以被解析为 a Group
ofKeyword, Wildcard, Wildcard, Keyword
或 a CharacterRange
of Keyword, Keyword
。