Está en la página 1de 3

Anlisis y Realizacin de Analizador Sintctico [ NO PROGRAMACION ] Conceptos: Anlisis del Programa Fuente

Fases de un compilador

En esta gua solo nos enfocaremos en la realizacin de la parte de analizado sintctico.

En la compilacin el anlisis consta de tres fases: 1. Anlisis lineal: en el que la cadena de caracteres que constituye el programa fuente se lee de izquierda a derecha y se agrupa en componentes lxicos, que son secuencias de caracteres que tienen un significado colectivo. 2. Anlisis jerrquico: en el que los caracteres o los componentes lxicos se agrupan jerrquicamente en colecciones anidadas con un significado colectivo. 3. Anlisis semntico: en el que se realizan ciertas revisiones para asegurar que los componentes de un programa se ajustan de un modo significativo. Anlisis lxico En un compilador, el anlisis lineal se llama anlisis lxico. Por ejemplo, en el anlisis lxico los caracteres de la proposicin de asignacin: posicin := inicial + velocidad * 60 ) el analizado lxico se encarga de identificar las cadenas e identificarlas como componentes lxicos o cadenas errneas lexicalmente construyendo una tabla de simbolos, el analizado lxico para la sentencia anterior arrojara los siguiente informacin:

NOTA*: Los valores numricos son ejemplo de lo que un analizador lxico le arroja al analizador sintctico:

Valor Numrico Ejemplo (Lo arroja el analizador lexico) 100 150 100 151 100 152 101 165

Lexema (Cadena que representa al token) Posicin := inicial + Velocidad * 60 )

Gramema (Significado de la cadena o token identificado) Identificador Operador asignacin Identificador Operador aritmtico suma Identificador Operador aritmtico multiplicacin Cadena numrica Operador Parntesis que cierra

Se preguntaran para qu el analizador lxico define nmeros para las sentencias que lee? Bueno tienes varias razones pero la principal razn que es ms ptimo trabajar con nmeros que

con cadenas. Esto no queda muy claro ahorita pero cuando veamos el anlisis sintctico observaremos con mayor claridad la razn de esto. Ahora se preguntaran que la sentencia que se analiz est mal, porque no debe de llevar un parntesis que cierra si no existe un parntesis que abre anterior al que cierra. La respuesta es sencilla estamos de hablando de anlisis lxico, lo que nos importa es identificar si es o no un token. Por ejemplo: posicin:=&&inicial+/ No existen errores lxicos, porque todo es identificado como se ve a continuacin: Valor Numrico Ejemplo (Lo arroja el analizador lexico) 100 150 157 100 100 152 Lexema (Cadena que representa al token) posicin := && inicial + / Gramema (Significado de la cadena o token identificado) Identificador Operador asignacin Operador lgico AND identificador Operador aritmtico suma Operador aritmtico multiplicacin

Pero en cambio s realizamos el anlisis sintctico, nos dir que es sintcticamente incorrecto, por que como el analizador sintctico se encarga de verificar que los tokens estn agrupados y ubicados segn la definicin del lenguaje, y como en nuestro lenguaje no hemos definido an una estructura sintctica similar a la del ejemplo por lo que esta sintcticamente mal. Ahora lo que vamos a definir es la estructura sintctica del lenguaje, como ya tenemos definidos los tokens que nuestro programa utilizara, ahora vamos a definir que estructura tendrn, para esto vamos a realizar las reglas de produccin ayudndonos de diagramas de sintaxis.

Ver Documento Completo en la Descripcin de Este Documento