Я писал L интерпретатор LOLCODE и столкнулся с проблемой. В LOLCODE вызовы функции выглядит следующим образом:Bison fix глубина анализа
<func_name> <arg1> <arg2> ....
myfunc 1 2 3
Будем считать, что MyFunc взять три арг. я не знаю, как поддержать такую конструкцию:
VISIBLE myfunc 1 2 3 4
Я хочу зубр, чтобы разобрать его так:
myfunc 1 2 3 -> function
4 -> expr
Я объявил вызов функции как:
ID expr_list { $$ = new ExprFunctionCall($1, $2); }
где expr_list является:
expr_list
: expr_list expr { $$->putExpr($2); }
| /* epsilon */ { $$ = new ExprList(); }
;
Как я могу сказать бизону, где остановиться, если я знаю объявленную функциональность?