2 import java.util.Vector;
5 public class BlockNode extends TreeNode {
6 Vector blockstatements;
8 protected SymbolTable table;
10 public final static int NORMAL=0;
11 public final static int NOBRACES=1;
12 public final static int EXPRLIST=2;
15 blockstatements=new Vector();
16 table=new SymbolTable();
19 public SymbolTable getVarTable() {
23 public void addBlockStatement(BlockStatementNode bsn) {
24 blockstatements.add(bsn);
27 public void addFirstBlockStatement(BlockStatementNode bsn) {
28 blockstatements.insertElementAt(bsn,0);
31 public void addBlockStatementAt(BlockStatementNode bsn, int i) {
32 blockstatements.insertElementAt(bsn,i);
35 public void setStyle(int style) {
40 return blockstatements.size();
43 public BlockStatementNode get(int i) {
44 return (BlockStatementNode) blockstatements.get(i);
47 public String printNode(int indent) {
48 if (printStyle==NORMAL) {
50 for(int i=0; i<blockstatements.size(); i++) {
51 BlockStatementNode bsn=(BlockStatementNode)blockstatements.get(i);
52 st+=printSpace(indent+INDENT)+bsn.printNode(indent+INDENT);
53 if (!((bsn instanceof SubBlockNode)||
54 (bsn instanceof LoopNode)||
55 (bsn instanceof IfStatementNode)))
57 if (bsn instanceof IfStatementNode)
60 st+=printSpace(indent)+"}";
62 } else if (printStyle==NOBRACES) {
64 for(int i=0; i<blockstatements.size(); i++) {
65 BlockStatementNode bsn=(BlockStatementNode)blockstatements.get(i);
66 st+=printSpace(indent)+bsn.printNode(indent);
67 if (!((bsn instanceof SubBlockNode)||
68 (bsn instanceof LoopNode)||
69 (bsn instanceof IfStatementNode)))
73 } else if (printStyle==EXPRLIST) {
75 for(int i=0; i<blockstatements.size(); i++) {
76 BlockStatementNode bsn=(BlockStatementNode)blockstatements.get(i);
78 if ((i+1)!=blockstatements.size())
82 } else throw new Error();
86 return Kind.BlockNode;