2
对于语法来说,如何保存生产出现的顺序。在ANTLR AST中保留生产订单
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)
;
但这没有奏效。
没有注意到你还张贴解答...我会删除我的自你的是正确的,并张贴在我的编辑:) –
@BartKiers这是非常慷慨的,谢谢。我浪费了至少30分钟试图让ANTLRWorks工作,然后放弃并编写了我自己的测试应用程序,因此我的漂亮的ASCII输出。 :P – user1201210
没问题。让我在关于如何使用ANTLRWorks进行测试的答案中添加一些额外的信息。 –