miércoles, 29 de septiembre de 2010

Fases para crear un compilador en Gold Parser


Fase 1: Creación de la Gramática

Se debe crear la gramática del lenguaje a manejar. Dicha gramática debe ser escrita en notación BNF (Backus-Naur form). 
A continuación veremos un ejemplo de dicha notación:
<personal> ::= <primer nombre>
           |   <inicial> "."

Detalles de la notación BFN y practicas recomendadas en Gold Parser
Es recomendable colocar etiquetas meta que contengan los datos del autor y versión del proyecto.
"Name" = 'Nombre del proyecto'
"Author" = 'Nombre del autor'
"Version" = 'Version del proyecto'
"About" = 'Descripción de la gramática

Se deben realizar definiciones de tipos de datos básicos que manejara la gramática. Entre estas definiciones tenemos los caracteres, nombres, identificadores, números enteros o de punto flotante.
Estas definiciones son importantes pues son los tipos básicos que nos permitirán formar los terminales y con dichos terminales podremos realizar la definición de las producciones.
{ID inicio} = {Letter} + [_]
{ID continuacion} = {Alphanumeric} + [_]
{String Chars} = {Printable} - ["]

Identificador = {ID inicio}{ID continuacion}*
StringLiteral = '"' {String Chars}* '"'

El primer estado es definido con la etiqueta “Start Rule” allí se definirá a en que produccion iniciara el compilador.
"Start Rule" = <Primera Produccion>

La definición de reglas o producciones se  hace con el siguiente formato:
Lado Izquierdo ::= Lado Derecho

Lado Izquierdo: Aquí va el nombre de la producción.
Lado Derecho: Aquí van todos los nombres de las producciones o reglas que se analizaran partiendo de la producción del lado Izquierdo, de ser necesario este lado puede estar vacio y si se producen varias reglas a partir de una misma producción principal entonces se separan con el símbolo “|”.
Los separan los simbolos “::=” que indica que el lado Izquierdo produce lo que hay en el lado derecho.
Ejemplo:
<Declaracion> ::= <Color> “:” <Elemento>
<Color>      ::= “Azul”
             |   “Negro”
<Elemento> ::= <Elemento> ”[” <ID> “]”
                 |

Acepta cadenas como esta:
Azul : [Mesa] [Carro] [Lapiz]
Negro : [Lamina]

Fase 2: Elección del lenguaje e implementación del parser
Al compilar la gramática en Gold Parser se generara un archivo con extensión “.cgt” que significa “Compiled Grammar Table”. Este archivo almacena la tabla de análisis generada por la gramática.
Existe una gran cantidad de lenguajes que pueden ser seleccionados. El código el parser generado por Gold Parser será compatible con dicho lenguaje. 
Entre estos lenguajes tenemos C/C++, Java, Visual Basic, C#, Visual Basic .Net, F#, Pascal, Delphi y generación de constantes para Cobol, Perl, Python y Ada entre otros. Se genera un archivo de dicho lenguaje que será la implementación para el compilador.

Fase 3: Implementación del compilador
En el archivo generado se colocara la ubicación del archivo “.cgt” y se procede a agregar código de programación en los fragmentos de código correspondientes a las reglas definidas en la gramática. Este archivo debe contener código correcto correspondiente al lenguaje elegido para implementar el compilador.
Se cargaran archivos de prueba para verificar si son aceptados por el compilador creado a través de paso de parámetros como él la ubicación del archivo de test o cadenas que contengan el texto a compilar.

No hay comentarios:

Publicar un comentario