Logo Studenta

Actividad 9-2 - Daniel Cuellar

¡Estudia con miles de materiales!

Vista previa del material en texto

UNACAR
Universidad Autónoma del Carmen
“Por la Grandeza de México”
Facultad de Ciencias de la Información
MATERIA
LENGUAJES FORMALES Y AUTOMATAS
TEMA
LAS DISTINTAS HERRAMIENTAS PARA ANÁLISIS SINTACTICO
NOMBRE
DANIEL VALDEMAR CUELLAR VALLES
MATRICULA
160623
Ciudad del Carmen, Campeche A 25 abril del 2022
Índice
Introducción	3
Bison	4
CUP	4
PLY	4
YACC	4
Referencias	4
Introducción 
Como mencionan en (techopedia, 2020) “Un analizador sintáctico es un componente compilador o intérprete que divide los datos en elementos más pequeños para facilitar la traducción a otro idioma. Un analizador toma la entrada en forma de una secuencia de tokens, comandos interactivos o instrucciones de programa y las divide en partes que pueden ser utilizadas por otros componentes en la programación.". En pocas palabras un analizador sintáctico es el primer paso de un compilador, pues traza la serie de combinaciones posibles de un analizador léxico ya que convierte el texto en, por ejemplo, un árbol sintáctico que ilustra la jerarquía de una gramática.
Gracias a las herramientas para el análisis sintáctico es posible que existan los analizadores léxicos y por ende los compiladores pues, aparte de comprobar errores en la propia gramática se encargan de definir el orden en el que tiene que ser introducidos los comandos. Aparte de su aplicación en los distintos lenguajes de programación, los analizadores sintácticos también son aplicados en las páginas web desde el código “HTML” en donde lo traduce a un entorno visual mediante un motor de diseño en la pantalla hasta el propio código “URL” el cual descompone esquemas complejos para analizar la dirección ingresada. Con lo anterior dicho deja clara la utilidad de las herramientas de software para el análisis sintáctico pues va desde lo más especializado hasta lo más común como podría ser una página web. En este trabajo se expondrán diferentes herramientas con el fin de tener un mejor criterio al momento de seleccionar alguna para su uso.
Bison
De acuerdo con su autor (Corbett, 1985) Bison es “Un generador de analizadores de propósito general que convierte una gramática libre de contexto anotada en un analizador determinista LR o LR generalizado (GLR) que emplea tablas de analizador LALR(1).” Bison es la versión GNU de YACC creada en junio de 1985 por Robert Corbett este analizador parte de un fichero de texto conteniendo una gramática independiente de contexto de la especificación del analizador sintáctico, tras procesar el fichero, Bison genera código C y C++. Funciona en cualquier sistema operativo que admita instalarlo desde su página oficial[footnoteRef:1] junto con Flex, esto porque funcionan en conjunto, así como con YACC para generar compiladores de lenguajes. [1: (Free Software Foundation, 2014)] 
El formato estándar de un fichero en Bison es como se muestra en la Ilustración 1, tres partes principales separan por símbolos “%%”. Esta estructura es prácticamente la misma de Flex pues consiste en las mismas secciones sin embargo la diferencia está dentro de las mismas pues en Bison las reglas del código son diferentes.
Ilustración 1-Estructura de un fichero Bison
CUP
Según sus autores (Flannery, Ananian, Wang, Appel, & Petter, CUP User's Manual, 1999) “CUP significa Construction of Useful Parsers y es un generador de analizadores sintácticos LALR en Java el cual recibe de entrada un archivo con la estructura de la gramática y su salida es un parser escrito en Java listo para usarse.” CUP fue desarrollado en julio de 199 por C. Scott Ananian, Frank Flannery, Dan Wang, Andrew W. Appel y Michael Petter, este analizador ejerce la misma función que el parser YACC, de hecho, ofrece la mayoría de las características de YACC. Sin embargo, CUP está escrito en Java, usa especificaciones que incluyen código Java y produce analizadores que se implantan en Java. Como es previsible funciona solo en la máquina virtual de Java al descargarlo de su página oficial y añadir una variable de entorno al lenguaje de programación.
En la Ilustración 2 la cual fue recuperada de (Sánchez & Rodríguez, 2008) se aprecia la estructura de un programa del analizador sintáctico, al ser un parser enfocado en Java su estructura cambia conforme a los demás ya que el propio lenguaje de programación es muy singular en ese aspecto.Ilustración 2-Estructura de un fichero CUP
PLY
PLY por sus siglas “Python Lex and Yacc” es una “Implementación de Python, puro de las populares herramientas de construcción de compiladores lex y yacc. El objetivo principal de PLY es permanecer bastante fiel a la forma en que funcionan las herramientas tradicionales lex/yacc. Esto incluye admitir el análisis sintáctico LALR(1), así como proporcionar una amplia validación de entrada, informes de errores y diagnósticos.” (Beazley, 2001). Fue creada por David M. Beazley y publicada un 18 de Junio de 2001 
YACC
Referencias
Corbett, R. (06 de 1985). Bison 3.8.1. Obtenido de https://www.gnu.org/software/bison/manual/bison.html
Flannery, F., Ananian, C. S., Wang, D., Appel, A. W., & Petter, M. (07 de 1996). Cup LALR Parser Generator for Java. Obtenido de http://www2.cs.tum.edu/projects/cup/index.php
Flannery, F., Ananian, C. S., Wang, D., Appel, A. W., & Petter, M. (07 de 1999). CUP User's Manual. Obtenido de https://www.cs.princeton.edu/~appel/modern/java/CUP/manual.html#about
Free Software Foundation. (06 de 08 de 2014). GNU Bison. Obtenido de https://www.gnu.org/software/bison/
techopedia. (18 de 09 de 2020). Parser. Obtenido de https://www.techopedia.com/definition/3854/parser
2

Otros materiales