次の文法のindent_loop[3]を3つのインデントのグループに置き換えることはできますか?ここで、INDENTはインデントの字句規則です。
数に基づいてインデントの数を書きたいだけです。
match_node
: match_node_name (tree_operator) (NEW_LINE (indent_loop[3]) ( moduleCall | literals ))*
{ match_node_list.push($match_node_name.text); }
| SINGLE_QUOTE POINTE SINGLE_QUOTE
;
match_node_name
: IDENT_SMALL_LETTERS
;
indent_loop[int scope]
: {scope == 3}? INDENT INDENT INDENT
| {scope == 4}? INDENT INDENT INDENT INDENT
;
INDENT : '\t';
これを行ったとき、呼び出しルールに戻ることができず、このインデントのグループを返すことができませんでしたか?つまり、(moduleCall |リテラル))*は呼び出されませんでした。
私はどこが間違っていますか?まだ始まったばかりです。
または、これを行う他の方法はありますか?