using System; namespace Jint.Parser.Ast { public enum BinaryOperator { Plus, Minus, Times, Divide, Modulo, Equal, NotEqual, Greater, GreaterOrEqual, Less, LessOrEqual, StrictlyEqual, StricltyNotEqual, BitwiseAnd, BitwiseOr, BitwiseXOr, LeftShift, RightShift, UnsignedRightShift, InstanceOf, In, } public class BinaryExpression : Expression { public BinaryOperator Operator; public Expression Left; public Expression Right; public static BinaryOperator ParseBinaryOperator(string op) { switch (op) { case "+": return BinaryOperator.Plus; case "-": return BinaryOperator.Minus; case "*": return BinaryOperator.Times; case "/": return BinaryOperator.Divide; case "%": return BinaryOperator.Modulo; case "==": return BinaryOperator.Equal; case "!=": return BinaryOperator.NotEqual; case ">": return BinaryOperator.Greater; case ">=": return BinaryOperator.GreaterOrEqual; case "<": return BinaryOperator.Less; case "<=": return BinaryOperator.LessOrEqual; case "===": return BinaryOperator.StrictlyEqual; case "!==": return BinaryOperator.StricltyNotEqual; case "&": return BinaryOperator.BitwiseAnd; case "|": return BinaryOperator.BitwiseOr; case "^": return BinaryOperator.BitwiseXOr; case "<<": return BinaryOperator.LeftShift; case ">>": return BinaryOperator.RightShift; case ">>>": return BinaryOperator.UnsignedRightShift; case "instanceof": return BinaryOperator.InstanceOf; case "in": return BinaryOperator.In; default: throw new ArgumentOutOfRangeException("Invalid binary operator: " + op); } } } }