文法のように、プロダクションが現れる順序を維持する方法。
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
}
すべてのフィールドは最終的に単一のリストになり、メソッドは 2 番目のリストになります。順序を維持する正しい方法は何ですか? やってみた..
class: 'class' ID
'{' (fields -> ^(FIELD fields)
| methods -> ^(METHOD methods)
)* '}' -> ^(CLASS ID $class)
;
間にダミーヘッドを挿入してみましたが、うまくいきませんでした。
class: 'class' ID
'{' (fields
| methods) * '}' -> ^(CLASS ID ^(FIELD fields*) ^NODE ^(METHOD methods)
;
しかし、これはうまくいきませんでした。