0
私は私が作成していますミニ言語のための文法を用意し、私は特にvar : functioncall '.' functioncall
と基本的にsomefunction().var
に対応functioncall : var '.' functioncall
でvar
とfunctioncall
Antlr4相互左再帰エラー
var
: NAME
| var '[' exp ']'
| var '.' var
| functioncall '.' var
;
functioncall
: NAME '(' (exp)? (',' exp)* ')'
| var '.' functioncall
| functioncall '.' functioncall
;
間の相互左再帰エラーを取得していますおよびinstanceofClass.function()
。
私はこれを達成する方法はありますか?
編集:文法もvarが(その前ではなく)instance.var
またはfunction().var
この文法は、1つを除いてほとんどの場合有効です。言語はまた、単純なfunctioncall、すなわち単純にfunctioncallを含む行を可能にすると考えられている。しかし、単一行の変数、すなわち単に 'instance.function()'だけを含む行は許可されていないと考えられますが、 'variable'は無効です。以前私は、行内に単一変数を許可しないことでこれを許可しました。これを達成する方法は? – Crimson7
@Nick_McCoyは 'value:var 'のような必要な構文を追加する' value:var'ルールを改善するだけです。値 '。 – Mephy
これはvar '=' expのようなものを許可しません。また、私の編集したコメント – Crimson7