Source code: openjava/ptree/ArrayAccess.java
1 /*
2 * ArrayAccess.java 1.0
3 *
4 * Jun 20, 1997 by mich
5 * Sep 29, 1997 by bv
6 * Oct 10, 1997 by mich
7 *
8 * @see openjava.ptree.ParseTree
9 * @version 1.0 last updated: Oct 10, 1997
10 * @author Michiaki Tatsubori
11 */
12 package openjava.ptree;
13
14 import openjava.mop.Environment;
15 import openjava.mop.OJClass;
16 import openjava.ptree.util.ParseTreeVisitor;
17
18 /**
19 * The <code>ArrayAccess</code> represents
20 * an array access.
21 * <p>
22 * An array access is like :
23 * <br><blockquote><pre>
24 * a.m[i + 1]
25 * </pre></blockquote><br>
26 * In this array access expression,
27 * you can get <code>a.m</code> by <code>getReferenceExpr()</code>
28 * and can get <code>i + 1</code> by <code>getIndexExpr()</code> .
29 *
30 * @see openjava.ptree.Expression
31 */
32 public class ArrayAccess extends NonLeaf implements Expression {
33 public ArrayAccess(Expression expr, Expression index_expr) {
34 super();
35 set(expr, index_expr);
36 }
37
38 ArrayAccess() {
39 super();
40 }
41
42 /**
43 * Gets the expression of array.
44 *
45 * @return the experssion accessed as array.
46 */
47 public Expression getReferenceExpr() {
48 return (Expression) elementAt(0);
49 }
50
51 /**
52 * Sets the expression accessed as array.
53 *
54 * @param expr the experssion of array.
55 */
56 public void setReferenceExpr(Expression expr) {
57 setElementAt(expr, 0);
58 }
59
60 /**
61 * Gets the dimexpr list.
62 *
63 * @return the dimexpr list.
64 */
65 public Expression getIndexExpr() {
66 return (Expression) elementAt(1);
67 }
68
69 /**
70 * Sets the dimexpr list.
71 *
72 * @param dimexprs the dimexpr list.
73 */
74 public void setIndexExpr(Expression dimexprs) {
75 setElementAt(dimexprs, 1);
76 }
77
78 public void accept(ParseTreeVisitor v) throws ParseTreeException {
79 v.visit(this);
80 }
81
82 public OJClass getType(Environment env) throws Exception {
83 OJClass reftype = getReferenceExpr().getType(env);
84 return reftype.getComponentType();
85 }
86
87 }