Analizador lex
ANÁLISIS LEXICOGRÁFICO
Análisis Léxico
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, se usan principalmente los autómatas finitos que acepten expresiones regulares. Sin embargo, un analizador léxicotambié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.
Análisis Léxico: Esta fase se encarga de verificar si todas las cadenas pertenecen o no al lenguaje. Es decir realiza un análisis símbolo por símbolo indicando el token porcada uno de los elementos reconocidos o el error en caso de no reconocer. Este análisis no logra detectar muchos errores por su característica.
Ejemplo:
total=valor*5 Luego del análisis léxico: id = id * num
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.Funciones del Analizador Léxico
Eliminar los comentarios del programa.
Eliminar espacios en blanco, tabuladores, etc, y en general, todo aquello que carezca de significado según la sintaxis del lenguaje.
Reconocer los identificadores de usuario, números, palabras reservadas del lenguaje, ...,y tratarlos correctamente con respecto a la tabla de símbolos (solo en los casos que debe detratar con la tabla de símbolos).
Llevar la cuenta del número de línea por la que va leyendo, por si se produce algún error, dar información sobre donde se ha
producido. Avisar de errores léxicos. Por ejemplo, si @ no pertenece al lenguaje, avisar de un error. Puede hacer funciones de preprocesador.
TOKENS
ES LA UNIDAD LÉXICA BÁSICA DE UN LENGUAJE DE PROGRAMACION.
TOKEN =(TIPO,VALOR)
TIPO: ES LA CLASE DE TOKEN VALOR ES LA INSTANCIA DE LA CLASE
EJEMPLO DE TOKEN
Token=(operador_aritmético,+) Token=(operador_de_relación ,=) Token=(palabra_reservada,mov) Token=(identificador,variable1)
patrón
Es la regla de formación a la que responde el token, normalmente esta regla de formación es una expresión regular
lexema
Es cada secuencia de caracteres concreta queencaja con un patrón, es decir, es como una instancia de un patrón
Ej: 8, 23, 50 ( son lexemas que encajan con el patrón ( 0 | 1 | 2 | ... | 9) + )
Determinación de los tipos de tokens
TIPO DE TOKEN
PALABRAS RESERVADAS SIGNOS DE AGRUPACION
CODIGO
100 300
OPERADORES ARITMETICOS
OPERADORES DE RELACIÓN
400
500
IDENTIFICADORES
NUMEROS OPERADORES DE ASIGNACION
600
700 800Palabras reservadas
TIPO: PALABRAS RESERVADAS CODIGO:100
Codificación de la Instancia y Valores
C++
CODIGO
101
NUMERO
1
LEXEMA
cin
2
3
cout
double
102
103
4
5
if
for
104
105
Palabras reservadas
TIPO: PALABRAS RESERVADAS CODIGO:100
Codificación de la Instancia y Valores
Asm
CODIGO
101
NUMERO
1
LEXEMA
assume
2
3
lea
mov
102103
4
5
segment
sub
104
105
Palabras reservadas
TIPO: PALABRAS RESERVADAS CODIGO:100
Codificación de la Instancia y Valores
Visual Basic
CODIGO
101
NUMERO
1
LEXEMA
call
2
3
if
msgbox
102
103
4
5
then
single
104
105
Palabras reservadas
TIPO: PALABRAS RESERVADAS CODIGO:100
Codificación de la Instancia y Valores
Java
CODIGO
101...
Regístrate para leer el documento completo.