From: bdemsky Date: Sat, 3 Nov 2007 07:16:28 +0000 (+0000) Subject: support a bit more java X-Git-Tag: preEdgeChange~401 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b9cdb318709330dbca8eba39436236b5e32d0fbc;p=IRC.git support a bit more java --- diff --git a/Robust/src/IR/Tree/BlockNode.java b/Robust/src/IR/Tree/BlockNode.java index 62b3b67d..47ebb1f5 100644 --- a/Robust/src/IR/Tree/BlockNode.java +++ b/Robust/src/IR/Tree/BlockNode.java @@ -24,6 +24,10 @@ public class BlockNode extends TreeNode { blockstatements.add(bsn); } + public void addFirstBlockStatement(BlockStatementNode bsn) { + blockstatements.insertElementAt(bsn,0); + } + public void setStyle(int style) { printStyle=style; } diff --git a/Robust/src/IR/Tree/BuildIR.java b/Robust/src/IR/Tree/BuildIR.java index 08c113d2..f307880d 100644 --- a/Robust/src/IR/Tree/BuildIR.java +++ b/Robust/src/IR/Tree/BuildIR.java @@ -540,7 +540,22 @@ public class BuildIR { ParseNode bodyn0=pn.getChild("body"); ParseNode bodyn=bodyn0.getChild("constructor_body"); cn.addMethod(md); - BlockNode bn=parseBlock(bodyn); + BlockNode bn=null; + if (bodyn!=null&&bodyn.getChild("block_statement_list")!=null) + bn=parseBlock(bodyn); + else + bn=new BlockNode(); + if (bodyn!=null&&bodyn.getChild("superinvoke")!=null) { + ParseNode sin=bodyn.getChild("superinvoke"); + NameDescriptor nd=new NameDescriptor("super"); + Vector args=parseArgumentList(sin); + MethodInvokeNode min=new MethodInvokeNode(nd); + for(int i=0;i