ANALISIS LEXICOCompiladores 1
Sección A
Análisis Léxico Lee los caracteres de entrada y elabora como
salida una secuencia de componentes léxicos (token) que son utilizadas en el análisis sintáctico.
• Palabras reservadas: if, while, repeat.• Identificadores: Posición, velocidad, tiempo.• Operadores: = * + - / == > < & ¡=• Símbolos especiales: ; ( ) [ ] { } …• Constantes Numéricas: 982, 0xF678, -83.2E+2• Constantes de caracteres: “Hola mundo”
• El analizador léxico opera bajo petición del analizador sintáctico devolviendo un analizador léxico conforme lo va necesitando la gramática.
Programa fuente
Analizador léxico
Programa sintáctico
Árbol de análisis sintáctico
ComponenteLéxico
Obtener el siguiente componente léxico
Componentes Léxicos, Patrones, lexemas:• Lexema: Cadena de caracteres que concuerda con
un patrón que describe un componente léxico.• Componente léxico: Secuencia de caracteres que
tienen un significado colectivo. • Patrón: Es una regla que genera la secuencia de
caracteres que puede representar a un determinado componente léxico (Expresión regular).
Componente Léxico Lexema PatrónIdentificadorNum_enteroIfDoOp_divOp_asig
Índice, a, temp1492, 1, 2IfDo/=
Letra seguida de letras o dígitosDígitos seguido de más dígitosLetra i seguida de letra fLetra d seguida de oCarácter /Carácter =
Otras Funciones
• Manejo del fichero de entrada del programa fuente: abrirlo, leer sus caracteres y cerrarlo.
• Ignorar caracteres no relevantes [ej. Eliminar Comentarios, espacios en blanco, tabulaciones y saltos de línea].
• Manejo y Recuperación de errores [contabilizar el numero de líneas y columnas para emitir mensaje de error].
• Agrupar resto de los caracteres• Rechazar agrupaciones inválidas y clasificar las válidas
Definición de Expresiones Regular en Herramientas
a | b unión esta expresión regular, que coincide con todas las entradas que se corresponde con a o b.
a b Concatenación Una letra que inicia con a, le sigue la letra b.
a* Cerradura Kleene
La a puede venir 0 o más veces.
a+ Cerradura Abierta
Es equivalente (a)a*
a? Cerradura cerrada
Es equivalente a una cerradura vacía.
a{n} Es equivalente a n, veces concatenado a.a{n,m} Tiene un límite inferior y superior para concatenar las a."Expr" Se define un texto exacto que define la expresión
regular.[a-zA-Z] Definición de Rango de caracteres según el orden
definido en ASCII.[^a] Cualquier elemento que no sea a.
\t Representa un tabulador \r Representa el "regreso al inicio" o sea el lugar en que la línea vuelve a iniciar.
\n Representa la nueva línea. Como también el carácter que le dará inicio.
\f Representa un salto de página
\d Representa un dígito del 0 al 9
\v Representa un tabulador vertical
\s Representa un espacio en blanco.
\w Representa cualquier carácter alfanumérico.
Definición de Expresiones Regular en Herramientas
Ejemplos de Expresiones Regulares
Comentario="/*” [^*]+ “*/" | "/*” “*”+ "/"Comentario2 =“//” ([^\r\n])* \r|\ntstring =[\"] [^\"\n]* [\"\n]numero =[0-9]+ "."? [0-9]*letra =[a-zA-ZÑñ]+iden ={letra}({letra}|{numero}|"_")*
Expresiones Regulares por Estados en Herramientas
"IF" {}"WHILE" {}"FOR" {}“<!inicio" {yybegin(A); }<A>{ {numero} {} ";" {} “!>” {yybegin(YYINITIAL);} [ \t\r\f\n]+ { /* Se ignoran */} . {/* Cualquier Error*/}}
Tratamiento de Errores
• Nombre ilegales de identificadores: Un nombre que contiene un carácter invalido.
• Números incorrectos: un numero que contiene caracteres inválidos o no está formado correctamente [3.14 en vez de 3,14 o 0.3.14].
• Errores de ortografía en palabras reservadas: Caracteres omitidos, adicionales o cambiados de sitio, por ejemplo la palabra hwile en vez while.
• Fin de archivo: Se detecta el fin de un archivo a mitad de un componente léxico.
Top Related