Sunteți pe pagina 1din 23

UNIDAD 4.- ANÁLISIS LÉXICO.

El Análisis Léxico es la primera fase de un compilador y consiste en un programa


que recibe como entrada el código fuente de otro programa (secuencia de
caracteres) y produce una salida compuesta de tokens (componentes léxicos) o
símbolos. Estos tokens sirven para una posterior etapa del proceso de traducción,
siendo la entrada para el Análisis Sintáctico.

La especificación de un lenguaje de programación a menudo incluye un conjunto de


reglas que definen el léxico. Estas reglas consisten comúnmente en expresiones
regulares que indican el conjunto de posibles secuencias de caracteres que definen
un token o lexema.

En algunos lenguajes de programación es necesario establecer patrones para


caracteres especiales (como el espacio en blanco) que la gramática pueda
reconocer sin que constituya un token en sí.

Función del Analizador Léxico

Su principal función consiste en leer los caracteres de entrada y elaborar como


salida una secuencia de componentes léxicos que utiliza el analizador sintáctico
para hacer el análisis. En la figura 1 se puede apreciar el esquema de una
interacción que se aplica convirtiendo el analizador léxico en una subrutina o
corrutina del analizador sintáctico. Recibida la orden "obtener el siguiente
componente léxico" del analizador sintáctico, el analizador léxico lee los caracteres
de entrada hasta que pueda identificar el siguiente componente léxico.
Figura 1. Interacción de un analizador léxico con el analizador sintáctico

Proyecto de aula - Construcción de un Analizador Léxico

Se requiere construir un analizador léxico en lenguaje Java bajo los


requerimientos que se explican en este documento. En este segmento se
documentarán los resultados obtenidos para esta práctica.

El programa requiere de una tabla inicial de símbolos que serán precargados en el


sistema, para los cuales se utilizaron los siguientes símbolos:
Figura 2. Tabla de Símbolos inicial

Para esta tabla de símbolos se utilizó la estructura de datos Lista, que en Java se
representa mediante un java.util.ArrayList. Dentro de la lista se almacenarán los
símbolos, que dentro del programa son objetos de una clase del programa que se
llama compilador.simbolos.Simbolo. la clase Simbolo.java tiene tres atributos:

 token: tipo de dato java.lang.String que almacena la representación de un


token o componente léxico reconocido dentro del sistema.
 lexema: tipo de dato java.lang.String que almacena el lexema asociado al
token reconocido.
 palabraReservada: tipo de dato java.lang.Boolean que indica si el token
almacenado es o no una palabra reservada.

Para la obtención de los AFN y AFD se implementó una clase llamada


analizador.lexico.Automatas, donde se implementan los siguientes métodos para
reconocer autómatas:

 isIdentificador(String): recibe como parámetro una cadena de caracteres


(java.lang.String) y analiza si dicha cadena reconoce o no un id.
 isNumero(String): recibe como parámetro una cadena de caracteres
(java.lang.String) y analiza si dicha cadena reconoce un número.
 isReal(String): recibe como parámetro una cadena de caracteres
(java.lang.String) y analiza si dicha cadena reconoce un número real.

El analizador léxico tiene un componente llamado analizador.lexico.Lexico, donde


obtiene las líneas del archivo leído y las analiza comparándolas con la tabla de
símbolos. Si no existen en la tabla de símbolos determina por medio de la clase
analizador.lexico.Automatas si es o no un id, número o real.

Para ésto, esta clase tiene los siguientes métodos:

 analizarLinea(String): recibe como parámetro una cadena de caracteres


(java.lang.String) que representa una línea y para cada caracter de dicha
línea analiza el lexema que representa. Al final arma un log con el que se
creará el archivo de salida.
 analizarLexema(String): recibe como parámetro una cadena de caracteres
(java.lang.String) que representa un lexema y determina si la línea
corresponde a una palabra reservada de la tabla de símbolos o un id.

El proyecto se realizó implementando el patrón de diseño Modelo Vista Controlador


(MVC), de lo cual se destaca en el componente visual los siguientes elementos:

 gui.IndexCompilador.java: Interfaz principal del programa (Figura 3), que


compone de dos áreas de texto (javax.swing.TextArea) donde se mostrará
el contenido del archivo fuente de entrada y la salida generada posterior al
análisis del archivo fuente.
 gui.VentanaSimbolos.java: Ventana emergente (Figura 4) donde se
cargará inicialmente la tabla de símbolos inicial vista en la figura 2. Al final
mostrará la tabla de símbolos actualizada con los identificadores hallados
posterior al análisis.
Figura 3. Interfaz Principal del Analizador Léxico.

Figura 4. Tabla de símbolos del sistema.

El sistema permite la carga de un archivo (texto.txt) con el fuente de un programa


realizado para el analizador léxico y que se encuentra dentro de las entradas del
proyecto (Ver documento de requisitos del analizador léxico). Al dar clic sobre el
botón Analizar realiza el reconocimiento de autómatas línea a línea del archivo
fuente cargado. Al final genera una salida indicando cuáles caracteres son palabras
reservadas del sistema y cuáles son identificadores, genera un archivo de salida
con la información de la salida generada y que se usará posteriormente en el
analizador sintáctico, y por último actualiza la tabla de símbolos con los
identificadores hallados en el proceso.

Se adjunta en este sitio el código fuente en un archivo de texto, el programa


compilado en un Jar Runnable y el archivo fuente de entrada.

Anotaciones especiales

El Jar Runnable generado ejecuta correctamente en las plataformas Windows (XP


SP3, 7, 8 y 8.1), siempre y cuando tenga el JDK 7 o superior instalado en el
computador cliente donde se va a ejecutar.

Es necesario utilizar el archivo fuente adjunto a este sitio (texto.txt). Si desea puede
armar un archivo nuevo, siempre y cuando use los símbolos que están
parametrizados en la tabla inicial de símbolos (Figuras 2 y 4).

El archivo de salida que genera (salida.txt) se genera en el mismo directorio donde


se encuentre el archivo fuente de entrada.

El código fuente se distribuye en un solo archivo de texto (AnalizadorLexico.txt).


Si quiere ver el funcionamiento de las clases y del programa en sí deberá armarlo
usted mismo en el entorno de desarrollo (recomendable usar Eclipse) respetando
la estructura de clases y paquetes.

4.1 FUNCIONES DEL ANALIZADOR LÉXICO.


Leer los caracteres de entrada y elaborar como salida una secuencia de
componentes léxicos que utiliza el analizador sintáctico para hacer el análisis.

El analizador léxico es la primera fase de un compilador.


Su principal función consiste en leer los caracteres de entrada y elaborar como
salida una secuencia de componentes léxicos que utiliza el analizador sintáctico
para hacer el análisis. Esta interacción, suele aplicarse convirtiendo al analizador
léxico en una subrutina o corrutina del analizador sintáctico. Recibida la orden
"obtén el siguiente componente léxico" del analizador sintáctico, el analizador léxico
lee los caracteres de entrada hasta que pueda identificar el siguiente componente
léxico.

Funciones secundarias.

Como el analizador léxico es .la parte del compilador que lee el texto fuente.
También puede realizar ciertas funciones secundarias en la interfaz del usuario,
como eliminar del programa fuente comentarios y espacios en blanco en forma de
caracteres de espacio en blanco, caracteres TAB y de línea nueva. Otra función es
relacionar os mensajes de error del compilador con el programa fuente. Por ejemplo,
el analizador léxico puede tener localizado el número de caracteres de nueva línea
detectados, de modo que se pueda asociar un número de línea con un mensaje de
error.

En algunos compiladores, el analizador léxico se encarga de hacer una copia del


programa fuente en el que están marcados los mensajes de error. Si el lenguaje
fuente es la base de algunas funciones de pre procesamiento de macros, entonces
esas funciones del preprocesador también se pueden aplicar al hacer el análisis
léxico.

4.2 COMPONENTES LÉXICOS, PATRONES Y LEXEMAS.


Un token es un par que consiste en un nombre de token y un valor de atributo
opcional. El nombre del token es un símbolo abstracto que representa un tipo de
unidad léxica; por ejemplo, una palabra clave específica o una secuencia de
caracteres de entrada que denotan un identificador. Los nombres de los tokens son
los símbolos de entrada que procesa el analizador sin táctico. A partir de este
momento, en general escribiremos el nombre de un token en negrita. Con frecuencia
nos referiremos a un token por su nombre.

• Un patrón es una descripción de la forma que pueden tomar los lexemas de un


token. En el caso de una palabra clave como token, e l patrón es sólo la secuencia
de caracteres que forman la palabra clave. Para los identificadores y algunos otros
tokens, el patrón es una estructura más compleja que se relaciona mediante muchas
cadenas.

• Un lexema es una secuencia de caracteres en el programa fuente, que coinciden


con el patrón para un token y que el analizador léxico identifica como una instancia
de ese token.

4.3 CREACIÓN DE TABLA DE TOKENS.

Tabla: conjunto de pares clave-valor, llamados elementos de la tabla. La tabla de


símbolos es una componente necesaria de un compilador. Al declarar un
identificador (normalmente una sola vez), éste es insertado en la tabla. Cada vez
que se utilice el identificador se realizará una búsqueda en la tabla para obtener la
información asociada (el valor).

 Búsqueda: dada la clave de un elemento, encontrar su valor.


 Inserción: Dado un par clave-valor, añadir un elemento nuevo a la tabla.
 Cambio de valor: Buscar el elemento y cambiar su valor.
 Borrado: Eliminar un elemento de la tabla.
 Longitud de búsqueda (o tiempo de acceso)

De una clave: Li = número de comparaciones con elementos de la tabla para


encontrar esa clave. Máxima: LM = número máximo de comparaciones para
encontrar cualquier clave. Media (esperada): Lm = número medio de comparaciones
para encontrar un valor.

Si la frecuencia de todas las claves es la misma:

Lm = (S Li)/N
Si la frecuencia de todas las claves no es la misma:

Lm = S pi.Li

Grado de ocupación:

s = n/N donde n=número de elementos en la tabla y N=capacidad máxima de la


tabla.

Función de búsqueda: B : K→E asocia a cada clave k un elemento B(k).

Valor asociado a una clave k: v(B(k)). Puede ser múltiple, en cuyo caso
normalmente se convierte en un puntero. Si está en la tabla puede almacenarse
consecutivamente o en subtablas paralelas. Tablas de símbolos (identificadores) La
clave es el identificador. El valor está formado por:

 Atributos del identificador. Puntero a la posición de memoria asignada. La


clave puede sustituirse por un puntero. Los identificadores pueden estar
empaquetados. La longitud del identificador puede especificarse en la tabla
o delante del nombre, o ser implícita.

 Tablas consecutivas: Todos los elementos ocupan posiciones de memoria


adyacentes. Tablas ligadas: cada elemento apunta al siguiente. Tablas
doblemente ligadas: cada elemento apunta al siguiente y al anterior. Tablas
no ordenadas Inserción: en el primer lugar vacío.

4.4 ERRORES LÉXICOS.

El análisis léxico constituye la primera fase, aquí se lee el programa fuente de


izquierda a derecha y se agrupa en componentes léxicos (tokens), que son
secuencias de caracteres que tienen un significado. Además, todos los espacios en
blanco, líneas en blanco, comentarios y demás información innecesaria se elimina
del programa fuente. También se comprueba que los símbolos del lenguaje
(palabras clave, operadores,…) se han escrito correctamente.

Como la tarea que realiza el analizador léxico es un caso especial de coincidencia


de patrones, se necesitan los métodos de especificación y reconocimiento de
patrones, y estos métodos son principalmente las expresiones regulares y los
autómatas finitos. Sin embargo, un analizador léxico también es la parte del
traductor que maneja la entrada del código fuente, y puesto que esta entrada a
menudo involucra un importante gasto de tiempo, el analizador léxico debe
funcionar de manera tan eficiente como sea posible.

Son pocos los errores simplemente en el nivel léxico ya que tiene una visión muy
restringida de un programa fuente. El analizador léxico debe devolver el
componente léxico de un identificador y dejar a otra fase se ocupe de los errores.

Suponga que una situación en la cual el analizador léxico no puede continuar


porque ninguno de los patrones concuerda con un prefijo de la entrada. Tal vez la
estrategia de recuperación más sencilla sea recuperación “EN MODO PANICO”
(este método de recuperación es donde se borra caracteres sucesivos de la entrada
hasta que el analizador léxico pueda encontrar un componente léxico bien formado).
¡¡Los programas no siempre son correctos!!

El compilador tiene que:

 Reportar clara y exactamente la presencia de errores


 Recuperarse de cada error lo suficientemente rápido para poder detectar
errores subsiguientes:
 Tratar de evitar mensajes falsos de error.
 Un error que produce un token erróneo.
 Errores léxicos posibles.
Un token o componente léxico es una cadena de caracteres que tiene un significado
coherente en cierto lenguaje de programación. Ejemplos de tokens, podrían ser
palabras clave (if, while, int), identificadores, números, signos, o un operador de
varios caracteres. Son los elementos más básicos sobre los cuales se desarrolla
toda traducción de un programa, surgen en la primera fase, llamada análisis léxico.

4.5 GENERADORES DE ANALIZADORES LÉXICOS.

Se pueden usar varias técnicas para acelerar el algoritmo y ahorrar espacio

Las etiquetas pueden guardarse mediante dispersión para producir un sistema de


firmas que acelere sus búsquedas

Como las tablas de transiciones son muy escasas, se pueden guardar en una lista
corta que se consulte cada vez que se necesite hacer una transición a partir de un
estado.

4.6 APLICACIONES (CASO DE ESTUDIO).

Además de para construir compiladores e intérpretes, los analizadores léxicos se


pueden emplear para muchos programas \convencionales”. Los ejemplos más
claros son aquellos programas que tienen algún tipo de entrada de texto donde hay
un formato razonablemente libre en cuantos espacios y comentarios. En estos
casos es bastante engorroso controlar donde empieza y termina cada componente
y es fácil liarse con los punteros a char. Un analizador léxico simplifica notablemente
la interfaz y si se dispone de un generador automático, el problema se resuelve en
pocas líneas de código.

Funciones del analizador léxico.

Un analizador léxico aísla el analizador sintáctico de la representación de lexemas


de los componentes léxicos.
El analizador léxico opera bajo petición del analizador sintáctico devolviendo un
componente léxico conforme el analizador sintáctico lo va necesitando para avanzar
en la gramática. Los componentes léxicos son los símbolos terminales de la
gramática.

Suele implementarse como una subrutina del analizador sintáctico. Cuando recibe
la orden obtén el siguiente componente léxico, el analizador léxico lee los caracteres
de entrada hasta identificar el siguiente componente léxico.

Definiciones.
Tokens:

Símbolos terminales de una gramática

o Identificadores, palabras reservadas, operadores,…

o Varios signos pueden forman el mismo token

Atributos:

Información adicional que tiene el token, de utilidad para el análisis sintáctico y


semántico.

Componentes léxicos (tokens):

unidad mínima de información que significa algo a la hora de compilar; concepto de


palabra; las fases de un lenguaje constan de cadenas de componentes léxicos.

Lexema:

Una secuencia de caracteres de entrada que comprenden un solo componente


léxico se llama lexema; cadena de caracteres que extrae el componente abstracto
del componente léxico.

Patrón:
Descripción de la forma que han de tomarlos lexemas para ajustarse a un
componente léxico.

Ejemplo:

Otras Funciones:

Manejo del fichero de entrada del programa fuente: abrirlo, leer sus caracteres,
cerrarlo y gestionar posibles errores de lectura.

Eliminar comentarios, espacios en blanco, tabuladores y saltos de línea (caracteres


no validos para formar un token).

Inclusión de ficheros: # include…

La expansión de macros y funciones in line: # define…

Contabilizar el número de líneas y columnas para emitir mensajes de error.

Reconocimiento y ejecución de las directivas de compilación (por ejemplo, para


depurar u optimizar el código fuente).

Aspectos del Análisis Léxico.

Diseño más sencillo:

Los símbolos que trata el scanner se describe con una gramática más simple que
la del parser, gramática regular

Mejora la eficiencia:

Gran parte del tiempo de compilación se consume en la lectura y exploración de


caracteres
Mejora la portabilidad:

Se pueden tener varias versiones del scanner una para distintos códigos (EBCDID,
ASCII, …), con el mismo parser

Descarga el análisis sintáctico:

Ejemplo; no puedo distinguir en FORTRAN hasta después del 1

o DO 5 I=1.25

o DO 5 I=1,25

5.2 Componentes léxicos, patrones y lexemas.

Componente léxico (token).

Son las unidades lógicas que genera el analizador léxico. Formar caracteres en
tokens es muy parecido a formar palabras en un lenguaje natural

Es el conjunto de cadenas de entrada que produce como salida el mismo


componente léxico. Cada token es una secuencia de caracteres que representa una
unidad de información en el programa fuente. Los componentes léxicos más
comunes son los siguientes: palabras clave o reservadas:

operadores aritméticos

operadores

relacionales

operadores lógicos

operador de asignación

identificadores
constantes

cadenas

literales

signos de puntuación

librerías

Lexema:

Representan cadenas de caracteres en el programa fuente que se pueden tratar


juntos como una unidad léxica. Un lexema es una secuencia de caracteres en el
programa fuente con la que concuerda el patrón para un componente léxico.

Patrón:

Regla que describe el conjunto de lexemas que pueden representar a un


determinado componente léxico en los programas fuente. En otras palabras, es la
descripción del componente léxico mediante una regla.

Atributos de los componentes léxicos:

El analizador léxico recoge información sobre los componentes léxicos en sus


atributos asociados. Los componentes léxicos influyen en las decisiones del análisis
sintáctico y los atributos en la traducción de los componentes léxicos:

Apuntador a la entrada de la Tabla de símbolos donde se guarda la información


sobre el componente léxico.

El lexema para un identificador

El número de línea en que se encontró por primera vez.

Creación de Tabla de tokens.


Tabla: conjunto de pares clave-valor, llamados elementos de la tabla. La tabla de
símbolos es una componente necesaria de un compilador. Al declarar un
identificador (normalmente una sola vez), éste es insertado en la tabla. Cada vez
que se utilice el identificador se realizará una búsqueda en la tabla para obtener la
información asociada (el valor).

Búsqueda: dada la clave de un elemento, encontrar su valor.

Inserción: Dado un par clave-valor, añadir un elemento nuevo a la tabla.

Cambio de valor: Buscar el elemento y cambiar su valor.

Borrado: Eliminar un elemento de la tabla.

Longitud de búsqueda (o tiempo de acceso)

De una clave: Li = número de comparaciones con elementos de la tabla para


encontrar esa clave. Máxima: LM = número máximo de comparaciones para
encontrar cualquier clave. Media (esperada): Lm = número medio de comparaciones
para encontrar un valor. Si la frecuencia de todas las claves es la misma:

Lm = (S Li)/N

Si la frecuencia de todas las claves no es la misma:

Lm = S pi.Li

Grado de ocupación:

s = n/N donde n=número de elementos en la tabla y N=capacidad máxima de la


tabla.

Función de búsqueda: B : K→E asocia a cada clave k un elemento B(k).


Valor asociado a una clave k: v(B(k)). Puede ser múltiple, en cuyo caso
normalmente se convierte en un puntero. Si está en la tabla puede almacenarse
consecutivamente o en subtablas paralelas. Tablas de símbolos (identificadores) La
clave es el identificador. El valor está formado por:

Atributos del identificador. Puntero a la posición de memoria asignada. La clave


puede sustituirse por un puntero. Los identificadores pueden estar empaquetados.
La longitud del identificador puede especificarse en la tabla o delante del nombre, o
ser implícita.

Tablas consecutivas: Todos los elementos ocupan posiciones de memoria


adyacentes. Tablas ligadas: cada elemento apunta al siguiente. Tablas doblemente
ligadas: cada elemento apunta al siguiente y al anterior. Tablas no ordenadas
Inserción: en el primer lugar vacío.

Errores léxicos

El análisis léxico constituye la primera fase, aquí se lee el programa fuente de


izquierda a derecha y se agrupa en componentes léxicos (tokens), que son
secuencias de caracteres que tienen un significado. Además, todos los espacios en
blanco, líneas en blanco, comentarios y demás información innecesaria se elimina
del programa fuente. También se comprueba que los símbolos del lenguaje
(palabras clave, operadores,…) se han escrito correctamente.

Como la tarea que realiza el analizador léxico es un caso especial de coincidencia


de patrones, se necesitan los métodos de especificación y reconocimiento de
patrones, y estos métodos son principalmente las expresiones regulares y los
autómatas finitos. Sin embargo, un analizador léxico también es la parte del
traductor que maneja la entrada del código fuente, y puesto que esta entrada a
menudo involucra un importante gasto de tiempo, el analizador léxico debe
funcionar de manera tan eficiente como sea posible.
Son pocos los errores simplemente en el nivel léxico ya que tiene una visión muy
restringida de un programa fuente. El analizador léxico debe devolver el
componente léxico de un identificador y dejar a otra fase se ocupe de los errores.

Suponga que una situación en la cual el analizador léxico no puede continuar porque
ninguno de los patrones concuerda con un prefijo de la entrada. Tal vez la estrategia
de recuperación más sencilla sea recuperación “EN MODO PANICO” (este método
de recuperación es donde se borra caracteres sucesivos de la entrada hasta que el
analizador léxico pueda encontrar un componente léxico bien formado). ¡¡Los
programas no siempre son correctos!!

El compilador tiene que:

Reportar clara y exactamente la presencia de errores

Recuperarse de cada error lo suficientemente rápido para poder detectar errores


subsiguientes:

 Tratar de evitar mensajes falsos de error


 Un error que produce un token erróneo
 Errores léxicos posibles

Un token o componente léxico es una cadena de caracteres que tiene un significado


coherente en cierto lenguaje de programación. Ejemplos de tokens, podrían ser
palabras clave (if, while, int), identificadores, números, signos, o un operador de
varios caracteres. Son los elementos más básicos sobre los cuales se desarrolla
toda traducción de un programa, surgen en la primera fase, llamada análisis léxico.

Generadores de analizadores Léxicos

Se pueden usar varias técnicas para acelerar el algoritmo y ahorrar espacio


Las etiquetas pueden guardarse mediante dispersión para producir un sistema de
firmas que acelere sus búsquedas Como las tablas de transiciones son muy
escasas, se pueden guardar en una lista corta que se consulte cada vez que se
necesite hacer una transición a partir de un estado

Estas listas no suelen tener más de tres o cuatro elementos, así que su búsqueda
será razonablemente rápida

Tabla de símbolos
Su creación, procedimiento, pasos e instrucciones.
CREACIÓN DE LA TABLA DE SIMBOLOS
La tabla de símbolos es una estructura de datos muy importante en CASI
todo el proceso de compilación. En ella se guarda durante las primeras fases de
compilación los nombres de los identificadores (símbolos) usados en el programa
fuente, además de los atributos de cada uno de estos identificadores. Estos
identificadores y símbolos junto con sus atributos serán usados posteriormente para
realizar funciones como el chequeo de tipos, la asignación de memoria, generación
de código objeto etc.

Un compilador necesita guardar y usar la información de los objetos que se va


encontrando en el texto fuente, como variables, etiquetas, declaraciones de tipos,
etc.

Esta información se almacena en una estructura de datos interna conocida como


tabla de símbolos.

TABLA DE SIMBOLOS
Contenido de la tabla de símbolos.

Identificadores
Tipos de datos
Palabras reservadas
Sentencias o instrucciones
Comentarios
Expresiones
Operaciones

Esencialmente la información que aparece en la tabla de símbolos es de dos tipos:

· El propio símbolo, y

· Los atributos necesarios para definir el símbolo a nivel semántico y de generación


de código.

Operaciones sobre la tabla de símbolos.

· INSERTAR
· CONSULTAR
· MODIFICAR (añadir atributos nuevos)

El CUANDO y el CÓMO se usan estas operaciones dependen del tipo de lenguaje:

Lenguajes con DECLARACIONES DE VARIABLES:

· Explícitas:
ü Declaraciones: sólo INSERTAR.
ü Referencia: sólo CONSULTAR.
· Implícitas:
ü CONSULTAR si no está ya incluida.
ü INSERTAR, en caso contrario.
ü Lenguajes con estructura de BLOQUE: CREAR SUBTABLAS

• Operadores relacionales: <, <=, >, >=, == y !=.

• Operadores de operaciones con bits:


<< Corrimiento a la izquierda.
>> Corrimiento a la derecha.
& And
| Or
^ Xor

• Operadores Lógicos:
&& And
|| Or
! Not

OPERADORES DE ASIGNACIÓN
= Asignación.
*= Asignación de producto.
/= Asignación de cociente.
%= Asignación de residuo.
+= Asignación de suma.
-= Asignación de diferencia.
<<= Asignación de corrimiento a la izquierda.
>>= Asignación de corrimiento a la derecha.
&= Asignación de And de bits.
^= Asignación de Xor de bits.
|= Asignación de Or de bits.
OPERADORES DE PERTENENCIA A CLASES

:: Resolución de área de visualización de clases.


.y* Apuntadores de referencia de un apuntador a un miembro de una
clase.
-> y * Apuntadores de referencia a apuntadores de un miembro de una clase.

Analizador Lexico
https://sites.google.com/site/compiladoresesilval/home/compiladores/analisi
s-lexico

Analizador Sintáctico (Siguente Unidad)


https://sites.google.com/site/compiladoresesilval/home/compiladores/analisi
s

S-ar putea să vă placă și