Sei sulla pagina 1di 13

TEORIA DE COMPILADORES

Ing. Luis Alberto Iquira Vargas


SCANNER – IMPLEMENTACIÓN
 Para hacer el módulo de laboratorio A. Léxico
¿Por donde empezar?
◦ Entender como funciona el A. Léxico.
◦ Conocer con que lenguaje se va a trabajar.
 Saber cuales son los Símbolos del lenguaje.
◦ Conocer cuales son los tokens que se
implementará.
◦ Conocer todas las funciones adicionales que el A.
Léxico realizará.
◦ Utilizar un LP potente para el manejo de caracteres,
cadenas y estructuras de datos.
TABLA DE TABLA DE
SÍMBOLOS ERRORES

Cod, Desc, Tipo, Pos Cod, Desc, Pos

SÍMBOLOS DEL LENGUAJE


C++ EN ESPAÑOL

Principal, Leer, Mostrar, Pausa, etc


 Primero… ¿Qué interfaz requerimos?

Control
1

Botón 1

Control
2
 El A. Léxico debe tomar todo el texto del Control
1 y asignarlo a una variable CAD del tipo cadena
(char o string o cualquiera equivalente
dependiendo del LP).
 Se debe tener manejo pleno sobre esta cadena.
◦ Poder determinar la longitud de la misma.
◦ Poder desplazarse mediante una variable apuntador
sobre cualquier posición de CAD (hacia adelante y hacia
atrás).
 Esta cadena CAD se irá recorriendo carácter a
carácter de izquierda a derecha para identificar y
almacenar los tokens y lexemas que sean parte
del programa fuente.
 En ese recorrido debemos obviar todos los CE (saltos
de línea, tabuladores, espacios en blanco, etc).
 Se procede en éste recorrido a identificar según el
caracter en análisis de que patrón se trata (un patrón
para cada token por lo general).
 Recordar que todo patrón se implementa mediante ER,
AFN y luego pasan a ser algoritmos que controlan el
desenvolvimiento del analizador léxico.
 Una vez identificado un lexema como un token
determinado, se procede a concatenar el lexema y
guardar todos los datos que la Tabla de Símbolos
exige.
 Luego de haber almacenado un lexema se
continua con el siguiente caracter hasta llegar
al final de CAD.
 Si se detectara un error, entonces se procede a
guardar los datos en la Tabla de Símbolos y
también en la Tabla de Errores.
 Finalmente, el A. Léxico informa al usuario
sobre el éxito o detección de errores en la
scaneada sobre el programa fuente.
 C++ en español.
 Es una estructura estática.
Código Símbolo Tipo / Token Código Símbolo Tipo / Token
1 Procedimiento Palabra reservada – PR 31 } Separador – SEP
2 Funcion Palabra reservada – PR 32 [ Separador – SEP
3 Principal Palabra reservada – PR 33 ] Separador – SEP
4 Entero Palabra reservada – PR 34 + Operador – OP
5 Decimal Palabra reservada – PR 35 - Operador – OP
6 Doble Palabra reservada – PR 36 * Operador – OP
7 Caracter Palabra reservada – PR 37 / Operador – OP
8 Cadena Palabra reservada – PR 38 © (Alt + 184) Operador – OP
9 Booleano Palabra reservada – PR 39 = Asignador – AS
10 Si Palabra reservada – PR 40 == Comparador – CMP
11 Entonces Palabra reservada – PR 41 <= Comparador – CMP
12 Sino Palabra reservada – PR 42 >= Comparador – CMP
13 Abrir Palabra reservada – PR 43 < Comparador – CMP
14 Caso Palabra reservada – PR 44 > Comparador – CMP
15 Quiebre Palabra reservada – PR 45 != Comparador – CMP
16 Defecto Palabra reservada – PR 46 ^^ (Alt + 94) Relacionador – REL
17 Para Palabra reservada – PR 47 || (Alt + 124) Relacionador – REL
18 Mientras Palabra reservada – PR 48 , (Alt + 44) Signo puntuación – SP
19 Hacer Palabra reservada – PR 49 ; (Alt + 59) Signo puntuación – SP
20 Mostrar Palabra reservada – PR 50 : (Alt + 58) Signo puntuación – SP
21 Leer Palabra reservada – PR 51 “ (Alt + 34) Signo puntuación – SP
22 Limpiar Palabra reservada – PR 52 . (Alt + 46) Punto flotante – PF
23 Pausa Palabra reservada – PR 53 identificador Variable – ID
24 Absoluto Palabra reservada – PR 54 número entero Exp. NumE – ENT
25 Residuo Palabra reservada – PR 55 número decimal Exp. NumD – DEC
26 Exponente Palabra reservada – PR 56 cadena Exp. Cadena – CAD
27 RaizCua Palabra reservada – PR 57 Símbolo desconocido – SD
28 ( Separador – SEP 58 // Comentario línea – COM
29 ) Separador – SEP 59 /* */ Comentario párrafo – COM
30 { Separador – SEP
 Palabras reservadas.
 Separadores.
 Operadores.
 Asignador.
 Comparador.
 Relacionador.
 Signos de puntuación.
 Punto Flotante.
 Variables o identificadores.
 Números enteros.
 Números decimales.
 Cadenas.
 Comentarios (Línea y párrafo).
 Símbolos desconocidos.
 Si verifica alguna funcionalidad adicional
implementarla.
◦ Tratamiento de CE.
◦ Información al usuario.
 Cualquier LP que pueda aprovechar
eficientemente los recursos de la maquina; y
que pueda manejar caracteres, cadenas y
estructuras de datos de manera sencilla.

Potrebbero piacerti anche