文法を単項演算で動作させるのに問題があります。たとえば、「-5/2」と入力すると、取得したい (-5)/2 ではなく、-(5/2) が取得されます。この特定のケースでは違いは問題ではありませんが、これを修正することは文法にとって重要だと思います。
ただし、1-5/2 が (1-5)/2 ではなく 1-(5/2) として解析されることも重要です。
現在、以下のオペレーターを登録しています。
RegisterOperators(1, "||");
RegisterOperators(2, "&&");
RegisterOperators(3, "|");
RegisterOperators(4, "^");
RegisterOperators(5, "&");
RegisterOperators(6, "==", "!=");
RegisterOperators(7, "<", ">", "<=", ">=", "is");
RegisterOperators(8, "<<", ">>");
RegisterOperators(9, "+", "-");
RegisterOperators(10, "*", "/", "%");
RegisterOperators(11, "!");
RegisterOperators(-1, "?");
RegisterOperators(-2, "=", "+=", "-=", "*=", "/=", "%=", "&=", "|=", "^=", "<<=", ">>=");
not 演算子は既に希望どおりに機能していますが、「*」、「/」、および「%」が正しく解釈されるようにするには、「+」および「-」の種類が必要です。 . これをどのように解決すればよいですか?ところで、もっと文法が必要な場合はお知らせください。必要以上のコードをここにドロップする必要はないと思いました。