Tipo variable_array(Tipo tipoArreglo) { if (peek("[")) { match("["); //Expr sizeExpr = expr(); int ind; bool parseo = Int32.TryParse(currentToken.Lexema,out ind); if (parseo == false) throw new Exception("Error al parsear la cadena a entero currentToken:\"" + currentToken.Lexema + "\"."); int sizeExpr = ind; match(TokenType.INTEGER_LITERAL); match("]"); Tipo tipoArreglo2 = variable_array(tipoArreglo); Arreglo array_t = new Arreglo(tipoArreglo2, sizeExpr); //array_t.isReference = true; return array_t; } else return tipoArreglo;//null }
private static ValorArreglo getValorArreglo(Arreglo array) { ValorArreglo v_array = new ValorArreglo(); v_array.valor = new List<Valor>(); if (array.tipoArreglo is Arreglo) { for (int x = 0; x < array.size; x++) { ValorArreglo v_subarray = getValorArreglo((Arreglo)array.tipoArreglo); v_array.valor.Add(v_subarray); } } else { for (int x = 0; x < array.size; x++) { Valor v = getDefaultValue(array.tipoArreglo); v_array.valor.Add(v); } } return v_array; }