private Clase agregarInstruccionesClase(Clase claseModificar, ParseTreeNode instrucciones) { foreach (ParseTreeNode item in instrucciones.ChildNodes) { switch (item.Term.Name) {/*ELEMENTO.Rule = FUNCION | ATRIBUTO | CONSTRUCTOR | FUNCION_SOBRE; */ case Constantes.funcion: { Funcion nueva = getFuncion(item, claseModificar.getNombre()); claseModificar.addFuncion(nueva); break; } case Constantes.atributo: { List <Atributo> atributos = generarAtributos(item); foreach (Atributo atr in atributos) { claseModificar.addAtributo(atr); } break; } case Constantes.constructor: { Funcion constructor = getconstructor(item, claseModificar.getNombre()); if (constructor != null) { claseModificar.addFuncion(constructor); } else { ErrorA nuevo = new ErrorA("Semantico", "No se pudo generar el constructor", item.Token); Form1.errores.addError(nuevo); } break; } case Constantes.funSobre: { Funcion nueva = getFuncion(item.ChildNodes[0], claseModificar.getNombre()); nueva.setSobreescrita(true); claseModificar.addFuncion(nueva); break; } } } return(claseModificar); }
private Clase agregarInstruccionesClase(Clase claseModificar, ParseTreeNode instrucciones) { foreach (ParseTreeNode item in instrucciones.ChildNodes) { switch (item.Term.Name) { case Constantes.funcion: { Funcion nueva = getFuncion(item, claseModificar.getNombre()); claseModificar.addFuncion(nueva); break; } case Constantes.funSobre: { Funcion nueva = getFuncion(item.ChildNodes[0], claseModificar.getNombre()); nueva.setSobreescrita(true); claseModificar.addFuncion(nueva); break; } case Constantes.atributo: { List <Atributo> atributos = generarAtributos(item); foreach (Atributo atr in atributos) { claseModificar.addAtributo(atr); } break; } case Constantes.principal: { if (!claseModificar.funciones.hayPrincipal()) { Funcion principal = getPrincipal(item, claseModificar.getNombre()); claseModificar.addFuncion(principal); } else { ErrorA err = new ErrorA(Constantes.errorSemantico, item.FindToken().Location.Line, item.FindToken().Location.Position, item.FindToken().Location.Column, "Una clase unicamente puede poseer un metodo principal"); Form1.errores.addError(err); } break; } case Constantes.constructor: { Funcion constructor = getConstructor(item, claseModificar.getNombre()); if (constructor != null) { claseModificar.addFuncion(constructor); } else { ErrorA nuevo = new ErrorA("Semantico", "No se pudo generar el constructor", item.Token); Form1.errores.addError(nuevo); } break; } } } return(claseModificar); }