Vous êtes sur la page 1sur 12

Instituto Tecnologico de Tapachula

Teoria de la computacin Ing. Jehiely Belem Hernandez

ISC Nestor Fidel Roblero Lopez Hanibal

Investigacion: Analizador sintactico

Introduccion

Contenido
INTRODUCCION ............................................................................................................................. 2 ANALIZADORES SINTCTICOS ........................................................................................................ 4 ANALIZADOR LXICO ........................................................................................................................... 4 COMPACTACIN DE TABLAS.................................................................................................................. 5 TOKEN ............................................................................................................................................. 7 CLASIFICACION .................................................................................................................................. 7 ANLISIS SINTCTICO DESCENDENTE ............................................................................................ 8 ANLISIS SINTCTICO ASCENDENTE .............................................................................................. 9 DIFERENCIAS ENTRE ANLISIS SINTCTICO DESCENDENTE Y ANLISIS SINTCTICO ASCENDENTE .................................................................................................................................................... 10 CONCLUSION ............................................................................................................................... 11 BIBLIOGRAFA .............................................................................................................................. 12

Analizadores sintcticos
Un analizador sintctico (en ingls parser) es una de las partes de un compilador que transforma su entrada en un rbol de derivacin. El anlisis sintctico convierte el texto de entrada en otras estructuras (comnmente rboles), que son ms tiles para el posterior anlisis y capturan la jerarqua implcita de la entrada. Un analizador lxico crea tokens de una secuencia de caracteres de entrada y son estos tokens los que son procesados por el analizador sintctico para construir la estructura de datos, por ejemplo un rbol de anlisis o rboles de sintaxis abstracta. El anlisis sintctico tambin es un estado inicial del anlisis de frases de lenguaje natural. Es usado para generar diagramas de lenguajes que usan flexin gramatical, como los idiomas romances o el latn. Los lenguajes habitualmente reconocidos por los analizadores sintcticos son los lenguajes libres de contexto. Cabe notar que existe una justificacin formal que establece que los lenguajes libres de contexto son aquellos reconocibles por un autmata de pila, de modo que todo analizador sintctico que reconozca un lenguaje libre de contexto es equivalente en capacidad computacional a un autmata de pila.

Analizador lxico
Un analizador lxico o analizador lexicogrfico (en ingls scanner) es un programa que recibe como entrada el cdigo fuente de otro programa (secuencia de caracteres) y produce una salida compuesta de tokens (componentes lxicos) o smbolos. Estos tokens sirven para una posterior etapa del proceso de traduccin, siendo la entrada para el analizador sintctico (en ingls parser). El analizador lxico, tambin conocido como scanner, lee los caracteres uno a uno desde la entrada y va formando grupos de caracteres con alguna relacin entre s (tokens), que constituirn la entrada para la siguiente etapa del compilador. Cada token representa una secuencia de caracteres que son tratados como una nica entidad. Un Analizador Lxico (o analizador lineal) transforma la secuencia de smbolos de entrada en una secuencia de componentes (smbolos) lxicos sobre la cual es mas fcil hacer luego el anlisis sintctico. El A.L. lee caracteres de entrada y los agrupa en secuencias que tienen significado dentro de la estructura sintctico del lenguaje fuente. Un analizador lxico es un traductor que acta en la primera fase de un proceso de compilacin. Para iniciar en la construccin de un analizador lxico o primero que realizamos es: 1. Definicin de todas las palabras reservadas o tambin lo llamamos lenguaje, a esto le agregamos todos los caracteres separadores, es decir el caracter inmediato que puede existir luego de esta palabra por ejemplo si tengo el lenguaje: L= { if, (, ), for }, estas palabras reservadas de C++. 4

if, sus separadores sern: espacio, (, tabulador, enter (, sus separadores son muchos: identificadores, numeros, (, espacio, tabulador, etc.. esto se debe hacer con cada una de las palabras reservadas. 2. Construccin del autmata en base a las palabras reservadas:

El nmero negativo colocado a final, es el token, es decir lo que me va a dar como resultado el lxico al reconocer una palabra, esto puede ser un conjunto de caracteres o nmero negativos. 3. Construccin de la tabla de transiciones

Esta tabla representa el movimiento del autmata, y ya se puede hacer implementacin para reconocer las palabras. Si embargo es necesario realizar un proceso de compactacin de tablas. Compactacin de Tablas

Compactar la tabla de simbolos o tabla de transiciones, significa que llegaremos a la construccin de 2 tablas adicionales que no contiene desperdicios de memoria producto de todas las casillas que catalogadas como error en el anlisis lxico.

La primera tabla se construye de la siguiente manera: c1: Son los estados del automata c2: La primera fila inicia con 1, luego es el resultado de sumar c1 y c2 c3: Es un nmero que equivale a suma de los elementos que no son error en la tabla de tranciiones en el estado c1 correspondiente.

La tabla 2 contiene c1: Nmeros secuenciales c2: Consiste en la enumeracin de todos los elementos que no son error basados en la tabla de transiciones c3: Es el numero de columna correspondiente el elemento c2 en la tabla de transiciones

Token
Un token o tambin llamado componente lxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programacin. Ejemplos de tokens, podran ser palabras clave (if, else, while, int, ...), identificadores, nmeros, signos, o un operador de varios caracteres, (por ejemplo, :=). Son los elementos ms bsicos sobre los cuales se desarrolla toda traduccin de un programa, surgen en la primera fase, llamada anlisis lxico, sin embargo se siguen utilizando en las siguientes fases (anlisis sintctico y anlisis semntico) antes de perderse en la fase de sntesis.

Clasificacion
La tarea esencial de un analizador es determinar si una determinada entrada puede ser derivada desde el smbolo inicial, usando las reglas de una gramtica formal, y como hacer esto, existen esencialmente dos formas: 1.- Analizador sintctico descendente (Top-Down-Parser): ..un analizador puede empezar con el smbolo inicial e intentar transformarlo en la entrada, intuitivamente esto sera ir dividiendo la entrada progresivamente en partes cada vez ms pequeas, de esta forma funcionan los analizadores LL, un ejemplo es el javaCC. 2.- Analizador sintctico ascendente (Bottom-Up-Parser): un analizador puede empezar con la entrada e intentar llegar hasta el smbolo inicial, intuitivamente el analizador intenta encontrar los smbolos ms pequeos y progresivamente construir la jerarqua de smbolos hasta el inicial, los analizadores LR funcionan as y un ejemplo es el Yacc.

ANLISIS SINTCTICO DESCENDENTE


El anlisis sintctico descendente (ASD) intenta encontrar entre las producciones de la gramtica la derivacin por la izquierda del smbolo inicial para una cadena de entrada. Se centra en los siguientes pasos: y y y y y Partir del axioma de la gramtica Escoger reglas gramaticales Hacer derivaciones por la izquierda Procesar la entrada de izquierda a derecha Obtener el rbol de anlisis sintctico o error

Pueden ser: 1. Con retroceso.- El mtodo parte del axioma inicial y aplica todas las posibles reglas alno terminal ms a la izquierda 2. Con recursin.- Una gramtica de contexto libre puede expresar un lenguaje al igual que puede hacerlola notacin BNF, y los diagramas de Conway. Un diagrama de Conway es un grafo dirigido donde los elementos noterminales aparecen como rectngulos, y los terminales como crculos. 3. LL(1) .- Una gramtica LL(1) es aquella en la que su tabla de chequeo de sintaxis no poseeentradas mltiples, o sea, es suficiente con examinar slo un smbolo a la entrada, parasaber qu regla aplicar. Toda gramtica reconocible mediante el mtodo de los diagramasdeConway es LL(1)El mtodo consiste en seguir un algoritmo partiendo de: o La cadena a reconocer, junto con un apuntador, que nos indica cual es el token actual o Una pila de smbolos ( terminales y no terminales) o Una tabla asociada de forma unvoca a una gramtica.

ANLISIS SINTCTICO ASCENDENTE


Un anlisis ascendente (ASA) puede empezar con la entrada e intentar llegar hasta el smbolo inicial, intuitivamente el analizador intenta encontrar los smbolos ms pequeos y progresivamente construir la jerarqua de smbolos hasta el inicial. Aqu se construye el rbol sintctico de abajo hacia arriba, lo cual disminuye el nmero de reglas mal aplicadas con respecto al caso descendente (si hablamos del caso con retroceso). Pueden ser: Con retroceso.- Cuando se da cuenta que llega a una situacin en la que no puede continuar, entonces vuelve atrs deshaciendo todos los cambios. LR(1).-Pueden reconocer la inmensa mayora de los lenguajes de programacin que puedan ser generados mediante gramticas de contexto-libre. El mtodo de funcionamiento de estos analizadores posee la ventaja de localizar un error sintctico en el mismo instante que se produce con lo que se adquiere una gran eficienciade tiempo de compilacin frente a procedimientos menos adecuados como puedan ser losde retroceso.

DIFERENCIAS ENTRE ANLISIS SINTCTICO DESCENDENTE Y ANLISIS SINTCTICO ASCENDENTE


ANLISIS DESCENDENTE(Top-Down).- En este tipo de anlisis se construye el rbol desde la raz (S) hasta llegar a las hojas ANLISIS ASCENDENTE(Bottom-Up).- En este tipo de anlisis se construye el rbol desde las hojas hacia la raz (S).

10

Conclusion

11

Bibliografa
Fausto Loja Mora. (s.f.). Recuperado el 4 de Junio de 2011, de Analizadores lexicos: http://faustol.wordpress.com/ Fausto Loja Mora. (s.f.). Recuperado el 4 de Junio de 2011, de Compactacin de Tablas: http://faustol.wordpress.com/ Fecyman10's Blog. (s.f.). Obtenido de Analizador sintactico: http://fecyman10.wordpress.com/ Wikipedia, La Enciclopedia Libre. (s.f.). Recuperado el 4 de Junio de 2011, de Analizador sintactico: http://es.wikipedia.org Wikipedia, La Enciclopedia Libre. (s.f.). Recuperado el 4 de Junio de 2011, de Token: http://es.wikipedia.org Wikipedia, La Enciclopedia Libre. (s.f.). Recuperado el 4 de Junio de 2011, de Analizador Lexico: http://es.wikipedia.org

12

Vous aimerez peut-être aussi