Solución para un analizador sintáctico

Páginas: 6 (1434 palabras) Publicado: 16 de septiembre de 2010
Introducción

Como ya se ha establecido, un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a la forma de pensar de un ser humano, para luego compilarlo a un programa másmanejable por una computadora.
La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.
• Análisis: Se trata de la comprobación de la estructura del programa fuente, e incluye las fases correspondientes al Análisis Léxico,Análisis Sintáctico y Análisis Semántico.
• Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generación de Código y de Optimización de Código.
En el presente proyecto se pondrán en práctica los saberes teóricos y prácticos adquiridos en las sesiones de clases para desarrollar un analizadorsintáctico, que cómo ya se mencionó es parte del proceso de análisis en un compilador.

Planteamiento del problema
En 1946 se desarrolló la primera computadora digital. En un principio, estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que señalaban a los circuitos de la máquina los estados correspondientes a cada operación, lo que se denominó lenguaje máquina.
Pronto losprimeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos; al final, todas esas claves juntas se traducían manualmente a lenguaje máquina. Estas claves constituyen los llamados lenguajes ensambladores.
Conforme aparecen y avanzan los lenguajes de programación se requieren compiladores mejor elaborados. En laactual entrega se nos solicita un analizador sintáctico que reconozca la siguiente gramática libre de contexto:

Programa  comienzaSecuenciaDeSentencias termina;
SecuenciaDeSentencias  Sentencia {Sentencia}
Sentencia  SentenciaSimple
SentenciaSimple  SentenciaDeAsignación
SentenciaDeAsignación  Nombre := Expresión;
Nombre  NombreSimple
NombreSimple  Identificador
Expresión  RelaciónRelación  ExpresiónSimple
ExpresiónSimple  Término { OperadorSuma Término}
Término  Factor {OperadorMultiplicación Factor}
Factor  Primario
Primario  Nombre | LiteralNumérica | (Expresión)
OperadorSuma  + | ‐
OperadorMultiplicación  * | / | mod | rem
LiteralNumérica  LiteralDecimal
LiteralDecimal  Entero


Solución
Análisis
En la presente entrega del proyecto se ofrece unasolución para un analizador sintáctico, aplicado a una gramática determinada.
La primera solución que se presenta es el uso del lenguaje de programación C, utilizado en la plataforma de Debian. Debido a que esta solución se inicia desde cero, es necesario elaborar el autómata que admite a la gramática; después se procederá a realizar la tabla parser LR(1), a partir de la cual se comenzará agenerar el pseudocódigo y finalizar con el programa en C.
Se propone como segunda solución el uso de la utilería para Linux , Bison; Bison es un programa generador de analizadores sintácticos de propósito general perteneciente al proyecto GNU disponible para prácticamente todos los sistemas operativos; se usa normalmente acompañado de Flex, aunque los analizadores léxicos se pueden también obtener deotras formas.
Para que nuestro analizador sintáctico funcione de forma correcta se debe definir en primera instancia las clasificaciones para los tokens a utilizar en la gramática, después escribir un analizador léxico usando Flex y definir la gramática en bison.

Diseño
Para dar solución al problema planteado de acuerdo al análisis anterior se estableció realizar el orden de diseño...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Analizadores Sintacticos
  • Analizador sintáctico
  • Analizador Lexico Y Sintactico C++
  • Analizadores Sintácticos Lr
  • Funciones del analizador y árbol sintáctico
  • Analizador Léxico y Sintáctico
  • Analizador léxico y sintáctico
  • Analizador Léxico-Sintáctico

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS