plp.expressions1.util
Class Tipo

java.lang.Object
  extended by plp.expressions1.util.Tipo

public class Tipo
extends java.lang.Object

Classe que representa os possiveis tipos de uma expressao. Objetos desta classe sao imutaveis, portanto as vezes as instancias sao compartilhadas. Modificado em 11/07/2005 por Leonardo Lucena para usar tipos enumerados


Nested Class Summary
static class Tipo.Tipos
           
 
Field Summary
static Tipo TIPO_BOOLEANO
           
static Tipo TIPO_CHAR
           
static Tipo TIPO_INDEFINIDO
           
static Tipo TIPO_INTEIRO
           
static Tipo TIPO_STRING
           
 
Constructor Summary
Tipo()
          Construtor da classe que representa um tipo qualquer (inteiro, boolean ou string).
Tipo(java.util.Set<Tipo.Tipos> tipo)
          Construtor da classe.
Tipo(java.util.Set<Tipo.Tipos> tipo, Tipo prox)
          Construtor da classe.
Tipo(Tipo prox)
          Construtor da classe que representa um tipo qualquer (inteiro, boolean ou string).
 
Method Summary
 boolean eBooleano()
          Indica se esta expressao é booleana.
 boolean eInteiro()
          Indica se esta expressao é inteira.
 boolean equals(java.lang.Object obj)
          Compara este tipo com o tipo dado.
 boolean eString()
          Indica se esta expressao é string.
 boolean eValido()
           
 boolean eVoid()
          Indica se esta expressao nao pode representar tipo algum.
 java.util.Set<Tipo.Tipos> get()
          Retorna o tipo da expressao associada.
 Tipo getProx()
          Retorna o tipo de retorno, no caso de ser uma funcao.
 Tipo intersecao(Tipo outroTipo)
          Retorna o tipo mais abrangente que engloba este tipo e o tipo dado.
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TIPO_INTEIRO

public static final Tipo TIPO_INTEIRO

TIPO_BOOLEANO

public static final Tipo TIPO_BOOLEANO

TIPO_STRING

public static final Tipo TIPO_STRING

TIPO_CHAR

public static final Tipo TIPO_CHAR

TIPO_INDEFINIDO

public static final Tipo TIPO_INDEFINIDO
Constructor Detail

Tipo

public Tipo()
Construtor da classe que representa um tipo qualquer (inteiro, boolean ou string).


Tipo

public Tipo(Tipo prox)
Construtor da classe que representa um tipo qualquer (inteiro, boolean ou string).

Parameters:
prox - o proximo head no tipo de uma funcao, ou null para o caso de tipos primitivos.

Tipo

public Tipo(java.util.Set<Tipo.Tipos> tipo)
Construtor da classe.

Parameters:
tipo - o tipo da expressao associada.
See Also:
#Tipos.INTEIRO, #Tipos.BOOLEANO, #Tipos.STRING

Tipo

public Tipo(java.util.Set<Tipo.Tipos> tipo,
            Tipo prox)
Construtor da classe.

Parameters:
tipo - o tipo da expressao associada.
prox - o proximo head no tipo de uma funcao, ou null para o caso de tipos primitivos.
See Also:
#Tipos.INTEIRO, #Tipos.BOOLEANO, #Tipos.STRING
Method Detail

get

public java.util.Set<Tipo.Tipos> get()
Retorna o tipo da expressao associada.

Returns:
o tipo da expressao associada.
See Also:
#Tipos.INTEIRO, #Tipos.BOOLEANO, #Tipos.STRING

eInteiro

public boolean eInteiro()
Indica se esta expressao é inteira.

Returns:
true se esta expressao for inteira; false caso contrario.

eBooleano

public boolean eBooleano()
Indica se esta expressao é booleana.

Returns:
true se esta expressao for booleana; false caso contrario.

eString

public boolean eString()
Indica se esta expressao é string.

Returns:
true se esta expressao for string; false caso contrario.

eVoid

public boolean eVoid()
Indica se esta expressao nao pode representar tipo algum.

Returns:
true se esta expressao for void; false caso contrario.

equals

public boolean equals(java.lang.Object obj)
Compara este tipo com o tipo dado.

Overrides:
equals in class java.lang.Object
Returns:
true se se tratarem do mesmo tipo; false caso contrario.

intersecao

public Tipo intersecao(Tipo outroTipo)
Retorna o tipo mais abrangente que engloba este tipo e o tipo dado. Por exemplo, se este tipo pode ser String ou inteiro e o tipo dado pode ser inteiro ou booleano, entao este metodo retorna um tipo que so pode ser inteiro.

Parameters:
outroTipo - o outro tipo.
Returns:
a interseção entre este tipo e o tipo dado.

getProx

public Tipo getProx()
Retorna o tipo de retorno, no caso de ser uma funcao. O que ocorre por exemplo com uma funcao f(x) = x == 1 (do tipo Int -> Bool), é que seu tipo será um objeto desta classe do tipo Inteiro cujo campo prox será outro objeto desta classe, do tipo Booleano (que por sua vez terá o campo prox igual a null.

Returns:
o tipo de retorno, no caso de uma função, ou null no caso de valor primitivo.

eValido

public boolean eValido()