示例#1
0
 /**
  * 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";
 }
示例#2
0
  /**
   * Calcula o erro de uma expressão
   *
   * @param infix string com a expressão
   * @return string com o erro
   */
  public static String GetError(String infix) {
    if (!Parentesis.Verify(infix)) return Parentesis.GetError(infix);

    IteratorExpression it = new IteratorExpression(infix);
    CalculusElement calc = new CalculusElement();
    while (it.hasMoreElements()) {
      String elem = it.current();
      it.next();
      if (!calc.IsCalculus(elem) && !Values.IsValue(elem) && !Parentesis.IsParentesis(elem))
        return " ERRO : simbolo [" + elem + "] desconhecido ";
    }
    return "OK";
  }
示例#3
0
 /**
  * Verifica se uma string é uma expressão
  *
  * @param infix string com a expressão
  * @return verdadeiro se for uma expressão
  */
 public static boolean IsGood(String infix) {
   // verificar parentesis
   if (!Parentesis.Verify(infix)) return false;
   // verificar valores operadores e funções
   IteratorExpression it = new IteratorExpression(infix);
   CalculusElement calc = new CalculusElement();
   while (it.hasMoreElements()) {
     String elem = it.current();
     it.next();
     if (!calc.IsCalculus(elem) && !Values.IsValue(elem) && !Parentesis.IsParentesis(elem))
       return false;
   }
   return true;
 }
示例#4
0
 /**
  * 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;
 }
示例#5
0
  public static String ReplaceVariablesToDefaults(String expr, Vector memory, int tryUnknow) {

    StringBuffer newExpr = new StringBuffer();
    // iterador de elementos do codigo
    IteratorExpression tok = new IteratorExpression(expr);
    Symbol var;
    String elem;
    while (tok.hasMoreElements()) {
      elem = tok.current();
      tok.next();
      var = Variable.getVariable(elem, memory);
      // se for uma variavel vai selecionar o valor
      if (var != null) {
        if (var.getType() != var.DESCONHECIDO) newExpr.append(var.getDefaultValue() + " ");
        else newExpr.append(Symbol.getDefaultValue(tryUnknow) + " ");
      }
      // senao mete o elmento
      else newExpr.append(elem + " ");
    }
    return newExpr.toString().trim();
  }