我基本上有下面的說法,並且希望它能夠處理同樣的東西,不管它以什麼順序出現。例如,因爲當前的代碼,它會接受「ABS(5)+ 3」,但不接受「3 + ABS(5)」。有誰知道我可以如何讓它以任何順序工作?JavaCC - 如何在本聲明中下訂單無關緊要?
我認爲把所有東西都放到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; }))*