if (node == null) {
return null;
}
if (m == null) {
System.out.println("Got a null scope!");
throw new NotCompilableException("Unknown node encountered in builder: " + node);
}
switch (node.getNodeType()) {
case ALIASNODE: return buildAlias((AliasNode) node, m); // done -- see FIXME
case ANDNODE: return buildAnd((AndNode) node, m); // done
case ARGSCATNODE: return buildArgsCat((ArgsCatNode) node, m); // done
case ARGSPUSHNODE: return buildArgsPush((ArgsPushNode) node, m); // Nothing to do for 1.8
case ARRAYNODE: return buildArray(node, m); // done
case ATTRASSIGNNODE: return buildAttrAssign((AttrAssignNode) node, m); // done
case BACKREFNODE: return buildBackref((BackRefNode) node, m); // done
case BEGINNODE: return buildBegin((BeginNode) node, m); // done
case BIGNUMNODE: return buildBignum((BignumNode) node, m); // done
case BLOCKNODE: return buildBlock((BlockNode) node, m); // done
case BREAKNODE: return buildBreak((BreakNode) node, (IRExecutionScope)m); // done?
case CALLNODE: return buildCall((CallNode) node, m); // done
case CASENODE: return buildCase((CaseNode) node, m); // done
case CLASSNODE: return buildClass((ClassNode) node, m); // done
case CLASSVARNODE: return buildClassVar((ClassVarNode) node, m); // done
case CLASSVARASGNNODE: return buildClassVarAsgn((ClassVarAsgnNode) node, m); // done
case CLASSVARDECLNODE: return buildClassVarDecl((ClassVarDeclNode) node, m); // done
case COLON2NODE: return buildColon2((Colon2Node) node, m); // done
case COLON3NODE: return buildColon3((Colon3Node) node, m); // done
case CONSTDECLNODE: return buildConstDecl((ConstDeclNode) node, m); // done
case CONSTNODE: return searchConst(m, ((ConstNode) node).getName()); // done
case DASGNNODE: return buildDAsgn((DAsgnNode) node, m); // done
case DEFINEDNODE: return buildDefined(node, m); // SSS FIXME: Incomplete
case DEFNNODE: return buildDefn((MethodDefNode) node, m); // done
case DEFSNODE: return buildDefs((DefsNode) node, m); // done
case DOTNODE: return buildDot((DotNode) node, m); // done
case DREGEXPNODE: return buildDRegexp((DRegexpNode) node, m); // done
case DSTRNODE: return buildDStr((DStrNode) node, m); // done
case DSYMBOLNODE: return buildDSymbol(node, m); // done
case DVARNODE: return buildDVar((DVarNode) node, m); // done
case DXSTRNODE: return buildDXStr((DXStrNode) node, m); // done
case ENSURENODE: return buildEnsureNode(node, m); // done
case EVSTRNODE: return buildEvStr((EvStrNode) node, m); // done
case FALSENODE: return buildFalse(node, m); // done
case FCALLNODE: return buildFCall((FCallNode) node, m); // done
case FIXNUMNODE: return buildFixnum((FixnumNode) node, m); // done
// case FLIPNODE: return buildFlip(node, m); // SSS FIXME: What code generates this AST?
case FLOATNODE: return buildFloat((FloatNode) node, m); // done
case FORNODE: return buildFor((ForNode) node, (IRExecutionScope)m); // done
case GLOBALASGNNODE: return buildGlobalAsgn((GlobalAsgnNode) node, m); // done
case GLOBALVARNODE: return buildGlobalVar((GlobalVarNode) node, m); // done
case HASHNODE: return buildHash((HashNode) node, m); // done
case IFNODE: return buildIf((IfNode) node, m); // done
case INSTASGNNODE: return buildInstAsgn((InstAsgnNode) node, m); // done
case INSTVARNODE: return buildInstVar((InstVarNode) node, m); // done
case ITERNODE: return buildIter((IterNode) node, (IRExecutionScope)m); // done
case LITERALNODE: return buildLiteral((LiteralNode) node, m);
case LOCALASGNNODE: return buildLocalAsgn((LocalAsgnNode) node, m); // done
case LOCALVARNODE: return buildLocalVar((LocalVarNode) node, m); // done
case MATCH2NODE: return buildMatch2((Match2Node) node, m); // done
case MATCH3NODE: return buildMatch3((Match3Node) node, m); // done
case MATCHNODE: return buildMatch((MatchNode) node, m); // done
case MODULENODE: return buildModule((ModuleNode) node, m); // done
case MULTIPLEASGNNODE: return buildMultipleAsgn((MultipleAsgnNode) node, m); // done
case NEWLINENODE: return buildNewline((NewlineNode) node, m); // done
case NEXTNODE: return buildNext((NextNode) node, (IRExecutionScope)m); // done?
case NTHREFNODE: return buildNthRef((NthRefNode) node, m); // done
case NILNODE: return buildNil(node, m); // done
case NOTNODE: return buildNot((NotNode) node, m); // done
case OPASGNANDNODE: return buildOpAsgnAnd((OpAsgnAndNode) node, m); // done
case OPASGNNODE: return buildOpAsgn((OpAsgnNode) node, m); // done
case OPASGNORNODE: return buildOpAsgnOr((OpAsgnOrNode) node, m); // done
case OPELEMENTASGNNODE: return buildOpElementAsgn(node, m); // done
case ORNODE: return buildOr((OrNode) node, m); // done
// case POSTEXENODE: return buildPostExe(node, m); // DEFERRED
// case PREEXENODE: return buildPreExe(node, m); // DEFERRED
case REDONODE: return buildRedo(node, (IRExecutionScope)m); // done??
case REGEXPNODE: return buildRegexp((RegexpNode) node, m); // done
case RESCUEBODYNODE:
throw new NotCompilableException("rescue body is handled by rescue compilation at: " + node.getPosition());
case RESCUENODE: return buildRescue(node, m); // done
case RETRYNODE: return buildRetry(node, m); // FIXME: done?
case RETURNNODE: return buildReturn((ReturnNode) node, m); // done
case ROOTNODE:
throw new NotCompilableException("Use buildRoot(); Root node at: " + node.getPosition());
case SCLASSNODE: return buildSClass((SClassNode) node, m); // done
case SELFNODE: return buildSelf((SelfNode) node, m); // done
case SPLATNODE: return buildSplat((SplatNode) node, m); // done
case STRNODE: return buildStr((StrNode) node, m); // done
case SUPERNODE: return buildSuper((SuperNode) node, m); // done
case SVALUENODE: return buildSValue((SValueNode) node, m); // done
case SYMBOLNODE: return buildSymbol((SymbolNode) node, m); // done
case TOARYNODE: return buildToAry((ToAryNode) node, m); // done
case TRUENODE: return buildTrue(node, m); // done
case UNDEFNODE: return buildUndef(node, m); // done
case UNTILNODE: return buildUntil((UntilNode) node, (IRExecutionScope)m); // done
case VALIASNODE: return buildVAlias(node, m); // done -- see FIXME
case VCALLNODE: return buildVCall((VCallNode) node, m); // done
case WHILENODE: return buildWhile((WhileNode) node, (IRExecutionScope)m); // done
case WHENNODE: assert false : "When nodes are handled by case node compilation."; return null;
case XSTRNODE: return buildXStr((XStrNode) node, m); // done
case YIELDNODE: return buildYield((YieldNode) node, m); // done
case ZARRAYNODE: return buildZArray(node, m); // done
case ZSUPERNODE: return buildZSuper((ZSuperNode) node, m); // done
default: new Exception().printStackTrace(); throw new NotCompilableException("Unknown node encountered in builder: " + node.getClass());
}
}