Sentence struct_declarationP(string structName) { if (peek("{")) { match("{"); EnvTypes savedEnvTypes = entornoTipos; entornoTipos = new EnvTypes(null); EnvValues savedEnvValues = entornoValores; entornoValores = new EnvValues(null); Sentence strVarDecs = variable_declaration_list(savedEnvTypes, savedEnvValues); match("}"); Registro record = new Registro(entornoTipos); ValorRegistro Valrec = new ValorRegistro(); Valrec.valor = entornoValores; entornoTipos = savedEnvTypes; entornoTipos.put(structName, record); entornoValores = savedEnvValues; entornoValores.put(structName, Valrec); return strVarDecs; } else { Tipo varRecord = entornoTipos.get(structName); Valor valRecord = entornoValores.get(structName); string strVarName = variable_name(); entornoTipos.put(strVarName, varRecord); //entornoValores.put(strVarName, valRecord); return new StructVariableDeclaration(structName, strVarName, varRecord, valRecord); } }
public override Valor clone() { ValorRegistro v_record = new ValorRegistro(); v_record.valor = valor; return v_record; }