00001 package plp.imperative1.memory; 00002 00003 import plp.expressions1.util.Tipo; 00004 import plp.expressions2.memory.ContextoCompilacao; 00005 import plp.expressions2.memory.VariavelJaDeclaradaException; 00006 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00007 00008 public class ContextoCompilacaoImperativa extends ContextoCompilacao 00009 implements AmbienteCompilacaoImperativa { 00010 00014 private ListaValor entrada; 00015 00019 public ContextoCompilacaoImperativa(ListaValor entrada){ 00020 super(); 00021 this.entrada = entrada; 00022 } 00023 00024 public Tipo getTipoEntrada() throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException, 00025 EntradaVaziaException { 00026 if(entrada == null || entrada.getHead() == null) { 00027 throw new EntradaVaziaException(); 00028 } 00029 Tipo aux = entrada.getHead().getTipo(this); 00030 entrada = (ListaValor)entrada.getTail(); 00031 return aux; 00032 } 00033 00034 } 00035