6
UNIVERSIDAD AUTÓNOMA DE TLAXCALA. FACULTAD DE CIENCIAS BÁSICAS, INGENIERÍA Y TECNOLOGÍA ANALIZADOR LÉXICO PROYECTO PRESENTADO POR: DAVID ACOLTZI CUATECONTZI ANJELLO CANO CONDE. ANDRÉS VILLEGAS RODRÍGUEZ. IVÁN LÓPEZ RAFAEL. JUAN ALBERTO JUÁREZ AYAPANTECATL. ERNESTO SERRANO MARTÍNEZ. ARTURO ESPINOSA HERNÁNDEZ. 2012

Analizador léxico

Embed Size (px)

Citation preview

Page 1: Analizador léxico

UNIVERSIDAD AUTÓNOMA DE TLAXCALA.

FACULTAD DE CIENCIAS BÁSICAS, INGENIERÍA Y TECNOLOGÍA

ANALIZADOR LÉXICO

PROYECTO PRESENTADO POR:

DAVID ACOLTZI CUATECONTZI

ANJELLO CANO CONDE.

ANDRÉS VILLEGAS RODRÍGUEZ.

IVÁN LÓPEZ RAFAEL.

JUAN ALBERTO JUÁREZ AYAPANTECATL.

ERNESTO SERRANO MARTÍNEZ.

ARTURO ESPINOSA HERNÁNDEZ.

2012

Page 2: Analizador léxico

Contenido Analizador léxico. ............................................................................................................................. 3

Analizador sintáctico (parser). ................................................................................................... 3

Derivaciones .................................................................................................................................. 3

Función de la aplicación: ................................................................................................................. 4

Ejemplo 1: .......................................................................................................................................... 4

Ejemplo 2: .......................................................................................................................................... 5

Page 3: Analizador léxico

Analizador léxico.

Analizador léxico (scanner): lee la secuencia de caracteres del programa fuente, caracter a

caracter, y los agrupa para formar unidades con significado propio, los componentes léxicos

(tokens en inglés). Estos componentes léxicos representan:

Palabras reservadas: if, while, do, . . .

Identificadores: asociados a variables, nombres de funciones, tipos definidos por el

usuario, etiquetas,... Por ejemplo: posición, velocidad, tiempo, . . .

Operadores: = * + - / == > < & ! = . . .

Símbolos especiales: ; ( ) [ ] f g ...

Constantes numéricas: literales que representan valores enteros, en coma flotante,

etc, 982, 0xF678, -83.2E+2,...

Constantes de caracteres: literales que representan cadenas concretas de caracteres,

“hola mundo",...

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 obtienen el siguiente componente léxico, el analizador léxico lee los caracteres de

entrada hasta identificar el siguiente componente léxico.

Analizador sintáctico (parser).

Un analizador sintáctico (parser), se encarga de determinar si un string de símbolos

(tokens) es aceptado por las reglas de producción definidas en una gramática dada.

Al momento de analizar un string de entrada, es útil la construcción de un árbol sintáctico.

Derivaciones

La idea central es que se considera una producción como una regla de reescritura, donde

el no terminal de la izquierda es sustituido por la cadena del lado derecho de la

producción.

Page 4: Analizador léxico

- Derivación por la izquierda: Derivación donde solo el no terminal de más a la izquierda

de cualquier forma de frase se sustituye en cada paso.

- Derivación por la derecha o Derivación canónica: Derivación donde el no terminal más a

la derecha se sustituye en cada paso.

De un modo más formal:

Función de la aplicación:

La aplicación presentada muestra la derivación de una expresión ingresada por el usuario

de la cual se desplegará el resultado en consola, este resultado mostrara las operaciones en

el orden en que fueron realizadas.

Ejemplo 1:

Para comenzar, la aplicación pide al usuario una expresión, la cual será derivada.

Page 5: Analizador léxico

En este primer ejemplo la expresión es: (5+(3-2))-5

Al presionar Aceptar mostrara en consola el resultado, como se aprecia en la imagen,

donde se muestra:

1. Expresión inicial (expresión ingresada por el usuario): “(5+(3-2))-5”.

2. Primer operación realizada: “3-2”, esta operación se realiza al principio porque es

la mas interna.

3. Resultado de la primera operación: “1”.

4. Al obtener el resultado de la operación anterior obtenemos una segunda expresión

con nuevos parámetros: “(5+1)-5”.

5. La siguiente operación a realizar es la suma de 5+1 puesto que por orden de

prioridad le corresponde dicha operación.

6. Resultado de la operación interna de “5+1”: 6.

7. Ahora tenemos una nueva expresión: 6-5, estos números corresponden a los

resultados de las operaciones anteriores.

8. Resultado de la operación “6-5” = 1.

9. Al obtener este último resultado obtenemos el resultado de la expresión final = 1.

En la demostración las partes que principales y de mayor interés son: “Expresión inicial”,

“Nueva expresión” y “Expresión final”.

Ejemplo 2:

La aplicación pide al usuario una expresión que será derivada.

Page 6: Analizador léxico

Ingresamos la expresión inicial.

El resultado es el siguiente:

En este ejemplo muestra:

1. Expresión inicial (expresión ingresada por el usuario): “(5+(3+4))-2-5”.

2. Primer operación realizada: “3+4”, esta operación es la primera que se realiza al ser

la mas interna.

3. Resultado de la primera operación: “7”.

4. Al obtener el resultado de la operación anterior obtenemos una nueva expresión

con nuevos parámetros: “(5+7)-2-5”.

5. La siguiente operación a realizar es la suma de 5+7 según la aplicación.

6. Resultado de la operación interna de “5+7”: 12.

7. Ahora tenemos una nueva expresión: 12-2-5, estos números corresponden a los

resultados de las operaciones anteriores.

8. El resultado de la operación anterior se define de izquierda a derecha puesto que

ambos operadores son iguales: 5.

9. Al obtener este último resultado obtenemos el resultado de la expresión final: 5.

Al igual que en el ejemplo anterior las partes de mayor interés son: “Expresión inicial”,

“Nueva expresión” y “Expresión final”.