Está en la página 1de 91

Administrador de Tabla de Smbolos Teora de Compiladores

Agenda
Introduccin Contenidos de la Tabla de Smbolos Operaciones con la Tabla de Smbolos Organizacin de la Tabla de Smbolos Lenguajes no estructurados en bloques Lenguajes estructurados en bloques Tablas de smbolos orientadas a objetos

Introduccin y Contenidos

Introduccin
El A. Sintac. se limita a comprobar, mediante una GLC, que un identificador forma parte de una expresin. Una vez comprobado que la sentencia es sintcticamente correcta, el A. Sem. deber verificar que el identificador empleado como parte de Las Tablas de Smbolos son estructuras de datos que almacenan toda la una expresin haya sido declarado informacin de los identificadores del lenguaje fuente. previamente. Para llevar a cabo esta tarea, es tpica la utilizacin de una estructura de datos adicional denominada tabla de smbolos.

Compiladores de Varias Pasadas

En un compilador de varias pasadas, la TS se crea durante el anlisis lxico y sintctico (pasada 1). En los compiladores modernos la TS se crea durante el primer recorrido del rbol AST, una vez creado ste mediante al analizador sintctico (pasada 2). El AL separa el programa fuente en tokens que compara con las palabras reservadas. Si el token comparado no es una palabra reservada se asume que es un identificador y durante el

Figura 1
Compilador de Varias Pasadas

Haga clic en el icono para agregar una imagen

Figura 2
Tabla de smbolos en un compilador de varias pasadas con generacin de AST

Haga clic en el icono para agregar una imagen

Compiladores de Una Pasada


Donde el anlisis lxico, sintctico, semntico y la generacin de cdigo se realizan en una pasada, es decir, se explora el texto fuente sentencia a sentencia (o bloques de sentencias) realizndose los tres anlisis y la generacin de cdigo.

Compiladores de Una Pasada


Esta estrategia tiene dos ventajas: Reduce la complejidad de la gramtica para anlisis sintctico. Permite una mejor especificacin de los errores sintcticos por el compilador gracias a la utilizacin de construcciones menos generales.

Contenidos de la T abla de Smbolos Los smbolos se guardan en la tabla


con su nombre y una serie de atributos opcionales que dependern del lenguaje y de los objetivos del procesador. Este conjunto de atributos almacenados en la TS para un smbolo determinado se define como registro de la tabla de Identificador Direccin Tipo Dimensin Otros smbolos (symbol-table record).
companya x3 forma1 b STATIC+0 C I B F 10 0 0 3 STATIC+10 STATIC+12 STATIC+13

Contenidos de la T abla de Smbolos La lista siguiente de atributos no es


necesaria para todos los compiladores. Nombre de identificador. Direccin en tiempo de ejecucin Tipo del identificador. Nmero de dimensiones del array, Tamao mximo o rango de cada una de las dimensiones de los arrays, Tipo y forma de acceso de cada uno de los miembros de las estructuras,

Nombre del Identificador


El primer problema en la organizacin de la TS es la variacin en la longitud de los nombres de los identificadores.

Atributos de los Identificadores


D DIRECCIN I DE MEMORIA R T ET I CI P CP N NMERO DE DIMENSIONES, DE O I O MIEMBROS O DE PARMETROS M N V VALOR MXIMO DE LAS E D A DIMENSIONES O RANGOS DE ARRAYS R E L O M T TIPO Y FORMA DE ACCESO DE LOS MIEMBROS DE O D E I ESTRUCTURAS, REGISTROS, UNIONES Y CLASES. R E M P M D O T TIPO DE LOS PARMETROS DE LAS FUNCIONES, FUNCIONES LIBRES, O I R I PROCEDIMIENTOS O MTODOS DE LAS CLASES Y X M I P F I E A D O DESCRIPTOR DE M N E D FICHEROS R O S S E M D I C L A E O R

Otros Atributos
Utilizan informacin de la TS en tiempo de

ejecucin, por lo que las distintas implementaciones de los compiladores incorporan informacin adicional en la TS para estas herramientas que acompaan a los compiladores. Las listas de referencias cruzadas son otros tipos de atributos que proporcionan una ayuda Identificador Tipo Dimensin Declarada en importante cuando se est en fase de Referencias depuracin. anho int 0 5 11, 23, 25
b companhia forma1 m real int char proc 0 1 2 0 5 2 4 6 10, 11, 13, 23 9, 14, 25 36, 37, 38 17, 21

Operaciones y Organizacin

Operaciones con la T abla de Smbolos


TS y Declaracin explcita vs implcita. Lenguajes con declaraciones explcitas obligatorias. Lenguajes con declaraciones implcitas de los identificadores. Operaciones con lenguajes estructurados en bloques Operaciones de activacin y desactivacin de tablas de smbolos

Organizacin de la T abla de Smbolos Lenguajes no estructurados en bloques.


Tabla de smbolos no ordenadas Bsqueda: La LMI requerida es: Insercin: La LMI requerida es: Tabla de smbolos ordenadas Bsqueda: La LMI requerida es: Insercin: La LMI requerida es:

Se accede al rbol a travs del nodo raz (nodo ms alto). El proceso de Puntero bsqueda se realiza descendiendo Identificad Dimensi Otros Posicin Tipo n atributos Izquierdo Derecho desde el or nodo raz hasta el nodo 1 1 0 2 5 buscadofirst hasta un campo de tipo o 2 b 1 0 3 4 punteroanhio nulo, que se0 denota por 00. 3 1 0
4 5 6 7 companhia m forma1 x3 2 6 3 1 1 0 2 0 0 6 0 0 0 7 0 0

TS con Estructura en rbol (AVL)

TS con Estructura en rbol (AVL)

Se llama subrbol izquierdo de un nodo a la parte del rbol que contiene todos

TS con Estructura en rbol (AVL) binario, todo nodo situado en un subrbol En un rbol
izquierdo precede alfabticamente a la raz del subrbol. Todo nodo situado en un subrbol derecho sigue alfabticamente a la raz del subrbol. Por ejemplo, si se desea insertar un registro de la variable cuenta en el rbol del ejemplo anterior, se llega al rbol de la figura. Se observa que se inserta como una hoja del rbol a la derecha de la variable companhia.

TS con Estructura en rbol (AVL)

Esta estructura se cre con los registros introducidos por el orden: first, b, anhio, companhia, m, forma1 y x3 o tambin: first, b, m, anhio, companhia, forma1 y x3 Sin embargo si el orden de insercin es: forma1, b, companhia, anhio, m, x3, y first

TS con Estructura en rbol (AVL) es de insercin y se realiza bien, entonces se Si la operacin


devuelve la localizacin del nuevo nodo del rbol. Si encuentra un registro con el mismo nombre, devuelve el correspondiente error. En las operaciones de bsqueda, una investigacin con xito devuelve la localizacin del registro con el nombre del campo que proporciona el argumento buscado. El problema principal de este algoritmo, est en el proceso de insercin, pues se pueden crear rboles no equilibrados. Por ejemplo, muchos programadores declaran variables por orden alfabtico en programas muy largos para facilitar su comprensin y localizacin en la cabecera del programa.

TS con Estructura en rbol (AVL)

Es obvio que en el caso anterior la estructura del rbol binario ha n +1 L I = con una LMI de: M degenerado en una lista 2

TS con Estructura en rbol (AVL)

Esta situacin es la que ocurre en los rboles binarios equilibrados ptimos. En tales estructuras las distancias (longitud de las trayectorias) de la raz a cualquiera de los nodos incompletos del rbol difiere como mximo en una unidad. Desafortunadamente, el principal problema que se presenta en los rboles binarios equilibrados ptimos, se produce en la insercin de registros en la estructura.

rboles AVL
Un rbol AVL es un rbol binario cuyos nodos estn en uno de los estados siguientes: Un nodo es pasado a izquierda (leftheavy) si la longitud de sus trayectorias en el subrbol izquierdo tienen una unidad ms que las del subrbol derecho. Lo denotaremos por L. Un nodo est equilibrado si la longitud de sus trayectorias en los dos subrboles son iguales. Lo denotaremos

rboles AVL Equilibrado

Desequilibrado

En cada nueva insercin, es posible que el rbol se desequilibre, si esto ocurre

rboles AVL
Stone demostr que la longitud de camino mxima de un rbol AVL de n nodos es: 1.5 log(n + 1) Knuth hace el mismo clculo con algunas suposiciones empricas y obtiene la siguiente expresin: log(n + 1) + const

Haga clic para modificar el estilo de texto del patrn

Implementacin de TS propuesta por Severance.

Tablas de Smbolos con Estructura de Tablas Hash

Conceptos
Espacio de nombres (zona de nombres) Tambin llamado espacio de identificacin o espacio de claves .Es el conjunto K de los nombres de las variables que pueden aparecer en un programa, las cuales estn formados por caracteres alfanumricos y especiales que son muy adecuados para manejarse con operaciones aritmticas o lgicas.

Conceptos
Funcin Hash (o transformacin de claves). Es una aplicacin H del conjunto K (de claves) en el conjunto A (de localizaciones de registros). La funcin hash H toma el nombre de una identificador y calcula la direccin de la Letra 0 1 9 A B Z # + tabla en que se almacenan los atributos Cdigo 1 2 10 11 12 36 37 38 39 de dicho identificador. Esta funcin H realiza los clculos por medio de operaciones aritmticas o lgicas con el

Organizacin de T ablas Hash


MTODO DE LA DIVISIN Esta funcin tiene la propiedad de preservar la distribucin uniforme de las claves en el espacio de direcciones. Para un divisor m se define como: H(x) = (x mod m) + 1 Se recomienda que m sea un nmero primo. Debe evitarse que m sea una potencia de 2, pues en este caso la hiptesis de que todas las claves son igualmente probables es errnea.

Mtodos Hash
POSICIONES ALTERNATIVAS Cuando a varias direcciones diferentes se les asigna la misma direccin se dice que ha ocurrido una colisin. Al proceso de generar direcciones alternativas se le llama manejo de colisiones o resolucin de colisiones (collision resolution). MTODO HASH CUADRTICO Este mtodo se basa en multiplicar la clave por s misma y extraer varios dgitos centrales que constituyen la

Mtodos Hash
MTODO DE REDUCCIN Consiste en partir la clave en grupos de dgitos con el mismo nmero de dgitos excepto el ltimo grupo que puede tener un nmero menor. Los distintos grupos de dgitos se suman excepto el ltimo, pudindose dar la vuelta al orden de los dgitos. Por ejemplo, sea la clave 18724965321, si se divide en grupos de tres dgitos, se tiene: 187 249 653 21

Mtodos Hash
MTODO DEPENDIENTE DE LA LONGITUD Utiliza la longitud del nombre de la variable en conjunto con alguna parte del nombre para determinar una direccin de la tabla directamente. En otros casos se calcula una clave intermedia que puede usar. Por ejemplo: sea la variable ID#1, se toma el cdigo decimal del primero y ltimo carcter, se suman y luego se

Manejo de Colisiones
Es el suceso que se produce cuando se asignan dos claves a la misma direccin. Cundo ocurre esto se calcula una direccin alternativa para la segunda clave, llamndose a este proceso manejo de colisiones. Las dos tcnicas ms utilizadas para el manejo de colisiones son: Direccionamiento vaco o hash cerrado Encadenamiento directo o hash abierto

Direccionamiento Vaco o Hash Cerrado


Consiste en buscar en otros lugares de la tabla hasta que se encuentre la variable buscada (caso de operacin de bsqueda) o se llegue a un lugar vaco (en el caso de operacin de insercin significa que no existe y se puede insertar, en el caso de bsqueda se termina la operacin infructuosamente). La forma de buscar otros lugares de la tabla puede hacerse por medio de

Inspeccin Lineal (Linear Probing) mirar el lugar siempre Consiste en

el

siguiente lugar de la tabla hasta encontrar la variable buscada o una posicin vaca. Cuando se llega al final de la tabla se pasa al primer lugar de la tabla y se contina buscando. Si se llega al lugar de partida sin encontrar la variable buscada entonces no est en la tabla. Si no se encuentra espacio para introducirla es que la tabla est llena. La desventaja de que los elementos tienden a agruparse alrededor de las

Inspeccin Lineal (Linear Probing) la inspeccin lineal para Si se utiliza


resolver las colisiones en una tabla con m = 11 se obtiene Nombre Atributos Inspecciones
Identificador Direccin NODE STORAGE AN ADD FUNCTION B BRAND PARAMETER 1 2 3 3 9 9 9 9 A1 A2 A3 A4 NODE STORAGE AN ADD 1 1 1 2 8

A5 PARAMETER A6 A7 A8 A9 A10 FUNCTION B

1 2

Inspeccin Aleatoria
Consiste en generar posiciones aleatorias en vez de las posiciones ordenadas que se generaban en la inspeccin lineal. Se genera m posiciones aleatorias entre 1 y m. La tabla se considera completa cuando se repite el nmero generado. Ntese que la generacin es cclica. R(y) = (y + c) mod n, para todo c y m PESI donde y es la direccin inicial generada

Encadenamiento Directo o Hash Abierto


Este mtodo enlaza todos los identificadores que tienen el mismo ndice primario H(k) en forma de lista. Es decir, se resuelven las colisiones utilizando una lista encadenada que une todos los identificadores que tienen colisin. La implementacin de la lista puede ser en forma dinmica o por medio de otra tabla que se llama rea de desbordamiento (overflow area). A la tabla primaria tambin se le llama

Encadenamiento Directo o Hash Abierto


Encadenamiento directo con tabla de desbordamiento

Haga clic en el icono para agregar una imagen

Encadenamiento Directo o Hash Abierto


Encadenamiento directo con lista enlazada dinmicamente

Haga clic en el icono para agregar una imagen

Lenguajes Estructurados en Bloques

Lenguajes Estructurados en Bloques

Se entiende por lenguaje estructurado en bloques a todo lenguaje con estructura de bloques o mdulos que a su vez puede contener submdulos anidados y de manera que cada submdulo pueda contener un conjunto de identificadores con mbito local. Un identificador declarado dentro de un mdulo A es accesible dentro del mdulo a no ser que el mismo nombre del identificador se redefina dentro del

Lenguajes Estructurados en Bloques La tabla siguiente muestra las variables activas en


la tabla de smbolos, as como las inactivas, en el instante anterior a la ejecucin de las sentencias set y reset para el ejemplo anterior.
Operacin Set BLK1 Set BLK2 M1, NAME, X, Y Reset BLK2 X , IND, M1, NAME, X, Y Set BLK3 M2, M1, NAME, X, Y Set BLK4 J, M2, M1, NAME, X, Y Reset BLK4 X, IND X, IND Contenidos de la Tabla de Smbolos (slo nombre) Activas Inactivas

TEST1, F, J, M2, M1, NAME, X, IND X, Y TEST1, F, X, IND Reset BLK3 J, M2, M1, NAME, X, Y J, M2, M1, NAME, X, Y, Reset BLK1 TEST1, F, X,IND

T abla de Smbolos en la Pila


Tabla de smbolos en el momento de terminar la compilacin del bloque 2

Haga clic en el icono para agregar una imagen

T abla de Smbolos en la Pila (Continuacin)


Tabla de smbolos en el momento de terminar la compilacin del bloque 4

Haga clic en el icono para agregar una imagen

T abla de smbolos con estructuras de rbol implementadas en Pilas


Se pueden organizar de dos formas: La primera ya se estudi en el apartado TS con estructura en rbol (AVL) y la nica diferencia est en el borrado o eliminacin de los registros al finalizar cada bloque. Esto es un gran problema pues todos los registros estn mezclados en un mismo rbol y los pasos necesarios para borrar un registro son: Localizar la posicin del registro en la tabla. Sacar el registro y cambiar los punteros de las ramas del rbol necesarias. Reequilibrar el rbol. La segunda, se podra llamar bosque, en ella cada bloque se organiza como una tabla estructurada en rbol y se elimina dicho rbol cuando se finaliza el bloque. A continuacin se muestran las figuras representativas de este tipo de organizacin para el ejemplo de programa de los apartados anteriores.

T abla de Smbolos con Estructuras de rbol Implementadas en Pilas


Tabla de smbolos con estructura de rbol implementada en pila despus de la compilacin del bloque 2

Haga clic en el icono para agregar una imagen

T abla de Smbolos con Estructuras de rbol Implementadas en Pilas (Continuacin)


Tabla de smbolos con estructura de rbol implementada en pila despus de la compilacin del bloque 4

Haga clic en el icono para agregar una imagen

T abla de Smbolos con Estructura Hash Implementadas enimposible utilizar A primera vista parece Pilas
transformaciones de claves para lenguajes estructurados en bloques, pues las variables de un bloque deben de estar agrupadas y las funciones hash no preservan ningn orden. En este apartado se utilizarn funciones hash que usan la tcnica de hash abierto para resolver los problemas de colisiones, por ser en general ms ventajoso tal como se estudi

T abla de Smbolos con Estructura Hash Nombre del Identificador Direccin Implementadas en Pilas1 X
M1 NAME IND J TEST1 F Y M2 1 3 5 5 6 8 8 11

Se utiliza un array de punteros de tamao 11 como se puede ver en la Figura siguiente.

T abla de Smbolos con Estructura Hash Implementadas en Pilas


Tabla de smbolos con estructura hash implementada en pila despus de la compilacin del bloque 2

Haga clic en el icono para agregar una imagen

T abla de Smbolos con Estructura Hash Implementadas en Pilas (Continuacin)


Tabla de smbolos con estructura hash implementada en pila en el momento anterior a la terminacin de la compilacin del bloque 4

Haga clic en el icono para agregar una imagen

Esquema General de Pilas de T ablas Hash Abiertas


Un esquema general de pilas de tablas hash abiertas se muestra en la figura. Este tipo de esquema tiene una ocupacin de memoria mayor, pero es ms sencillo de implementar

Haga clic en el icono para agregar una imagen

Tablas de Smbolos OO en Compiladores de una Pasada

Representacin OO de Smbolos y Tipos en Compiladores de Una Pasada Hay dos lenguajes implicados que
pueden ser orientados a objetos: El lenguaje a compilar El lenguaje de implementacin del compilador

La Doble Jerarqua Smbolo-Tipo


Smbolos, que son todos aquellos identificadores que representan variables locales, atributos, campos de un registro, parmetros de un mtodo, etc. Tipos, que son todos los identificadores que representan tipos del lenguaje, entendidos aqu los tipos en un sentido amplio, esto es comprendiendo clases cuando se habla de lenguajes OO. As pues el esquema de la tabla de

La Doble Jerarqua Smbolo-Tipo


Tabla de smbolos, que sirve para guardar una referencia a todos los smbolos que pueden ser accedidos desde el entorno actual.
TablaSimbolos insert() search() set() reset()

Tabla de tipos, que es la que guarda la estructura de tipos definida en el programa fuente: las clases, las interfaces, los tipos bsicos, TablaTipos etc. insert()
search()

La Jerarqua de Smbolos
Describe todos los posibles smbolos que pueden aparecer en el cdigo fuente. A partir de la tabla de smbolos se accede a estos smbolos. Cada smbolo tiene tipo y debe poderse acceder a dicho tipo a travs del smbolo. El mtodo de acceso puede ser representado como en este caso por una agregacin.

Jerarqua de Smbolos
Diagrama de clases UML de la jerarqua de smbolos

Haga clic en el icono para agregar una imagen


TablaSimbolos insert() search() set() reset()
nombre

Simbolo nombre : String direccion : String getTipo() : Tipo getNombre() : String getDireccion() : String
+tiene tipo

Tipo

VariableLocal

Parametro

Campo

Propiedad

Atributo

Jerarqua de Smbolos
Versin simplificada de la jerarqua de smbolos

Haga clic en el icono para agregar una TablaSimbolos insert() imagen search()
set() reset()
nombre

SimboloGenerico nombre : String direccion : String getTipo() : Tipo getNombre() : String getDireccion() : String
+tiene tipo

Tipo

La Jerarqua de Tipos
Tenemos una jerarqua de tipos donde pueden estar todos los tipos bsicos del lenguaje y los tipos definidos por el usuario (con typedef, clases, etc.). En el momento en que el cdigo comienza a describir clases, arrays, mtodos, interfaces, etc. Va creando los nuevos tipos y metindolos en la tabla.

Jerarqua de Tipos
Jerarqua y tabla de tipos

Haga clic en el icono para agregar una imagen


TablaSim bolos
nom bre

TablaTipos

insert() : void search() : Tipo


nom bre

Sim bolo

+ tiene

tipo + atributo

Tipo
+ cam po

Constructor

Arreglo
+ tipo

Cla se

n + extiende n

Interfaz
nom bre

n + extiende n

Funcion
nom bre

Registro
nom bre

Puntero
+ tipo

nom bre nom bre + contiene

+ contiene

+ contiene

+ etodo m + etodo m + contiene

+ contiene + valor retorno

Atributos acceso : Integer estatico : Boolean getAcceso() : Integer esEstatico() : Boolean

Jerarqua de Tipos
La clase contiene mtodos y atributos

Haga clic en +atributo Tipo para agregar una el icono imagen


+contiene nombre

Clase
nombre +contiene

n +extiende n +metodo

Funcion
+valor retorno posicion

+contiene

Jerarqua de Tipos
Relacin cualificada y atribuida para determinar el componente de la clase y los atributos.

Haga clic en el icono para agregar una imagenAtributos +atributo


Tipo acceso : Integer estatico : Boolean getAcceso() esEstatico()

+contiene nombre

Clase

n +extiende n

Jerarqua de Tipos
La herencia se implementa mediante interfaces y clases de manera que las interfaces pueden heredar entre ellas y las clases pueden heredar de otras clases o implementar interfaces.

Haga clic en el icono para agregar una imagen

Clase
n

+extiende n

Interfaz +extiende
n n

Esquema General de la T abla de Smbolos


Esquema general de una tabla de smbolos con las dos jerarquas diferenciadas.

Haga clic en el icono para agregar una imagen

En los siguientes prrafos se muestra el trozo de cdigo que se desea compilar para ver 17: smbolos. 1: forward funciona su tabla depublic class TabSimb como class TabSimb
2: { 3: public int procesa (int k); 4: public static void main (); 5: } 6: 7: class TSdos 8: { 9: private static int r; 10: 11: public static void m (TabSimb ts, int g) 12: { 13: ts.procesa(g); 14: } 15: } 16: 18: { 19: double p; 20: 21: public int procesa (int k) 22: { 23: int m; 24: double d = k * m; 25: p = 2 * d; 26: return d; 27: } 28: 29: public static void main () 30: { 31: TabSimb t = new TabSimb(); 32: TSdos.m(ts,7); 33: } 34: }

Funcionamiento y Acceso a la TS

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Tabla de smbolos simplificada para el ejemplo

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Situacin inicial de la tabla de smbolos

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Situacin compilando en la lnea 4

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Situacin despus de compilar la lnea 9

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Situacin de la Tabla de Smbolos despus de compilada la lnea 11

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Estado de la tabla de smbolos despus de compilada la lnea 15

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Estado de la tabla de smbolos despus de compilar la lnea 19

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Estado de la tabla de smbolos al compilar la lnea 25

Haga clic en el icono para agregar una imagen

Ejemplo de Funcionamiento y Acceso a la T abla de Smbolos


Estado de la tabla de smbolos despus de compilada la lnea 31

Haga clic en el icono para agregar una imagen

Tablas de Smbolos OO en Compiladores de Varias Pasadas

Modelos de Descripcin sobre el AST


Ejemplo
int i; float f; main() { int f; read f; i = f;

Modelos de Descripcin sobre el AST


AST del cdigo del ejemplo

Haga clic en el icono para agregar una imagen

Modelos de Descripcin sobre el AST


Insertar una declaracin y referenciar un identificador

Haga clic en el icono para agregar una imagen

Modelos de Descripcin sobre el AST


Estructura AST-TS resultante una vez terminada la visita de identificacin

Haga clic en el icono para agregar una imagen

Modelos de Descripcin sobre el AST


rbol AST decorado resultante de la primera pasada del visitor

Tipos de Usuario
1: struct Concepto { 2: 3: 4: 5: }; 6: 7: main() { 8: int i; int cantidad; String descrip; float precio;

Tipos de Usuario
rbol AST generado por el analizador sintctico para el ejemplo

Haga clic en el icono para agregar una imagen

Tipos de Usuario
Insercin del tipo Struct

Haga clic en el icono para agregar una imagen

Tipos de Usuario
Referencias de declaracin y tipo en el rbol AST para el tipo Struct

Haga clic en el icono para agregar una imagen

Tipos de Usuario
Declaracin de arreglos

Haga clic en el icono para agregar una imagen

Declaraciones Forward
Declaracin de prototipos

El segundo vuelve a recorrer el rbol introduciendo el resto de elementos. El

Pasada previa para reconocer prototipos

También podría gustarte