Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La sintaxis de un programa puede ser definida por una gramtica libre de contexto. sta es
esencialmente una estructura jerrquica que indica las relaciones de las construcciones del lenguaje.
La notacin ms comn usada para describir una gramtica libre de contexto es BNF. La
especificacin de YACC se hace en BNF.
La descripcin se hace en la forma de reglas de produccin, que consisten de un nombre de no
terminal, el lado izquierdo, seguido por su definicin. La definicin, o lado derecho, consiste de
cero a ms smbolos que son no terminales que apuntan a otras reglas o terminales que
corresponden a tokens. Por ejemplo, una gramtica simple:
lista objeto | lista objeto
objeto cadena | numero
cadena texto | comentario | comando
numero numero | + numero | - numero | numero . numero
Partes:
Declaraciones
Reglas de traduccin
Soporte
de
las
rutinas en C
nombre_archivo.l Especific.
Lex
lexyy.c
Especific. nombre_archivo.y
Yacc
lex
yacc
yylex()
yyparse()
Compilador C
COMPILADOR
y_tab.c
Rutinas C
Libreras
GoldParser
GOLD Parser es una herramienta desarrollada por Devin Cook, implementando un
LALR (Look Ahead Left to Right- Rightmost derivation), se pueden construir
proyectos con base de analizadores, o construir versiones propias de un lenguaje
de programacin. GOLD Parser es la herramienta con ms capacidad de ser
implementada en varios lenguajes de programacin, ya que guarda un archivo
aparte conteniendo informacin de tablas de parseo y en cada lenguaje se
implementa el autmata simple para el anlisis de dichas tablas. Otra ventaja es el
soporte que todava se le brinda a la herramienta y es GRATIS. Algunos lenguajes
soportados y con implementacin disponibles son los siguientes:
C
Java
.NEt
C#
visual basic .net
assembler
phyton
Delphi
Gramatica:
"Name" = 'Simple'
"Author" = 'Devin Cook'
"Version" = '2.1'
"About" = 'This is a very simple grammar designed for use in examples'
"Case Sensitive" = False
"Start Symbol" = <Statements>
{String Ch 1} = {Printable} - ['']
{String Ch 2} = {Printable} - ["]
Identifier
= {Letter}{AlphaNumeric}*