The problem is that the class generated for this (FactorOp) infers that the type of FactorOp.left will be Unary whereas it may be Unary or another FactorOp if these are chained.
How can I tell Xtext to declare the type of FactorOp.left as Factor or some other common base class of Unary and Factor?
The resulting class "BinaryOp" has both left and right with type "LogicalOr" which means it cannot be recursive and have an ImpliesCondition on the left.
For the binary operators I think I can workaround it by using rules like: