00001 package plp.imperative1.command; 00002 00003 import plp.imperative1.declaration.Declaracao; 00004 import plp.imperative1.memory.AmbienteExecucaoImperativa; 00005 import plp.imperative1.memory.AmbienteCompilacaoImperativa; 00006 import plp.imperative1.memory.EntradaVaziaException; 00007 import plp.expressions2.memory.IdentificadorJaDeclaradoException; 00008 import plp.expressions2.memory.IdentificadorNaoDeclaradoException; 00009 00010 public class ComandoDeclaracao implements Comando { 00011 00012 private Declaracao declaracao; 00013 00014 private Comando comando; 00015 00016 public ComandoDeclaracao(Declaracao declaracao, Comando comando){ 00017 this.declaracao = declaracao; 00018 this.comando = comando; 00019 } 00020 00030 public AmbienteExecucaoImperativa executar(AmbienteExecucaoImperativa ambiente) 00031 throws IdentificadorJaDeclaradoException, IdentificadorNaoDeclaradoException, EntradaVaziaException { 00032 ambiente.incrementa(); 00033 ambiente = comando.executar(declaracao.elabora(ambiente)); 00034 ambiente.restaura(); 00035 return ambiente; 00036 } 00037 00042 public boolean checaTipo(AmbienteCompilacaoImperativa ambiente) 00043 throws IdentificadorJaDeclaradoException, IdentificadorNaoDeclaradoException, EntradaVaziaException { 00044 boolean resposta; 00045 ambiente.incrementa(); 00046 if(declaracao.checaTipo(ambiente)) { 00047 //ambiente = declaracao.declara(ambiente); 00048 resposta = comando.checaTipo(ambiente); 00049 } 00050 else { 00051 resposta = false; 00052 } 00053 ambiente.restaura(); 00054 return resposta; 00055 } 00056 00057 }