throw new ArithmeticException("Esperaba '*' o '/'.");
}
double F() {
if (esParentesisAbierto()) {
Match(new VT("TK_PAR_ABR"));
double valor = E();
Match(new VT("TK_PAR_CER"));
return valor;
}
else if (esID()) {
double valor = devolverTabla((String) tokenActual.getContenido());
Match(new VT("TK_ID"));
return valor;
}
else if (esNumero()) {
double valor = 0;
try {
if (tokenActual.getContenido() instanceof Integer) {
valor = (double) (int) tokenActual.getContenido();
}
else { //Suponemos que es double entonces
valor = (double) tokenActual.getContenido();
}
}
catch (Exception e) {
throw new InterpreterException("No es número entero o double");
}
Match(new VT("TK_CTE_NUM"));
return valor;
}
else if (esNumeroD()) {
double valor = Double.parseDouble((String) tokenActual.getContenido());
Match(new VT("TK_NOTCNTF"));
return valor;
}
else if (esMasMenos()) {
int simbolo = MAS_MENOS(1);
double valor = F();