
I'm having problems getting my grammar to work with unary operations. For instance, if I enter "5/2" I get (5/2), not (5)/2 which I would like to get. In this particular case the difference does not matter, however, I still think fixing this
is important for the grammar.
However, it's also important that 15/2 get's parsed as 1(5/2) and not (15)/2.
Currently I have the following operator's registered:
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, "=", "+=", "=", "*=", "/=", "%=", "&=", "=", "^=", "<<=", ">>=");
The not operator already works as I want it to, however, the "+" and "" kind of needs to be where they are in order to make sure that the "*", "/" and "%" is interpreted correctly. How should I solve this?
Btw, if you need more of the grammar just let me know, I just figured I didn't need to drop more code here than necessarily.



I believe i've made a special feature for this case, "ImplyPrecedence" hint that you can put on Unary operator (actually your put it into Unary expression's Rule). Play with it.



I've tried the following:
UnaryExpr.Rule = LUnOp + Expr;
UnaryExpr.AddHintToAll(ImplyPrecedenceHere(12, Associativity.Right));
with different values in the ImplyPrecedenceHere (both negative and positive, and using different Associativity), however I cannot seem to get it working nomatter what I pass it. Am I using it wrong?



I figured it out:
UnaryExpr.Rule = ImplyPrecedenceHere(30) + LUnOp + Expr;

