You are on page 1of 5

DISEO E IMPLEMETACIN DE UN

COMPILADOR
Contenido
1

Introduccin............................................................................................. 2

Objetivos.................................................................................................. 2

2.1

Objetivo General................................................................................ 2

2.2

Objetivos Especficos.........................................................................2

Marco terico........................................................................................... 2
3.1

Caractersticas del lenguaje...............................................................2

3.1.1

Alfabeto....................................................................................... 2

3.1.2

Sintaxis del lenguaje...................................................................2

3.2

Anlisis Lxico................................................................................... 3

3.3

Anlisis Sintctico.............................................................................. 3

3.3.1
3.4
4

Gramticas libre de contexto......................................................3

Ejecucin de cdigo...........................................................................4

Conclusiones............................................................................................ 4

1 Introduccin
Un compilador es un programa o herramienta que permite pasar
informacin de un lenguaje a otro. Un compilador toma un texto (Cdigo
Fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje
comprensible por la computadora (Cdigo Objeto).
El presente proyecto detalla el desarrollo de la parte frontal (Front End)
de un compilador utilizando una notacin BNF (Gramtica libre de
contexto).

2 Objetivos
2.1 Objetivo General
Implementar una herramienta que constituya la parte frontal de un
compilador (Anlisis Lxico y Sintctico).

2.2 Objetivos Especficos


Desarrollar el mdulo de Anlisis lxico.
Desarrollar el mdulo de Anlisis sintctico.
Desarrollar el mdulo de Ejecucin de Cdigo

Marco terico

3.1 Caractersticas del lenguaje


3.1.1 Alfabeto

{a , b , , z , A , B , , Z , 0,1, , 9 }

Simbolos={=+ /. ,:;< ? [ ]( ){}, }


3.1.2 Sintaxis del lenguaje
3.1.2.1Tipos predefinidos
Entero. Tipo de nmero entero, las operaciones y funciones que
se les va a definir son suma, resta, multiplicacin, cociente,
absoluto, modulo y potencia.
Flotante. Tipo de nmero real de menor precisin.
Doble. Tipo de nmero real de mayor precisin.
Booleano. Tipo que representa expresiones lgicas.
Caracter. Tipo que representa un caracter puede ser una letra,
dgito o smbolo.
Cadena. Tipo que representa cadenas de caracteres para
manipular textos.

3.1.2.2Estructuras predefinidas
Lista. Se define como la coleccin de elementos del mismo tipo.
Cola. Se define igual como una lista.
Pila. Se define igual como una lista.

3.2 Anlisis Lxico


Primera fase del compilador, recibe como entrada el cdigo fuente y
produce una salida de componentes lxicos almacenados en una tabla
(tabla de smbolos), lo cual sirve para la etapa posterior (Anlisis
Sintctico) del compilador.

3.3 Anlisis Sintctico


Segunda fase del compilador, comprueba que los componentes lxicos
formen una expresin valida usando una gramtica libre de contexto
(BNF) que define recursivamente los componentes que pueden
aparecer en una expresin y el orden en que estos deben aparecer.
3.3.1 Gramticas libre de contexto

PalabraReservada>= si>< para> < funcion> <retornar >


expresion> operado r comp > cte>
si> =si
expresion> = identificador >< cte>

expre 1> expre 2> expre 3>


para>= para
expre 1>= palabr a clave > identificador > operador > cte>;
expre 2>= identificador > operado r comp > cte>;
expre 3>=identificador > operador >
identificador > cte>
funcion>=identificador
expresion> factorial>
expresion>retornar
retornar>=retornar
identificador>= palabr a clave > variable> operador > expresion> ;

variable >= letra> <letra> digito >< variable>

letra>=a|b|z
digito> =0|1|2|3|4|5|6|7|8|9|

palabr aclave > =enteroreal|booleano| cadena


operador >=+ /

cte>= digito> cte>


operado r comp >=<|>|||=

3.4 Ejecucin de cdigo


Se realizara la etapa de ejecucin de cdigo para la funcin factorial:

Sea
f ( n )=

f (n)=n !

sin=0 1
si n>0 n . f ( n1 )

Estructura de Datos. Para darle funcionalidad a la recursividad se utilizara la


estructura Pila.
Lenguaje de implementacin. Lenguaje de alto nivel C++.

4 Conclusiones
El desarrollo del proyecto ha sido de vital importancia para el
entendimiento sobre la parte frontal (Front End) de un compilador,
tambin se pudo determinar el alto coste de anlisis que conlleva dicha
fase.

You might also like