Está en la página 1de 10

ANALISIS LEXICO

Compiladores 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.

Componente
Léxico
Programa Analizador Programa Árbol de análisis
fuente léxico sintáctico sintáctico

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ón
Identificador Índice, a, temp Letra seguida de letras o dígitos
Num_entero 1492, 1, 2 Dígitos seguido de más dígitos
If If Letra i seguida de letra f
Do Do Letra d seguida de o
Op_div / Carácter /
Op_asig = 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.
ab Concatenación Una letra que inicia con a, le sigue la letra b.

a* Cerradura La a puede venir 0 o más veces.


Kleene
a+ Cerradura Es equivalente (a)a*
Abierta
a? Cerradura Es equivalente a una cerradura vacía.
cerrada
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.
Definición de Expresiones
Regular en Herramientas

\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. \f Representa un salto de
Como también el carácter página
que le dará inicio.
\d Representa un dígito del 0 \v Representa un tabulador
al 9 vertical
\s Representa un espacio en \w Representa cualquier
blanco. carácter alfanumérico.
Ejemplos de Expresiones Regulares
Comentario="/*” [^*]+ “*/" | "/*” “*”+ "/"
Comentario2 =“//” ([^\r\n])* \r|\n
tstring =[\"] [^\"\n]* [\"\n]
numero =[0-9]+ "."? [0-9]*
letra =[a-zA-ZÑñ]+
iden ={letra}({letra}|{numero}|"_")*
Expresiones Regulares por
Estados
"IF" {}
en Herramientas
"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.

También podría gustarte