You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Javassist, a Java-bytecode translator toolkit.
  3. * Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
  4. *
  5. * The contents of this file are subject to the Mozilla Public License Version
  6. * 1.1 (the "License"); you may not use this file except in compliance with
  7. * the License. Alternatively, the contents of this file may be used under
  8. * the terms of the GNU Lesser General Public License Version 2.1 or later.
  9. *
  10. * Software distributed under the License is distributed on an "AS IS" basis,
  11. * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12. * for the specific language governing rights and limitations under the
  13. * License.
  14. */
  15. package javassist.compiler.ast;
  16. import javassist.compiler.TokenId;
  17. import javassist.compiler.CompileError;
  18. /**
  19. * Expression.
  20. */
  21. public class Expr extends ASTList implements TokenId {
  22. /* operator must be either of:
  23. * (unary) +, (unary) -, ++, --, !, ~,
  24. * ARRAY, . (dot), MEMBER (static member access).
  25. * Otherwise, the object should be an instance of a subclass.
  26. */
  27. protected int operatorId;
  28. Expr(int op, ASTree _head, ASTList _tail) {
  29. super(_head, _tail);
  30. operatorId = op;
  31. }
  32. Expr(int op, ASTree _head) {
  33. super(_head);
  34. operatorId = op;
  35. }
  36. public static Expr make(int op, ASTree oprand1, ASTree oprand2) {
  37. return new Expr(op, oprand1, new ASTList(oprand2));
  38. }
  39. public static Expr make(int op, ASTree oprand1) {
  40. return new Expr(op, oprand1);
  41. }
  42. public int getOperator() { return operatorId; }
  43. public void setOperator(int op) { operatorId = op; }
  44. public ASTree oprand1() { return getLeft(); }
  45. public void setOprand1(ASTree expr) {
  46. setLeft(expr);
  47. }
  48. public ASTree oprand2() { return getRight().getLeft(); }
  49. public void setOprand2(ASTree expr) {
  50. getRight().setLeft(expr);
  51. }
  52. public void accept(Visitor v) throws CompileError { v.atExpr(this); }
  53. public String getName() {
  54. int id = operatorId;
  55. if (id < 128)
  56. return String.valueOf((char)id);
  57. else if (NEQ <= id && id <= ARSHIFT_E)
  58. return opNames[id - NEQ];
  59. else if (id == INSTANCEOF)
  60. return "instanceof";
  61. else
  62. return String.valueOf(id);
  63. }
  64. protected String getTag() {
  65. return "op:" + getName();
  66. }
  67. }