A start for array initializers. THIS IS NOT A WORKING IMPLEMENTATION\! I checked...
[IRC.git] / Robust / src / IR / Tree / BuildIR.java
index 86a9c1dbdb85fd12aa3c1cdac9026de65cee317c..320f666379fdaf7013d7b78431c9f7c7af9cb809 100644 (file)
@@ -493,6 +493,12 @@ public class BuildIR {
       ExpressionNode exp=parseExpression(pn.getChild("exp").getFirstChild());
       TypeDescriptor t=parseTypeDescriptor(pn);
       return new InstanceOfNode(exp,t);
+    } else if (isNode(pn, "array_initializer")) {
+      System.out.println( "Array initializers not implemented yet." );
+      System.exit( -1 );
+      TypeDescriptor td=parseTypeDescriptor(pn);      
+      Vector initializers=parseVariableInitializerList(pn);
+      return new ArrayInitializerNode(td, initializers);
     } else {
       System.out.println("---------------------");
       System.out.println(pn.PPrint(3,true));
@@ -541,6 +547,18 @@ public class BuildIR {
     return new Vector[] {varlist, arglist};
   }
 
+  private Vector parseVariableInitializerList(ParseNode pn) {
+    Vector varInitList=new Vector();
+    ParseNode vin=pn.getChild("variable_init_list");
+    if (vin==null)       /* No argument list */
+      return varInitList;
+    ParseNodeVector vinv=vin.getChildren();
+    for(int i=0; i<vinv.size(); i++) {
+      varInitList.add(parseExpression(vinv.elementAt(i)));
+    }
+    return varInitList;
+  }
+
   private ExpressionNode parseAssignmentExpression(ParseNode pn) {
     AssignOperation ao=new AssignOperation(pn.getChild("op").getTerminal());
     ParseNodeVector pnv=pn.getChild("args").getChildren();