BinaryExpression.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. namespace Jint.Parser.Ast
  3. {
  4. public enum BinaryOperator
  5. {
  6. Plus,
  7. Minus,
  8. Times,
  9. Divide,
  10. Modulo,
  11. Equal,
  12. NotEqual,
  13. Greater,
  14. GreaterOrEqual,
  15. Less,
  16. LessOrEqual,
  17. StrictlyEqual,
  18. StricltyNotEqual,
  19. BitwiseAnd,
  20. BitwiseOr,
  21. BitwiseXOr,
  22. LeftShift,
  23. RightShift,
  24. UnsignedRightShift,
  25. InstanceOf,
  26. In,
  27. }
  28. public class BinaryExpression : Expression
  29. {
  30. public BinaryOperator Operator;
  31. public Expression Left;
  32. public Expression Right;
  33. public static BinaryOperator ParseBinaryOperator(string op)
  34. {
  35. switch (op)
  36. {
  37. case "+":
  38. return BinaryOperator.Plus;
  39. case "-":
  40. return BinaryOperator.Minus;
  41. case "*":
  42. return BinaryOperator.Times;
  43. case "/":
  44. return BinaryOperator.Divide;
  45. case "%":
  46. return BinaryOperator.Modulo;
  47. case "==":
  48. return BinaryOperator.Equal;
  49. case "!=":
  50. return BinaryOperator.NotEqual;
  51. case ">":
  52. return BinaryOperator.Greater;
  53. case ">=":
  54. return BinaryOperator.GreaterOrEqual;
  55. case "<":
  56. return BinaryOperator.Less;
  57. case "<=":
  58. return BinaryOperator.LessOrEqual;
  59. case "===":
  60. return BinaryOperator.StrictlyEqual;
  61. case "!==":
  62. return BinaryOperator.StricltyNotEqual;
  63. case "&":
  64. return BinaryOperator.BitwiseAnd;
  65. case "|":
  66. return BinaryOperator.BitwiseOr;
  67. case "^":
  68. return BinaryOperator.BitwiseXOr;
  69. case "<<":
  70. return BinaryOperator.LeftShift;
  71. case ">>":
  72. return BinaryOperator.RightShift;
  73. case ">>>":
  74. return BinaryOperator.UnsignedRightShift;
  75. case "instanceof":
  76. return BinaryOperator.InstanceOf;
  77. case "in":
  78. return BinaryOperator.In;
  79. default:
  80. throw new ArgumentOutOfRangeException("Invalid binary operator: " + op);
  81. }
  82. }
  83. }
  84. }