00001 package plp.orientadaObjetos1.util; 00002 00003 import plp.orientadaObjetos1.memoria.AmbienteCompilacaoOO1; 00004 import plp.orientadaObjetos1.expressao.leftExpression.Id; 00005 00009 public class TipoPrimitivo implements Tipo { 00010 00014 public static final int INTEIRO = 1; 00015 00019 public static final int BOOLEANO = 2; 00020 00024 public static final int STRING = 4; 00025 00029 public static final Tipo TIPO_INTEIRO = new TipoPrimitivo(INTEIRO); 00030 00031 00035 public static final Tipo TIPO_BOOLEANO = new TipoPrimitivo(BOOLEANO); 00036 00040 public static final Tipo TIPO_STRING = new TipoPrimitivo(STRING); 00041 00045 public static final Id TIPO_ID_int = new Id("int"); 00046 00050 public static final Id TIPO_ID_string = new Id("string"); 00051 00055 public static final Id TIPO_ID_boolean = new Id("boolean"); 00056 00060 private int tipo; 00061 00070 public TipoPrimitivo(int tipo) { 00071 this.tipo = tipo; 00072 } 00073 00082 public Id getTipo(){ 00083 00084 Id resposta = new Id("undefined"); 00085 switch(tipo) { 00086 case(INTEIRO): 00087 resposta = TIPO_ID_int; 00088 break; 00089 case(BOOLEANO): 00090 resposta = TIPO_ID_boolean; 00091 break; 00092 case(STRING): 00093 resposta = TIPO_ID_string; 00094 break; 00095 } 00096 return resposta; 00097 } 00098 00105 public boolean eInteiro() { 00106 return tipo == INTEIRO; 00107 } 00108 00115 public boolean eBooleano() { 00116 return tipo == BOOLEANO; 00117 } 00118 00125 public boolean eString() { 00126 return tipo == STRING; 00127 } 00128 00135 public boolean eValido(AmbienteCompilacaoOO1 ambiente){ 00136 return tipo == STRING || tipo == BOOLEANO || tipo == INTEIRO; 00137 } 00138 00145 public boolean eValido() { 00146 return tipo == STRING || tipo == BOOLEANO || tipo == INTEIRO; 00147 } 00148 00155 public boolean equals(Object obj) { 00156 if (obj instanceof TipoPrimitivo) { 00157 return ((TipoPrimitivo) obj).tipo == this.tipo; 00158 } 00159 return false; 00160 } 00165 public String toString() { 00166 String resposta = "undefined"; 00167 switch(tipo) { 00168 case(INTEIRO): 00169 resposta = "int"; 00170 break; 00171 case(BOOLEANO): 00172 resposta = "boolean"; 00173 break; 00174 case(STRING): 00175 resposta = "string"; 00176 break; 00177 } 00178 return resposta; 00179 } 00180 00181 }