public Object visit(SimpleNode node, Object data) { int id = node.getId(); Object retVal = null; switch (id) { case JJTPROGRAM: handleProgram((ASTProgram) node); break; case JJTDECLARATIONLIST: handleDeclarationList((ASTDeclarationList) node); break; case JJTDECLARATION: retVal = handleDeclaration((ASTDeclaration) node); break; case JJTVARDECL: handleVarDecl((ASTVarDecl) node); break; case JJTARRAYDECLARATION: retVal = handleArrayDeclaration((ASTArrayDeclaration) node); break; case JJTSTATEMENTLIST: handleStatementList((ASTStatementList) node); break; case JJTSTATEMENT: handleStatement((ASTStatement) node); break; case JJTCALL: retVal = handleCall((ASTCall) node); break; case JJTVAR: retVal = handleVar((ASTVar) node); break; case JJTASSIGNMENT: handleAssignment((ASTAssignment) node); break; case JJTEXPRESSION: retVal = handleExpression((ASTExpression) node); break; case JJTARGS: retVal = handleArgs((ASTArgs) node); break; case JJTOP: retVal = handleOp((ASTOp) node); break; case JJTNUM: retVal = handleNum((ASTNum) node); break; case JJTFUNCTION: handleFunction((ASTFunction) node); break; default: if (XAALScripter.debug) { System.out.println("Unimplemented"); } } return retVal; }
// returning false means we're done executing now. public Boolean handleDeclaration(ASTDeclaration node) { // System.out.println("Visiting decl"); SimpleNode child = (SimpleNode) node.jjtGetChild(0); if (child.getId() == JJTFUNCTION) { System.out.println("Found a function"); startQuestion = questionFactory.getStartQuestion(); connector.endPar(); // ENDPAR connector.endSnap(); ASTFunction main = Global.getFunction("main"); connector.addScope(main.getSymbolTable(), "main", "Global"); main.jjtAccept(this, null); return false; } else { node.jjtGetChild(0).jjtAccept(this, null); // update(); return true; } }