Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Analisis Lexico

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

Instituto Tecnológico de Nuevo León

Materia:
Lenguajes y Autómatas 2
Trabajo:
Análisis Léxico

Nombre del Alumno: Francisco Javier Alvarado González

No. De Control: 15481057

Catedrático: Dr. Fidencio Sánchez Rueda

Carrera: Ingeniería en Sistemas Computacionales

Ciudad Guadalupe, Nuevo León, a 10 de Septiembre del 2018


Un analizador léxico

Un analizador léxico o analizador lexicográfico (en inglés scanner) es la primera


fase de un compilador consistente en un programa que recibe como entrada el
código fuente de otro programa (secuencia de caracteres) y produce una salida
compuesta de tokens (componentes léxicos) o símbolos. Estos tokens sirven para
una posterior etapa del proceso de traducción, siendo la entrada para el analizador
sintáctico (en inglés parser).

La especificación de un lenguaje de programación a menudo incluye un conjunto


de reglas que definen el léxico. Estas reglas consisten comúnmente en
expresiones regulares que indican el conjunto de posibles secuencias de
caracteres que definen un token o lexema.

En algunos lenguajes de programación es necesario establecer patrones para


caracteres especiales (como el espacio en blanco) que la gramática pueda
reconocer sin que constituya un token en sí.

Análisis

Esta etapa está basada usualmente en una máquina de estados finitos. Esta
máquina contiene la información de las posibles secuencias de caracteres que
puede conformar cualquier token que sea parte del lenguaje (las instancias
individuales de estas secuencias de caracteres son denominados lexemas). Por
ejemplo, un token de naturaleza entero puede contener cualquier secuencia de
caracteres numéricos.

Funciones del Analizador Léxico

 Convierte el programa fuente en una cadena de tokens


 Para reconocer el token usa un patrón, una regla que describe como se
forman las cadenas que corresponden a un token.
 Salta comentarios y espacios en blanco (tabuladores, saltos de línea...)
 Tener el registro de la línea del archivo fuente que está siendo analizada
 Genera mensajes de error léxico, y se recupera del error
 Convierte los valores literales al tipo que corresponda
 Si la entrada debe obedecer a un formato, verifica el formato Ej. Fortran,
Cobol

Tokens y Lexemas

Token:

 Elemento básico del lenguaje


 Unidad léxica indivisible
 Identifica una entidad lógica dentro del lenguaje
 Incluyen: Palabras Reservadas, Constantes, Operadores, Signos de
Puntuación e Identificadores

Lexema:

 La cadena original que se identifica como token


 No hay correspondencia 1-1 entre token-lexema

Construcción de Generadores

Automáticos de Scanners

 Construir un NFA para cada una de las expresiones regulares a reconocer.


 Aplicar una unión a todas las expresiones (unirlas con un mismo estado de
inicio -usando transiciones Є-), pero sin unirlas en un solo estado final (se
requiere un estado de aceptación para cada token de tal forma que se
pueda identificar el token econocido) Generar el DFA.
 Hacer el programa de recorrido de DFA teniendo en cuenta que un lexema
puede pasar por varios estados de aceptación (crear una lista de los
estados de aceptación por los que pasó).

Atributos para tokens

 El analizador recopila información sobre los tokens a medida que los


reconoce. Por ejemplo: token num, pero... qué lexema?
 Cuando la cadena de entrada permite reconocer más de un token, esta
información puede ayudar a desambiguar.

Palabras Reservadas

 Identificador es una palabra que inicia con una letra, y es seguida por letras
o dígitos.
 Las palabras clave cumplen con este mismo patrón de construcción.

 Se hace necesario un mecanismo que permita decidir cuándo una cadena


es una palabra clave o un identificador
 Solución sencilla: Palabras Reservadas (que no pueden ser usadas como
identificadores)

Porque se divide el Análisis Léxico del Sintáctico?

 Simplifica y modulariza el diseño del compilador, se hace más claro, facilita


la implementación.
 Mejora la eficiencia del compilador:
 El parser trabaja con Tokens, no con caracteres
 Uso de técnicas de buffers
 La mayor parte del tiempo de compilación se usa en el análisis léxico
(excluyendo la optimización)
 Mayor portabilidad:
  Aísla las peculiaridades en el alfabeto de entrada
  Ej. El conjunto de caracteres, representación de símbolos

También podría gustarte