Вы находитесь на странице: 1из 3

ANALIZADOR SINTACTICO

CHIQUIMULA, 10 DE ABRIL DE 2010

ANALIZADOR SINTACTICO
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. Los analizadores sintcticos fueron extensivamente estudiados durante los aos 70 del siglo XX, detectndose numerosos patrones de funcionamiento en ellos, cosa que permiti la creacin de programas generadores de analizadores sintticos a partir de una especificacin de la sintaxis del lenguaje en forma Backus-Naur por ejemplo, tales y como yacc, GNU bison y javaCC.

ANALIZADOR SINTACTICO LL
Un analizador LL es llamado un analizador LL (k) si usa k tokens cuando el analizador ve hacia delante de la sentencia. Si existe tal analizador para cierta gramtica y puede analizar sentencias de sta gramtica sin marcha atrs, entonces es llamada una gramtica LL (k). De sta gramticas, la gramtica LL(1), aunque es bastante restrictiva, stas son muy populares porque los analizadores LL correspondientes slo necesita ver el siguiente token para hacer el anlisis de sus decisiones. Lenguajes mal diseados usualmente suelen tener gramticas con un alto nivel de k, y requieren un esfuerzo considerable a analizar. Existe controversia entre la escuela europea del diseo del lenguaje, quien prefiere gramtica basada en LL, y los otros pases prefieren predominantemente gramtica basada en LR. Esto se debe en gran parte a la influencia de Niklaus Wirth en la ETH Zrich en Suiza, cuya investigacin ha descrito una serie de maneras de optimizar lenguajes y compiladores LL(1).

ANALIZADOR SINTACTICO LR
Los analizadores sintticos LR, tambin conocidos como Parser LR, son un tipo de analizadores para algunas gramticas libres de contexto. Pertenece a la familia de los analizadores ascendentes, ya que construyen el rbol sintctico de las hojas hacia la raz. Utilizan la tcnica de anlisis por desplazamiento reduccin. Existen tres tipos de parsers LR: SLR (K), LALR (K) y LR (K) cannico. Un analizador LR consta de: Un programa conductor Una entrada Una salida Una tabla de anlisis sintctico, compuesta de 2 partes (ACCION Y GOTO) Cabe acotar que el programa conductor es siempre igual, solo variando para cada lenguaje la tabla de anlisis sintctico. El algoritmo para reconocer cadenas es el siguiente: dado el primer carcter de la cadena y el estado inicial de la tabla, buscar qu accin corresponde en la tabla de accin. Si el estado es shift n (n N), se coloca el carcter y el nmero de estado n en la pila, se lee el siguiente carcter y repite el procedimiento, solo que esta vez buscamos en el estado correspondiente. SI ACCION = REDUCE n (n N), se sacan de la pila tantas tuplas (estado, smbolo) como el largo de la cola de la produccin en el n-simo lugar, y se reemplaza por la cabeza de esta produccin. El nuevo estado sale de buscar en la tabla GOTO usando para ubicarlo el nmero de estado que quedo en el tope de la pila, y el no terminal en la cabeza. En la tabla accin tambin encontraremos ACEPTAR que se toma la cadena como valida y se termina el anlisis o ERROR que se rechaza la cadena.

Вам также может понравиться