Analisis lexico

Instituto Tecnológico Superior De Coatzacoalcos 2016 M.A.S.C. Arturo Iván Grajales Vázquez. Competencia a desarrolla

Views 114 Downloads 6 File size 548KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Instituto Tecnológico Superior

De Coatzacoalcos 2016

M.A.S.C. Arturo Iván Grajales Vázquez.

Competencia a desarrollar. Construir un analizador léxico a partir de un lenguaje de programación o un analizador léxico (p. e. Flex, Lex, JavaCC).

Subtemas.

5.1 5.2 5.3 5.4 5.5 5.6

Funciones del analizador léxico Componentes léxicos, patrones y lexemas Creación de Tabla de tokens Errores léxicos Generadores de analizadores Léxicos Aplicaciones (Caso de estudio)

Introducción al analizador Léxico

Analizador léxico o Scanner. La fase del análisis lexicográfico de un compilador agrupa secuencia de caracteres en categorías. Aunque esto se conoce también como rastréo, realmente podemos distinguir dos tareas separadas:  Un rastreador mueve un apuntador a través de la entrada un carácter a la vez para hallar cadenas continuas de caracteres, las cuales constituyen elementos textuales individuales ( palabras), y clasificadas cada una de acuerdo con su tipo.

 El filtro descarta algunos de los tokens encontrados por el rastreador ( tal vez espacios y comentarios), determina cuáles otros son símbolos reservados ( quizá palabras clave u operadores), y coloca el texto de los restantes en la tabla de nombre. El analizador lexicográfico pasa al analizador sintáctico el tipo de token, más el valor real de éste. En ocasiones, el valor es un apuntador a la tabla que contiene el valor. Puede haber tablas separadas para nombres, constantes numéricas, cadenas de caracteres constantes, y operadores, o puede hacer una tabla que incluya todo lo anterior.

Estructura que muestra el sitio que ocupa el analizador léxico dentro del compilador.

Analizador lexicográfico

Analizador Sintáctico

Analizador semántico

Optimización

Preparación Para la Generación de código

Tokens Manejo de tablas

•Tabla de símbolo. • Tabla de literales. • Tabla de ciclos iterativos • Tabla de representación intermedia

Manejo de errores

E/S

Generación del código

Tokens Los tokens ( componentes léxicas ) son las unidades léxicas básicas del mismo modo en que las palabras y los signos de puntuación son las unidades básicas de una oración en ingles. Los tokens varían de lenguaje en lenguaje, e incluso de compilador en compilador para el mismo lenguaje. Algunos ejemplos de tokens son:  La palabra clave.  La constantes.  El identificador.  El operador.  Puntuación.

Problema del análisis lexicográfico Podemos describir el problema del análisis lexicográfico como: Dada una cadena de caracteres, divídase en una cadena de tokens: Tokens=( tipo, valor) Al tipo de un tokens a menudo se llama clase; los carácter reales se conocen como lexema. Existen tres formalismo o modelos comunes para la descripción de los tipos de tokens:

 Expresiones regulares:- La expresiones regulares describen los tokens como el conjunto de cadenas permitidas en un lenguaje.  Diagramas de transición :- Los diagramas de transición describen los tokens como cadenas permitidas que toman el diagrama desde un estado inicial hasta un estado final.  Gramáticas lineales:- Las gramáticas lineales describen los tokens como las cadenas generadas por una gramática en una forma especial (Llamadas también gramáticas regulares ).

5.1. Funciones del Analizador Léxico

Funciones principales de los analizadores lexicográfico. Existen tres funciones principales para un analizador lexicográfico a medida que va hallando tokens: Utilidades de caracteres y manejo de línea:- Se establece un programa mediante un formato uniforme y compacto, el analizador lexicográfico puede eliminar información innecesaria como los comentarios. También procesa directivas de control del compilador ( como la petición para crear un archivo del listado de un programa ), introduce información preliminar ( como los nombres definidos por el usuario) en tablas y formatos y lista el programa. Prueba de predicado: - Tiene como finalidad verificar la membresía de un conjunto de caracteres. Para un predicado su objetivo es regresar un valor de verdadero siempre que se cumplan la condición establecida por el. Las implementaciones de estas utilidades dependen del lenguaje en que se haya escrito al analizador lexicográfico. Por ejemplo: Esletra ( x ) : “A”