Bison es un generador de analizadores sintácticos de propósito general que convierte una descripción gramatical para una gramática independiente del contexto LALR en un programa en C que analice esta gramática. Bison puede ser utilizado para desarrollar un amplio rango de analizadores de lenguajes, desde aquellos usados en simples calculadoras de escritorio hasta los complejos lenguajes de programación.
Bison es compatible hacia arriba con Yacc: todas las gramáticas escritas apropiadamente para Yacc deberían funcionar en Bison sin ningún cambio. Cualquiera que esté familiarizado con Yacc debería ser capaz de utilizar Bison con pocos problemas.
Bison aplica el concepto de traducción dirigida por la sintaxis, es decir, a cada entrada en el programa fuente le asigna una salida, la cual puede ser cualquier acción, la cual se ejecuta al reconocerse la entrada válida. En Bison, una regla gramatical tiene una acción compuesta de sentencias de C asociadas.
El propósito de una acción es generalmente computar el valor semántico de la construcción completa a partir de los valores semánticos de sus partes.
Continuar leyendo 
Ocultar articulo 
El reconocimiento de patrones léxicos –conjuntos catalogados de palabras- es una tarea muy importante con aplicaciones en una infinidad de rangos, el diseño e implementación de un rastreador o scanner para dichos patrones léxicos varía de acuerdo al tamaño del proyecto y a la ambición del que lo implemente, de manera que se hace evidente, como en todas las áreas de desarrollo de software que es necesario por todos los medios posibles desarrollar técnicas, métodos, teorías y herramientas que nos permitan realizar este proceso de análisis e implementación en el menor tiempo posible y al menor costo.
Flex es un programa que realiza esta tarea, permite generar scanners en una forma y con una sintaxis bastante sencillas que se corresponden directamente con la de las expresiones regulares. –para lenguajes regulares-.
Flex lee los archivos de entrada dados, o la entrada estándar si no se le ha indicado ningún nombre de archivo, con la descripción del scanner a generar. La descripción se encuentra en forma de parejas de expresiones regulares y código C, denominados reglas. Flex genera como salida un archivo fuente en C, ‘yylex()’. Este archivo se compila y se enlaza con la librería ‘-lfl’ para producir un ejecutable. Cuando se arranca el archivo ejecutable, este analiza su entrada en busca de casos de las expresiones regulares. Siempre que encuentra uno, ejecuta el código C correspondiente.
Continuar leyendo 
Ocultar articulo 