package loo2.plp.orientadaObjetos1.expressao.unaria;
import loo2.plp.expressions2.memory.VariavelJaDeclaradaException;
import loo2.plp.expressions2.memory.VariavelNaoDeclaradaException;
import loo2.plp.orientadaObjetos1.excecao.declaracao.ClasseNaoDeclaradaException;
import loo2.plp.orientadaObjetos1.expressao.Expressao;
import loo2.plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1;
/**
* Uma expressao unaria contem uma expressao e um operador sobre a mesma.
*/
public abstract class ExpUnaria implements Expressao {
/**
* expressao contida pela expressao unaria
*/
private Expressao exp;
/**
* Representacao do operador desta expressao unaria.
*/
private String operador;
/**
* Construtor da classe.
*
* @param exp expressao contida pela expressao unaria.
*/
public ExpUnaria(Expressao exp, String operador) {
this.exp = exp;
this.operador = operador;
}
/**
* Retorna a expressao contida pela expressao unaria
*
* @return a expressao contida pela expressao unaria
*/
public Expressao getExp() {
return exp;
}
/**
* Retorna a representacao do operador desta expressao unaria.
*
* @return a representacao do operador desta expressao unaria.
*/
public String getOperador() {
return operador;
}
/**
* Realiza a verificacao de tipos desta expressao.
*
* @param ambiente o ambiente de compila��o.
* @return true se os tipos da expressao s�o v�lidos;
* false caso contrario.
* @exception VariavelJaDeclaradaException se a vari�vel j� est�
* declarada no ambiente
* @exception VariavelNaoDeclaradaException se a vari�vel ainda n�o
* foi declarada no ambiente.
*/
public boolean checaTipo(AmbienteCompilacaoOO1 ambiente)
throws VariavelNaoDeclaradaException,
VariavelNaoDeclaradaException, ClasseNaoDeclaradaException {
boolean result;
if (getExp().checaTipo(ambiente)) {
result = true;
}
else {
result = false;
}
return result;
}
}