/** * Avalia uma expressão com os valores por defeito das variáveis * * @param expression expressao * @param memory vector de memória * @return valor calculado */ public static String EvaluateByDefaults(String expression, Vector memory) { try { String exp = ReplaceVariablesToDefaults(expression, memory); return Calculator.CalulateValue(exp); } catch (Exception e) { return "ERROR DEFAULT CALCULATE"; } }
/** * calcula qual o elemento de uma expressão que dá erro * * @param elem expressão * @param memory vector de memória * @return o elemento que dá erro */ public static String ErrorExpression(String elem, Vector memory) { String exp = ReplaceVariablesToDefaults(elem, memory); IteratorExpression it = new IteratorExpression(exp); while (it.hasMoreElements()) { if (!Calculator.IsCalculus(it.current())) return it.current(); it.next(); } return "NO ERROR"; }
/** * calcula o tipo de dados de retorno de uma expressão (inteiro, real, lógico, . . .) * * @param elem expressão * @param memory vector de memória * @return tipo de dados */ public static int TypeExpression(String elem, Vector memory) { try { String exp = ReplaceVariablesToDefaults(elem, memory); String result = Calculator.CalulateValue(exp); if (Values.IsBoolean(result)) return Symbol.LOGICO; if (Values.IsInteger(result)) return Symbol.INTEIRO; if (Values.IsCharacter(result)) return Symbol.CARACTER; if (Values.IsString(result)) return Symbol.TEXTO; if (Values.IsReal(result)) return Symbol.REAL; return Symbol.DESCONHECIDO; } catch (Exception e) { return Symbol.DESCONHECIDO; } }
/** * verifica se uma expressão é aceitavel de acordo com o vectro de memória * * @param express expressão * @param memory vector de memória * @return verdadeiro se for uma expressão aceitável */ public static boolean IsExpression(String express, Vector memory) { String exp = ReplaceVariablesToDefaults(express, memory); IteratorExpression it = new IteratorExpression(exp); while (it.hasMoreElements()) { String elem = it.current(); if (!elem.equals("(") && !elem.equals(")") && !elem.equals(",") && !Calculator.IsCalculus(elem) && !Values.IsValue(elem)) return false; it.next(); } return true; }