00001 package plp.expressions2.expression; 00002 00003 import plp.expressions2.memory.AmbienteCompilacao; 00004 import plp.expressions2.memory.VariavelJaDeclaradaException; 00005 import plp.expressions2.memory.VariavelNaoDeclaradaException; 00006 00011 public abstract class ExpBinaria implements Expressao { 00012 00016 private Expressao esq; 00017 00021 private Expressao dir; 00022 00026 private String operador; 00027 00038 public ExpBinaria(Expressao esq, Expressao dir, String operador) { 00039 this.esq = esq; 00040 this.dir = dir; 00041 this.operador = operador; 00042 } 00043 00049 public Expressao getEsq() { 00050 return esq; 00051 } 00052 00058 public Expressao getDir() { 00059 return dir; 00060 } 00061 00067 public String getOperador() { 00068 return operador; 00069 } 00070 00076 @Override 00077 public String toString() { 00078 return String.format("%s %s %s", esq, operador, dir); 00079 } 00080 00093 public boolean checaTipo(AmbienteCompilacao amb) 00094 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException { 00095 boolean result = true; 00096 if (!getEsq().checaTipo(amb) || !getDir().checaTipo(amb)) { 00097 result = false; 00098 } else { 00099 result = this.checaTipoElementoTerminal(amb); 00100 } 00101 return result; 00102 } 00103 00108 protected abstract boolean checaTipoElementoTerminal(AmbienteCompilacao amb) 00109 throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException; 00110 00111 }
1.5.8