У меня в основном есть следующий оператор, и я хочу, чтобы он обрабатывал содержимое внутри одного и того же, независимо от того, в каком порядке он идет. Так, например, в текущем коде он будет принимать «ABS (5) + 3», но не «3». + АБС (5) ". Кто-нибудь знает, как я могу заставить его работать в любом порядке?
Я думал, что поместить все как OR, а затем окружить это знаком *, будет работать, но это, похоже, не имело большого значения.
( ( s1=ABS() { s=s+s1; } )
| ( "+" { op="+"; s=s+op; }
| "-" { op="-"; s=s+op; }
| "*" { op="*"; s=s+op; }
| "/" { op="/"; s=s+op; } )
| ( s1=EXPR() { s=s+s1; } ) )*