我有像这样的ecore元模型
Pattern
direction:Direction
patternDetail:Details
Direction
BOTH=0
LEFT=1
RIGHT=2
这是一种简化,但它是使用模式的图形查询语言的表示。作为方向和一些细节的模式(名称,等等)
在我的语法中,我想解析一些输入,其中方向信息位于2个位置,例如
<-[patterndetails]-> (direction = BOTH)
-[patterndetails]-> (direction = RIGHT)
<-[patterndetails]- (direction = LEFT)
所以我创建了这条规则
Pattern returns Pattern:
'<-'patternDetails=PatternDetails'->'
|'<-'patternDetails=PatternDetails'-'
|'-'patternDetails=PatternDetails'->'
;
但我无法弄清楚如何设置相关的方向。
我尝试在第一行的末尾添加direction=Direction.BOTH
,但这是不可能的。
这看起来很奇怪,因为它可能会影响EString属性的值,例如,但不能影响枚举。
我是否在枚举访问中遗漏了某些内容,或者我做错了什么?
答案 0 :(得分:2)
您可以为同一个枚举
设置多个规则Pattern returns Pattern:
'<-' patternDetails=PatternDetails direction=Both
| '<-' patternDetails=PatternDetails direction=Left
| '-' patternDetails=PatternDetails direction=Right;
enum Direction:
BOTH |
LEFT |
RIGHT;
enum Both returns Direction:
BOTH='->';
enum Right returns Direction:
RIGHT='->';
enum Left returns Direction:
LEFT='-';