YACC: YET ANOTHER COMPILER-COMPILER ABSTRACT La entrada a programas de computación generalmente tiene una estructura determinada; de hecho, cada programa de computación que recibe una entrada puede ser visto como definidor de un “lenguaje de entrada” que acepta. Un lenguaje de entrada puede ser tan complejo como un lenguaje de programación, o tan simple como una secuencia de números. Desafortunadamente, las facilidades usuales para la entrada son limitadas, difíciles de usar y generalmente negligentes en cuanto al chequeo y validación de la entrada. YACC provee una herramienta general para describir la entrada de un programa de computación. El usuario de YACC especifica las estructuras de su entrada, junto con el código que será invocado en la medida en que cada una de esas estructuras es reconocida. YACC convierte esa especificación en una subrutina que maneja el proceso de entrada, frecuentemente es conveniente y apropiado tener el mayor control en la aplicación del usuario manejada por esta subrutina. La subrutina de entrada producida por YACC llama a la rutina provista por el usuario para devolver el próximo ítem básico de la entrada. Así, el usuario puede especificar su entrada en términos de caracteres individuales de entrada, o en términos de constructor de mayor nivel, tales como nombres y números. La rutina provista por el usuario podría también manipular rasgos idiomáticos tales como comentarios y convenciones de continuación, que comúnmente desafían las especificaciones gramaticales sencillas. GNU Bison es un generador de parser de propósito general que convierte una descripción gramatical desde una gramática libre de contexto LALR en un programa en C para hacer el parse. Es utilizado para crear parsers para muchos lenguajes, desde simples calculadoras hasta lenguajes complejos. GNU Bison tiene compatibilidad con Yacc: todas las gramáticas bien escritas para Yacc, funcionan en Bison sin necesidad de ser modificadas. Cualquier persona que esté familiarizada con Yacc podría utilizar Bison sin problemas. Es necesaria experiencia con C para utilizar Bison.


Google