Tablas de símbolos por
alcance:
Estático o léxico: antes
de la ejecución
Dinámico: durante la ejecución.Cada una de las llamadas a la función que puede tener un atabla de símbolos diferente en su entrada.
La semántica de una
función puede variar radicalmente dependiendo
de la trayectoria de la ejecución.
El uso de tablas de
símbolos:
- Almacena todos los nombres declarados en el programa y sus atributos (tipo, valor, dirección, parámetros, etc.).
- Se usa en las distintas fases del compilador.
Estructuras usadas para
implementar una tabla de símbolos
- Lista
- Simple de implementar.
- Lenta cuando se trabaja con muchos
- identificadores.
- Árbol
- Rápida.
- Consume más memoria.
- Es útil cuando hay muchas declaraciones.
- Tabla de Hashing
- Rápida.
- Difícil de implementar.
- Se debe definir una función de hashing
- apropiada para evitar colisiones.
Operaciones sobre TS
Búsqueda(lexema): entero;
{
Inserción(lexema,descriptor): boolean;
{
Obt_atributo(lexema,atributo): valor;
{ Eliminación (lexema):
entero.
Scanner reader = new Scanner(System.in); int Numero1, Numero2;
tabla de Simbolos
Lexema: Token:
Sacanner palabra reservada
reader palabra reservada
= (=) o Asignacion
New palabra reservada
Sacanner palabra reservada
( parentesis open
System.in palabra reservada
) parentesis close
; palabra reservada
int palabra reservada
Numero1 id,1
, palabra reservada
Numero2 id,2
; palabra reservada
0 comentarios:
Publicar un comentario