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進行測試的答案中添加一些額外的信息。 –