对于像这样的语法,如何保留产生式出现的顺序。
class: 'class' ID
'{' (fields
| methods) * '}' -> ^(CLASS ID ^(FIELD fields*) ^(METHOD methods)
;
生产按我的预期工作,但如果有这样的课程
class abc {
field 1
field 2
method 1
method 2
field 3
method 3
field 4
}
所有字段都在单个列表中,方法在第二个列表中。保持秩序的正确方法是什么?我试着做..
class: 'class' ID
'{' (fields -> ^(FIELD fields)
| methods -> ^(METHOD methods)
)* '}' -> ^(CLASS ID $class)
;
我什至尝试在两者之间插入一个假头,但没有成功。
class: 'class' ID
'{' (fields
| methods) * '}' -> ^(CLASS ID ^(FIELD fields*) ^NODE ^(METHOD methods)
;
但这没有用。