AssignmentExpression.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. namespace Jint.Parser.Ast
  3. {
  4. public enum AssignmentOperator
  5. {
  6. Assign,
  7. PlusAssign,
  8. MinusAssign,
  9. TimesAssign,
  10. DivideAssign,
  11. ModuloAssign,
  12. BitwiseAndAssign,
  13. BitwiseOrAssign,
  14. BitwiseXOrAssign,
  15. LeftShiftAssign,
  16. RightShiftAssign,
  17. UnsignedRightShiftAssign,
  18. }
  19. public class AssignmentExpression : Expression
  20. {
  21. public AssignmentOperator Operator;
  22. public Expression Left;
  23. public Expression Right;
  24. public static AssignmentOperator ParseAssignmentOperator(string op)
  25. {
  26. switch (op)
  27. {
  28. case "=":
  29. return AssignmentOperator.Assign;
  30. case "+=":
  31. return AssignmentOperator.PlusAssign;
  32. case "-=":
  33. return AssignmentOperator.MinusAssign;
  34. case "*=":
  35. return AssignmentOperator.TimesAssign;
  36. case "/=":
  37. return AssignmentOperator.DivideAssign;
  38. case "%=":
  39. return AssignmentOperator.ModuloAssign;
  40. case "&=":
  41. return AssignmentOperator.BitwiseAndAssign;
  42. case "|=":
  43. return AssignmentOperator.BitwiseOrAssign;
  44. case "^=":
  45. return AssignmentOperator.BitwiseXOrAssign;
  46. case "<<=":
  47. return AssignmentOperator.LeftShiftAssign;
  48. case ">>=":
  49. return AssignmentOperator.RightShiftAssign;
  50. case ">>>=":
  51. return AssignmentOperator.UnsignedRightShiftAssign;
  52. default:
  53. throw new ArgumentOutOfRangeException("Invalid assignment operator: " + op);
  54. }
  55. }
  56. }
  57. }