//Consecuente = lambda
}
void PASO() {
if (esCasa()) {
Match(new VT("TK_CASA"));
t.home();
return;
}
if (esGiro()) {
Match(new VT("TK_GIRO"));
double d = E();
t.turn(d);
return;
}
if (esAvanza()) {
Match(new VT("TK_AVANZA"));
double d = E();
t.penUp();
t.move(d);
t.penDown();
return;
}
if (esPinta()) {
Match(new VT("TK_PINTA"));
double d = E();
t.forward(d);
return;
}
if (esID()) {
String nombreID = (String) tokenActual.getContenido();
Match(new VT("TK_ID"));
Match(new VT("TK_ASIGN"));
double d = E();
tablaIdentificadores.put(nombreID, d);
return;
}
if (esColor()) {
Match(new VT("TK_COLOR"));
Match(new VT("TK_ASIGN"));
Color c = COLOR();
t.setColor(c);
return;
}
if (esCondicional()) {
Match(new VT("TK_SI"));
boolean resultado = CONDICIONAL();
if (resultado) {
Match(new VT("TK_ENTONCES"));
PASO();
nLlamadasRecursivas--;
}
else {
irSiguienteLinea();
}
return;
}
if (esSalto()) {
Match(new VT("TK_IR_A"));
int valor = (int) E();
saltar(valor);
return;
}
throw new SyntaxException("Esperaba pinta, casa, avanza, giro, identificador, color, condicional (SI) o salto (ir_a).");