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.

Expr.java 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Javassist, a Java-bytecode translator toolkit.
  3. * Copyright (C) 1999-2003 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. * CALL, ARRAY, . (dot), MEMBER (static member access).
  25. * Otherwise, the object should be an instance of a subclass.
  26. */
  27. protected int operatorId;
  28. public Expr(int op, ASTree _head, ASTList _tail) {
  29. super(_head, _tail);
  30. operatorId = op;
  31. }
  32. public 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 int getOperator() { return operatorId; }
  40. public ASTree oprand1() { return getLeft(); }
  41. public ASTree oprand2() { return getRight().getLeft(); }
  42. public void accept(Visitor v) throws CompileError { v.atExpr(this); }
  43. public String getName() {
  44. int id = operatorId;
  45. if (id < 128)
  46. return String.valueOf((char)id);
  47. else if (NEQ <= id && id <= ARSHIFT_E)
  48. return opNames[id - NEQ];
  49. else if (id == INSTANCEOF)
  50. return "instanceof";
  51. else
  52. return String.valueOf(id);
  53. }
  54. protected String getTag() {
  55. return "op:" + getName();
  56. }
  57. }