package li2.plp.imperative1.command; import li2.plp.expressions2.expression.Expressao; import li2.plp.imperative1.memory.AmbienteExecucaoImperativa; import li2.plp.imperative1.memory.AmbienteCompilacaoImperativa; import li2.plp.expressions2.memory.VariavelNaoDeclaradaException; import li2.plp.expressions2.memory.VariavelJaDeclaradaException; public class Write implements IO { private Expressao expressao; public Write(Expressao expressao) { this.expressao = expressao; } /** * Escreve na saida padr�o. * * @param ambiente * o ambiente de execu��o. * * @return o ambiente depois de modificado pela execu��o do comando * write. * */ public AmbienteExecucaoImperativa executar( AmbienteExecucaoImperativa ambiente) throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { ambiente.write(expressao.avaliar(ambiente)); return ambiente; } /** * Realiza a verificacao de tipos da express�o a ser escrita na pelo comando * write * * @param ambiente * o ambiente de compila��o. * @return true se a express�o a ser escrita est� bem tipada; * false caso contrario. */ public boolean checaTipo(AmbienteCompilacaoImperativa ambiente) throws VariavelJaDeclaradaException, VariavelNaoDeclaradaException { return expressao.checaTipo(ambiente); } }