Class SymbolTable

java.lang.Object
  |
  +--SymbolTable

class SymbolTable
extends java.lang.Object

Classe que implementa la taula de simbols.

En cada entrada hi ha una llista de TNode, per implementar la sobrecarrega de funcions.

En un TNode hi ha desada tota la informacio del simbol tractat

Els ambits s'implementen representant el nom de l'entrada en la taula com un String amb el seguent format: ambit1::subambit1::subsubambit1:: ... ::identificador

Buscar entre els ambits consisteix nomes en tractar aquest String. Aixo permet desar-ho tot en una unica taula hash

A mes, independentment de les entrades a la TS, hi ha una llista amb els metodes publics declarats en la classe que es tracta, per a saber si han estat o no implementats.

Version:
1.0 - Data: 18/06/2003
Author:
Carles Royan Salvatella

Field Summary
 java.util.LinkedList listFunctions
          Llista enllazada dels metodes publics declarats en la classe.
private  java.util.Vector scopeStack
          Emmagatzema la pila d'ambits
private  java.lang.String superClass
          Nom de la superclasse de la classe que estem tractant.
private  java.util.Hashtable symTable
          Taula hash en la qual estan definits tots els simbols.
private  int typeOfScope
          Tipus de l'ambit actual: classe,metode, constructor...
 
Constructor Summary
SymbolTable()
          Constructor per defecte
 
Method Summary
 java.util.LinkedList add(java.lang.String name, java.util.LinkedList list)
          Afegeix un note a la taula de simbols, amb una llista associada per permetre el polimorfisme en funcions.
 java.util.LinkedList addClassInterface(java.lang.String name, java.util.LinkedList list)
          Afegeix la definicio de la classe en el primer ambit, per a que sigui accesible des dels altres subambits (metodes,funcions,...)
 java.lang.String addCurrentScopeToName(java.lang.String name)
          Afegeix l'ambit actual al nom d'un simbol
 java.lang.String addScopeToName(java.lang.String scope, java.lang.String name)
          Afegeix l'ambit al nom d'un simbol
 java.lang.String currentScopeAsString()
          Retorna l'ambit actual com un String
 java.lang.String getParentScopeName()
          Retorna el nom del primer ambit.
 java.lang.String getSuperClassName()
          Retorna el nom de la superClase de la classe que s'esta tractant
 java.util.Hashtable getSymTable()
          Retorna la taula hash de simbols
 int getTypeOfScope()
          Retorna el tipus d'ambit actual
 java.util.LinkedList lookupNameInCurrentScope2(java.lang.String name)
          Busca un simbol en la taula, afegint a davant tot l'ambit.
 void popScope()
          Desempila l'ultim ambit de la pila d'ambits
 void pushScope(java.lang.String s)
          Empila un nou ambit a la pila d'ambits
 java.lang.String removeOneLevelScope(java.lang.String scopeName)
          Elimina un ambit de la pila d'ambits passada i retorna el resultat
 void setSuperClassName(java.lang.String className)
          Especifica el nom de la superClasse de la classe que s'esta tractant
 void setTypeOfScope(int val)
          Especifica el tipus d'ambit actual
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

scopeStack

private java.util.Vector scopeStack
Emmagatzema la pila d'ambits


symTable

private java.util.Hashtable symTable
Taula hash en la qual estan definits tots els simbols.


superClass

private java.lang.String superClass
Nom de la superclasse de la classe que estem tractant.


typeOfScope

private int typeOfScope
Tipus de l'ambit actual: classe,metode, constructor...


listFunctions

public java.util.LinkedList listFunctions
Llista enllazada dels metodes publics declarats en la classe.

Constructor Detail

SymbolTable

public SymbolTable()
Constructor per defecte

Method Detail

getParentScopeName

public java.lang.String getParentScopeName()
Retorna el nom del primer ambit.


getSymTable

public java.util.Hashtable getSymTable()
Retorna la taula hash de simbols


setSuperClassName

public void setSuperClassName(java.lang.String className)
Especifica el nom de la superClasse de la classe que s'esta tractant


getSuperClassName

public java.lang.String getSuperClassName()
Retorna el nom de la superClase de la classe que s'esta tractant


setTypeOfScope

public void setTypeOfScope(int val)
Especifica el tipus d'ambit actual


getTypeOfScope

public int getTypeOfScope()
Retorna el tipus d'ambit actual


addClassInterface

public java.util.LinkedList addClassInterface(java.lang.String name,
                                              java.util.LinkedList list)
Afegeix la definicio de la classe en el primer ambit, per a que sigui accesible des dels altres subambits (metodes,funcions,...)


pushScope

public void pushScope(java.lang.String s)
Empila un nou ambit a la pila d'ambits


popScope

public void popScope()
Desempila l'ultim ambit de la pila d'ambits


currentScopeAsString

public java.lang.String currentScopeAsString()
Retorna l'ambit actual com un String


addCurrentScopeToName

public java.lang.String addCurrentScopeToName(java.lang.String name)
Afegeix l'ambit actual al nom d'un simbol


addScopeToName

public java.lang.String addScopeToName(java.lang.String scope,
                                       java.lang.String name)
Afegeix l'ambit al nom d'un simbol


removeOneLevelScope

public java.lang.String removeOneLevelScope(java.lang.String scopeName)
Elimina un ambit de la pila d'ambits passada i retorna el resultat


add

public java.util.LinkedList add(java.lang.String name,
                                java.util.LinkedList list)
Afegeix un note a la taula de simbols, amb una llista associada per permetre el polimorfisme en funcions.


lookupNameInCurrentScope2

public java.util.LinkedList lookupNameInCurrentScope2(java.lang.String name)
Busca un simbol en la taula, afegint a davant tot l'ambit. Si no el troba, desempila l'ambit i torna a buscar. En cas que finalment no el trobi, no esta declarat i retorna nul.