From b9cdb318709330dbca8eba39436236b5e32d0fbc Mon Sep 17 00:00:00 2001 From: bdemsky Date: Sat, 3 Nov 2007 07:16:28 +0000 Subject: [PATCH] support a bit more java --- Robust/src/IR/Tree/BlockNode.java | 4 +++ Robust/src/IR/Tree/BuildIR.java | 17 ++++++++++++- Robust/src/IR/Tree/SemanticCheck.java | 9 ++++++- Robust/src/IR/TypeUtil.java | 3 +++ Robust/src/Parse/java14.cup | 36 +++++++++++++++++++++------ 5 files changed, 60 insertions(+), 9 deletions(-) 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