--- /dev/null
+package IR.Flat;
+import IR.FieldDescriptor;
+
+public class FlatSetElementNode extends FlatNode {
+ TempDescriptor src;
+ TempDescriptor dst;
+ TempDescriptor index;
+
+ public FlatSetElementNode(TempDescriptor dst, TempDescriptor index, TempDescriptor src) {
+ this.index=index;
+ this.src=src;
+ this.dst=dst;
+ }
+
+ public TempDescriptor getSrc() {
+ return src;
+ }
+
+ public TempDescriptor getIndex() {
+ return index;
+ }
+
+ public TempDescriptor getDst() {
+ return dst;
+ }
+
+ public String toString() {
+ return dst.toString()+"["+index.toString()+"]="+src.toString();
+ }
+
+ public int kind() {
+ return FKind.FlatSetElementNode;
+ }
+
+ public TempDescriptor [] readsTemps() {
+ return new TempDescriptor [] {src,dst,index};
+ }
+}
--- /dev/null
+package IR.Tree;
+import IR.FieldDescriptor;
+import IR.TypeDescriptor;
+
+public class ArrayAccessNode extends ExpressionNode {
+ ExpressionNode left;
+ ExpressionNode index;
+
+ public ArrayAccessNode(ExpressionNode l, ExpressionNode index) {
+ this.index=index;
+ left=l;
+ }
+
+ public ExpressionNode getIndex() {
+ return index;
+ }
+
+ public ExpressionNode getExpression() {
+ return left;
+ }
+
+ public String printNode(int indent) {
+ return left.printNode(indent)+"["+index.printNode(0)+"]";
+ }
+
+ public int kind() {
+ return Kind.ArrayAccessNode;
+ }
+
+ public TypeDescriptor getType() {
+ return left.getType().dereference();
+ }
+}