SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
CIS-IXB-002
UNIVERSIDAD
NACIONAL
DE LOJA
´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables
Carrera de Ingenier´ıa en Sistemas
Compilador para convetir n´umeros
cardinales a ordinales en Ingl´es
Tarea- Extra Clase
Noveno B
Autor:
• Yandry Ren´e Ram´ırez Saritama
Docente: Ing. Henry-Paz,
Loja-Ecuador
2015
1
´Indice
A. Introducci´on al desarrollo del Compilador 3
1 . Definici´on de Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 . ¿C´omo surgi´o el problema? . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 . ¿Qu´e hace el Compilador? . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 . ¿Para qu´e sirve el Compilador? . . . . . . . . . . . . . . . . . . . . . . . . 5
5 . ¿C´omo se realiz´o el Compilador? . . . . . . . . . . . . . . . . . . . . . . . 5
5 .1. JFLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 .2. JFLEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 .3. CUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6 . Analizador L´exico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7 . Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8 . C´odigo disponible en Github: . . . . . . . . . . . . . . . . . . . . . . . . . 11
B. BIBLIOGRAFIA 12
1 . Licencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
´Indice de figuras
1. N´umeros Cardinales y Ordinales . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Dise˜no del Aut´omata en Jflap . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Declaraci´on de variables archivo JFlex . . . . . . . . . . . . . . . . . . . . 7
4. Expresions regulares archivo JFlex . . . . . . . . . . . . . . . . . . . . . . 8
5. M´etodo validar errores archivo CUP . . . . . . . . . . . . . . . . . . . . . . 9
6. S´ımbolos terminales y no terminales archivo CUP . . . . . . . . . . . . . . 9
7. Secci´on de la gram´atica archivo CUP . . . . . . . . . . . . . . . . . . . . . 10
8. M´etodo principal de ejecuci´on . . . . . . . . . . . . . . . . . . . . . . . . . 10
9. M´etodo para escribir el texto le´ıdo desde la interfaz . . . . . . . . . . . . . 10
10. M´etodo traducir y obtener los valores dados . . . . . . . . . . . . . . . . . 11
11. Interfaz gr´afica de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
A. Introducci´on al desarrollo del Compilador
La construcci´on de un compilador es una de las tareas m´as gratas con las que un
inform´atico puede encontrarse a lo largo de su carrera profesional. Aunque no resulta sen-
sato pensar que una labor tal pueda formar parte de la actividad cotidiana de la mayor´ıa
de estos profesionales, s´ı es cierto que, con cierta frecuencia, suele aparecer la necesidad de
analizar un fichero de texto que contiene informaci´on distribuida seg´un alg´un patr´on re-
conocible: ficheros XML, ficheros de inicializaci´on .ini, ficheros con comandos del sistema
operativo, los propios programas fuente, etc. Es m´as, el concepto de an´alisis de un texto
puede ser ´util para ahorrar trabajo en situaciones que est´an fuera del ´ambito profesional
inform´atico, como por ejemplo la generaci´on de ´ındices anal´ıticos en archivos de texto
escritos con procesadores que no admiten esta opci´on.[1]
Pero a pesar de la indudable utilidad de los conceptos generales relacionados con la
teor´ıa y pr´actica de los an´alisis de textos, el crear un compilador introduce al inform´atico
en un nuevo mundo en el que el control sobre el ordenador es absoluto y le lleva al pa-
roxismo de la omnipotencia sobre la m´aquina. Y es que resulta imprescindible un pleno
conocimiento de todos los conceptos intr´ınsecos al ordenador: dispositivos de E/S, c´odigo
m´aquina utilizado por el microprocesador, comunicaci´on a bajo nivel entre ´este y el resto
de sus perif´ericos, distribuci´on de la memoria, mecanismos de uso de memoria virtual,
etc.[1]
Uno de los principales mecanismos de comunicaci´on entre un ordenador y una persona
viene dado por el env´ıo y recepci´on de mensajes de tipo textual: el usuario escribe una or-
den mediante el teclado, y el ordenador la ejecuta devolviendo como resultado un mensaje
informativo sobre las acciones llevadas a cabo. Aunque la evoluci´on de los ordenadores se
encuentra dirigida actualmente hacia el empleo de novedosas y ergon´omicas interfaces de
usuario (como el rat´on, las pantallas t´actiles, las tabletas gr´aficas, etc.), podemos decir
que casi todas las acciones que el usuario realiza sobre estas interfaces se traducen antes o
despu´es a secuencias de comandos que son ejecutadas como si hubieran sido introducidas
por teclado. Por otro lado, y desde el punto de vista del profesional de la Inform´atica, el
trabajo que ´este realiza sobre el ordenador se encuentra plagado de situaciones en las que
se produce una comunicaci´on textual directa con la m´aquina: utilizaci´on de un int´erprete
de comandos (shell), construcci´on de ficheros de trabajo por lotes, programaci´on mediante
diversos lenguajes, etc. Incluso los procesadores de texto como WordPerfect y MS Word
almacenan los documentos escritos por el usuario mediante una codificaci´on textual es-
tructurada que, cada vez que se abre el documento, es reconocida, recorrida y presentada
en pantalla. [1]
Es importante destacar la velocidad con la que hoy en d´ıa se puede construir un compi-
lador. El primer compilador de Fortran (Formula Translator), por ejemplo, necesit´o para
su implementaci´on el equivalente a 18 a˜nos de trabajo individual (realmente no se tard´o
tanto puesto que el trabajo se desarroll´o en equipo). Hasta que la teor´ıa de aut´omatas
y lenguajes formales no se aplic´o a la creaci´on de traductores, su desarrollo ha estado
plagado de problemas y errores. Sin embargo, hoy d´ıa un compilador b´asico puede ser el
proyecto fin de carrera de cualquier estudiante universitario de Inform´atica. [1]
3
1 . Definici´on de Compilador
Un copilador es el proceso de traducci´on que convierte un programa fuente escrito en
un lenguaje de alto nivel a un programa objeto en c´odigo m´aquina y listo por tanto para
ejecutarse en el ordenador, con poca o ninguna preparaci´on adicional[2]
2 . ¿C´omo surgi´o el problema?
El presente proyecto se enfoca en dar soluci´on a los inconvenientes que se producen
al momento de utilizar los n´umeros ordinales en ingl´es ya que su escritura es similar a la
de los n´umeros cardinales por ende tienden a confundir su escritura y es ah´ı donde nace
el problema pudiendo solucionarlo al mismo realizando un compilador que nos permita
tener los n´umeros ordinales en ingl´es disponibles para su respectivo uso.
Figura 1: N´umeros Cardinales y Ordinales
3 . ¿Qu´e hace el Compilador?
B´asicamente el compilador interpreta y convierte n´umeros cardinales a n´umeros ordi-
nales en ingl´es. Como entrada de datos se ha creado un archivo de texto donde se almacena
los d´ıgitos del 1 al 10, dando como resultado estos mismos n´umeros pero transformados
a n´umeros ordinales en ingl´es respectivamente.
4
4 . ¿Para qu´e sirve el Compilador?
La utilidad y provecho que se obtiene del compilador radica en la facilidad de obtener
una traducci´on correcta de los n´umeros ordinales en ingl´es, dando la oportunidad a ni˜nos
y j´ovenes de memorizar los diez primeros n´umeros para garantizar su correcta escritura.
5 . ¿C´omo se realiz´o el Compilador?
Para poder llevar a cabo el problema planteado se hizo uso del lenguaje de programa-
ci´on JAVA, adem´as se utiliz´o las librer´ıas JFLAP JCUP JFLEX las cuales permitieron el
desarrollo de un compilador que proporcione la soluci´on al problema planteado.
A continuaci´on se describe cada una de las herramientas utilizadas.
5 .1. JFLAP
JFlex es un generador de analizadores lexicogr´aficos desarrollado por Gerwin Klein
como extensi´on a la herramienta JLex desarrollada en la Universidad de Princeton. JFlex
est´a desarrollado en Java y genera c´odigo Java. Los programas escritos para JFlex tie-
nen un formato parecido a los escritos en PCLex; de hecho todos los patrones regulares
admisibles en Lex tambi´en son admitidos por JFlex, por lo que en este apartado nos cen-
traremos tan s´olo en las diferencias y extensiones, tanto de patrones como del esqueleto.
Figura 2: Dise˜no del Aut´omata en Jflap
5
5 .2. JFLEX
JFlex es un generador de analizadores lexicogr´aficos desarrollado por Gerwin Klein
como extensi´on a la herramienta JLex desarrollada en la Universidad de Princeton. JFlex
est´a desarrollado en Java y genera c´odigo Java. Los programas escritos para JFlex tienen
un formato parecido a los escritos en PCLex; de hecho todos los patrones regulares admisi-
bles en Lex tambi´en son admitidos por JFlex, por lo que en este apartado nos centraremos
tan s´olo en las diferencias y extensiones, tanto de patrones como del esqueleto que debe
poseer el fichero de entrada a JFlex. La instalaci´on y ejecuci´on de JFlex es trivial. Una
vez descomprimido el fichero jflex-1.3.5.zip, dispondremos del fichero JFlex.jar que tan
s´olo es necesario en tiempo de meta-compilaci´on, siendo el analizador generado totalmen-
te independiente. La clase Main del paquete JFlex es la que se encarga de metacompilar
nuestro programa .jflex de entrada; de esta manera, una invocaci´on t´ıpica es de la for-
ma: java JFlex.Main fichero.jflex lo que generar´a un fichero Yylex.java que implementa
al analizador lexicogr´afico.
5 .3. CUP
Cup es un analizador sint´actico LALR desarrollado en el Instituto de Tecnolog´ıa de
Georgia (EE.UU.) que genera c´odigo Java y que permite introducir acciones sem´anticas
escritas en dicho lenguaje. Utiliza una notaci´on bastante parecida a la de PCYacc e igual-
mente basada en reglas de producci´on.
El archivo cup tiene las siguiente partes:
C´odigo del Usuario para el Parser
C´odigo del Usuario para las Acciones de la Gram´atica
Declaraci´on de Variables para la Gram´atica
Gram´atica.
Las especificaciones comienzan de forma opcional con las directivas package y import,
estas tienen la misma sintaxis y juegan el mismo rol que el package y el import de un
programa normal escrito en Java.
En general, CUP implementa las convenciones l´oxicas de Java, como por ejemplo, so-
porta los dos tipos de comentarios que soporta Java.
Despu´es de la declaraci´on opcional de package, luego se pueden importar cero o mas pa-
quetes Java.
Luego de la declaraci´on opcional de import y package, viene una serie de declaracio-
nes opcionales que permiten al usuario escribir c´odigo que luego har´a parte del analizador
generado como parte del archivo parser, pero separado en una clase no-p´ublica que con-
tendr´a todo el c´odigo escrito por el usuario.[3]
6
6 . Analizador L´exico
Se encarga de buscar los componentes l´exicos o palabras que componen el programa
fuente, seg´un unas reglas o patrones. La entrada del analizador l´exico podemos definirla
como una secuencia de caracteres, que pueda hallarse codificada seg´un cualquier est´andar:
ASCII (American Standard Code for Information Interchange), EBCDIC (Extended Bi-
nary Coded Decimal Interchange Code), Unicode, etc. El analizador l´exico divide esta
secuencia en palabras con significado propio y despu´es las convierte a una secuencia de
terminales desde el punto de vista del analizador sint´actico. Dicha secuencia es el punto
de partida para que el analizador sint´actico construya el ´arbol sint´actico que reconoce las
sentencias de entrada.[1]
Figura 3: Declaraci´on de variables archivo JFlex
7
Figura 4: Expresions regulares archivo JFlex
7 . Analizador Sint´actico
Todo lenguaje de programaci´on obedece a unas reglas que describen la estructura
sint´actica de los programas bien formados que acepta. En Pascal, por ejemplo, un pro-
grama se compone de bloques; un bloque, de sentencias; una sentencia, de expresiones;
una expresi´on, de componentes l´exicos; y as´ı sucesivamente hasta llegar a los caracteres
b´asicos. Se puede describir la sintaxis de las construcciones de los lenguajes de programa-
ci´on por medio de gram´aticas de contexto libre o utilizando notaci´on BNF (Backus-Naur
Form).
Un analizador sint´actico es la fase del analizador que se encarga de chequear la secuen-
cia de tokens que representa al texto de entrada, en base a una gram´atica dada. En caso
de que el programa de entrada sea v´alido, suministra el ´arbol sint´actico que lo reconoce
en base a una representaci´on computacional. Este ´arbol es el punto de partida de la fase
posterior de la etapa de an´alisis: el analizador sem´antico.
Resulta evidente que los errores de correcci´on no pueden ser detectados por un com-
pilador, ya que en ellos interviene el concepto abstracto que el programador tiene sobre
el programa que construye, lo cual es desconocido, y probablemente incognoscible, por el
compilador. Por otro lado, la detecci´on de errores l´ogicos implica un esfuerzo computacio-
nal muy grande en tanto que el compilador debe ser capaz de averiguar los distintos flujos
que puede seguir un programa en ejecuci´on lo cual, en muchos casos, no s´olo es costoso,
sino tambi´en imposible. Por todo esto, los compiladores actuales se centran en el reco-
nocimiento de los tres primeros tipos de errores. En este tema hablaremos de los errores
de sintaxis, que son los que pueden impedir la correcta construcci´on de un ´arbol sint´actico.
8
El manejo de errores de sintaxis es el m´as complicado desde el punto de vista de la
creaci´on de compiladores. Nos interesa que cuando el compilador encuentre un error, no
cancele definitivamente la compilaci´on, sino que se recupere y siga buscando errores. Re-
cuperar un error no quiere decir corregirlo, sino ser capaz de seguir construyendo el ´arbol
sint´actico a pesar de los errores encontrados.[1]
Figura 5: M´etodo validar errores archivo CUP
Figura 6: S´ımbolos terminales y no terminales archivo CUP
9
Figura 7: Secci´on de la gram´atica archivo CUP
Figura 8: M´etodo principal de ejecuci´on
Figura 9: M´etodo para escribir el texto le´ıdo desde la interfaz
10
Figura 10: M´etodo traducir y obtener los valores dados
Figura 11: Interfaz gr´afica de usuario
8 . C´odigo disponible en Github:
https://github.com/yandry0007/CompiladorNumerosCardinalesIngles
11
B. BIBLIOGRAFIA
Referencias
[1] Traductores y Compiladores, EDICI´ON ELECTR´ONICA. Disponible en: http://
www.lcc.uma.es/˜galvez/ftp/libros/Compiladores.pdf
[2] Compiladores e Interpretes, Disponible en: http://www.giaa.inf.uc3m.es/
docencia/ITIG/introduccion.pdf
[3] Rafael Vega castro, disponible en : http://www.rafaelvega.info/wp-content/
uploads/Articulo.pdf
12
1 . Licencia
Ensayo by Yandry Ram´ırez is licensed Under a Creative Commons Reconocimiento-
NoComercial-CompartirIgual 3.0 Unported License.
13

Weitere ähnliche Inhalte

Was ist angesagt?

Compilador: DEFINICIÓN
Compilador: DEFINICIÓNCompilador: DEFINICIÓN
Compilador: DEFINICIÓNInfomania pro
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusGladys Arce
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusAbefo
 
Capítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidadesCapítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidadesJulio Ayala Rolón
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskJohann Chambilla
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensambladoriagardea
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador evelynm10
 
Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?  Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador? Luis Stifler
 
Manual de python
Manual de pythonManual de python
Manual de pythonULEAM
 
Programacion orientada a objetos python manuel casado martín - universidad ...
Programacion orientada a objetos python   manuel casado martín - universidad ...Programacion orientada a objetos python   manuel casado martín - universidad ...
Programacion orientada a objetos python manuel casado martín - universidad ...Wilson Bautista
 
Lenguaje de ensamblador
Lenguaje de ensambladorLenguaje de ensamblador
Lenguaje de ensambladorWilman Diaz
 
Compiladores de programacion
Compiladores de programacionCompiladores de programacion
Compiladores de programacionMtCeroCero
 

Was ist angesagt? (20)

Compilador: DEFINICIÓN
Compilador: DEFINICIÓNCompilador: DEFINICIÓN
Compilador: DEFINICIÓN
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplus
 
Resolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplusResolviendo problemas-con-cplusplus
Resolviendo problemas-con-cplusplus
 
Entorno Easy Code
Entorno Easy CodeEntorno Easy Code
Entorno Easy Code
 
Capítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidadesCapítulo 0 Qbasic generalidades
Capítulo 0 Qbasic generalidades
 
Cap.1 compiladores
Cap.1 compiladoresCap.1 compiladores
Cap.1 compiladores
 
Programacion ensamblador-procesadoresk
Programacion ensamblador-procesadoreskProgramacion ensamblador-procesadoresk
Programacion ensamblador-procesadoresk
 
Ensayo
EnsayoEnsayo
Ensayo
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Karen y Vivian
Karen y VivianKaren y Vivian
Karen y Vivian
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?  Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?
 
Manual de python
Manual de pythonManual de python
Manual de python
 
Programacion orientada a objetos python manuel casado martín - universidad ...
Programacion orientada a objetos python   manuel casado martín - universidad ...Programacion orientada a objetos python   manuel casado martín - universidad ...
Programacion orientada a objetos python manuel casado martín - universidad ...
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Lenguaje de ensamblador
Lenguaje de ensambladorLenguaje de ensamblador
Lenguaje de ensamblador
 
Practica adicional
Practica adicionalPractica adicional
Practica adicional
 
Compiladores de programacion
Compiladores de programacionCompiladores de programacion
Compiladores de programacion
 

Ähnlich wie Proyecto de compiladores_unl

Traductores y compiladores con lex
Traductores y compiladores con lexTraductores y compiladores con lex
Traductores y compiladores con lexfranciscolanuza
 
Lenguaje ensambldor
Lenguaje ensambldorLenguaje ensambldor
Lenguaje ensambldortareassss
 
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
Raúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresadaRaúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresada
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresadaRaul
 
Breve inmersión en LaTeX para documentos técnicos
Breve inmersión en LaTeX para documentos técnicosBreve inmersión en LaTeX para documentos técnicos
Breve inmersión en LaTeX para documentos técnicosJoan Català
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema OperativoKrisJimCed
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupoJoka211522
 
SISTEMA OPERATIVO
SISTEMA OPERATIVOSISTEMA OPERATIVO
SISTEMA OPERATIVOsilvia0208
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraAlexandraMolinaSanchez
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraAlexandraMolinaSanchez
 
Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...
Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...
Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...Claudia Naveda
 

Ähnlich wie Proyecto de compiladores_unl (20)

Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Traductores y compiladores con lex
Traductores y compiladores con lexTraductores y compiladores con lex
Traductores y compiladores con lex
 
Lenguaje ensambldor
Lenguaje ensambldorLenguaje ensambldor
Lenguaje ensambldor
 
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
Raúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresadaRaúl  A Gómez A -> Compilador Cambia de Color  a una palabra ingresada
Raúl A Gómez A -> Compilador Cambia de Color a una palabra ingresada
 
Resumen1
Resumen1Resumen1
Resumen1
 
Breve inmersión en LaTeX para documentos técnicos
Breve inmersión en LaTeX para documentos técnicosBreve inmersión en LaTeX para documentos técnicos
Breve inmersión en LaTeX para documentos técnicos
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema Operativo
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Tl primer grupo[2]
Tl primer grupo[2]Tl primer grupo[2]
Tl primer grupo[2]
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
SISTEMA OPERATIVO
SISTEMA OPERATIVOSISTEMA OPERATIVO
SISTEMA OPERATIVO
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
Fortran Alcubierre.pdf
Fortran Alcubierre.pdfFortran Alcubierre.pdf
Fortran Alcubierre.pdf
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...
Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...
Construcci__n_de_Compiladores_Principios_y_Pr__ctica__1ra_Edicion__Kenneth_Lo...
 
Contenido
ContenidoContenido
Contenido
 
Guia analisis-de-algoritmos
Guia analisis-de-algoritmosGuia analisis-de-algoritmos
Guia analisis-de-algoritmos
 

Kürzlich hochgeladen

Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5juanjoelaytegonzales2
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...WeslinDarguinHernand
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfwduranteg
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalaciónQualityAdviceService
 
Libro de ingeniería sobre Tecnología Eléctrica.pdf
Libro de ingeniería sobre Tecnología Eléctrica.pdfLibro de ingeniería sobre Tecnología Eléctrica.pdf
Libro de ingeniería sobre Tecnología Eléctrica.pdfCristinCrdova1
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...GuillermoRodriguez239462
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptNombre Apellidos
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfRonaldLozano11
 
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdfDavidTicona31
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTElisaLen4
 
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptRobertoCastao8
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosRamiroCruzSalazar
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.pptjacnuevarisaralda22
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxwilliam801689
 
Suelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramientoSuelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramientoluishumbertoalvarezv1
 
Introduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptIntroduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptReYMaStERHD
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfGabrielCayampiGutier
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologicaJUDITHYEMELINHUARIPA
 

Kürzlich hochgeladen (20)

Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalación
 
Libro de ingeniería sobre Tecnología Eléctrica.pdf
Libro de ingeniería sobre Tecnología Eléctrica.pdfLibro de ingeniería sobre Tecnología Eléctrica.pdf
Libro de ingeniería sobre Tecnología Eléctrica.pdf
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
2024 GUIA PRACTICAS MICROBIOLOGIA- UNA 2017 (1).pdf
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.pptELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
ELASTICIDAD PRECIO DE LA DEMaaanANDA.ppt
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
Suelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramientoSuelo, tratamiento saneamiento y mejoramiento
Suelo, tratamiento saneamiento y mejoramiento
 
Introduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptIntroduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.ppt
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 

Proyecto de compiladores_unl

  • 1. CIS-IXB-002 UNIVERSIDAD NACIONAL DE LOJA ´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables Carrera de Ingenier´ıa en Sistemas Compilador para convetir n´umeros cardinales a ordinales en Ingl´es Tarea- Extra Clase Noveno B Autor: • Yandry Ren´e Ram´ırez Saritama Docente: Ing. Henry-Paz, Loja-Ecuador 2015 1
  • 2. ´Indice A. Introducci´on al desarrollo del Compilador 3 1 . Definici´on de Compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 . ¿C´omo surgi´o el problema? . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 . ¿Qu´e hace el Compilador? . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 . ¿Para qu´e sirve el Compilador? . . . . . . . . . . . . . . . . . . . . . . . . 5 5 . ¿C´omo se realiz´o el Compilador? . . . . . . . . . . . . . . . . . . . . . . . 5 5 .1. JFLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 .2. JFLEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5 .3. CUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 . Analizador L´exico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 . Analizador Sint´actico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 . C´odigo disponible en Github: . . . . . . . . . . . . . . . . . . . . . . . . . 11 B. BIBLIOGRAFIA 12 1 . Licencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 ´Indice de figuras 1. N´umeros Cardinales y Ordinales . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Dise˜no del Aut´omata en Jflap . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Declaraci´on de variables archivo JFlex . . . . . . . . . . . . . . . . . . . . 7 4. Expresions regulares archivo JFlex . . . . . . . . . . . . . . . . . . . . . . 8 5. M´etodo validar errores archivo CUP . . . . . . . . . . . . . . . . . . . . . . 9 6. S´ımbolos terminales y no terminales archivo CUP . . . . . . . . . . . . . . 9 7. Secci´on de la gram´atica archivo CUP . . . . . . . . . . . . . . . . . . . . . 10 8. M´etodo principal de ejecuci´on . . . . . . . . . . . . . . . . . . . . . . . . . 10 9. M´etodo para escribir el texto le´ıdo desde la interfaz . . . . . . . . . . . . . 10 10. M´etodo traducir y obtener los valores dados . . . . . . . . . . . . . . . . . 11 11. Interfaz gr´afica de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
  • 3. A. Introducci´on al desarrollo del Compilador La construcci´on de un compilador es una de las tareas m´as gratas con las que un inform´atico puede encontrarse a lo largo de su carrera profesional. Aunque no resulta sen- sato pensar que una labor tal pueda formar parte de la actividad cotidiana de la mayor´ıa de estos profesionales, s´ı es cierto que, con cierta frecuencia, suele aparecer la necesidad de analizar un fichero de texto que contiene informaci´on distribuida seg´un alg´un patr´on re- conocible: ficheros XML, ficheros de inicializaci´on .ini, ficheros con comandos del sistema operativo, los propios programas fuente, etc. Es m´as, el concepto de an´alisis de un texto puede ser ´util para ahorrar trabajo en situaciones que est´an fuera del ´ambito profesional inform´atico, como por ejemplo la generaci´on de ´ındices anal´ıticos en archivos de texto escritos con procesadores que no admiten esta opci´on.[1] Pero a pesar de la indudable utilidad de los conceptos generales relacionados con la teor´ıa y pr´actica de los an´alisis de textos, el crear un compilador introduce al inform´atico en un nuevo mundo en el que el control sobre el ordenador es absoluto y le lleva al pa- roxismo de la omnipotencia sobre la m´aquina. Y es que resulta imprescindible un pleno conocimiento de todos los conceptos intr´ınsecos al ordenador: dispositivos de E/S, c´odigo m´aquina utilizado por el microprocesador, comunicaci´on a bajo nivel entre ´este y el resto de sus perif´ericos, distribuci´on de la memoria, mecanismos de uso de memoria virtual, etc.[1] Uno de los principales mecanismos de comunicaci´on entre un ordenador y una persona viene dado por el env´ıo y recepci´on de mensajes de tipo textual: el usuario escribe una or- den mediante el teclado, y el ordenador la ejecuta devolviendo como resultado un mensaje informativo sobre las acciones llevadas a cabo. Aunque la evoluci´on de los ordenadores se encuentra dirigida actualmente hacia el empleo de novedosas y ergon´omicas interfaces de usuario (como el rat´on, las pantallas t´actiles, las tabletas gr´aficas, etc.), podemos decir que casi todas las acciones que el usuario realiza sobre estas interfaces se traducen antes o despu´es a secuencias de comandos que son ejecutadas como si hubieran sido introducidas por teclado. Por otro lado, y desde el punto de vista del profesional de la Inform´atica, el trabajo que ´este realiza sobre el ordenador se encuentra plagado de situaciones en las que se produce una comunicaci´on textual directa con la m´aquina: utilizaci´on de un int´erprete de comandos (shell), construcci´on de ficheros de trabajo por lotes, programaci´on mediante diversos lenguajes, etc. Incluso los procesadores de texto como WordPerfect y MS Word almacenan los documentos escritos por el usuario mediante una codificaci´on textual es- tructurada que, cada vez que se abre el documento, es reconocida, recorrida y presentada en pantalla. [1] Es importante destacar la velocidad con la que hoy en d´ıa se puede construir un compi- lador. El primer compilador de Fortran (Formula Translator), por ejemplo, necesit´o para su implementaci´on el equivalente a 18 a˜nos de trabajo individual (realmente no se tard´o tanto puesto que el trabajo se desarroll´o en equipo). Hasta que la teor´ıa de aut´omatas y lenguajes formales no se aplic´o a la creaci´on de traductores, su desarrollo ha estado plagado de problemas y errores. Sin embargo, hoy d´ıa un compilador b´asico puede ser el proyecto fin de carrera de cualquier estudiante universitario de Inform´atica. [1] 3
  • 4. 1 . Definici´on de Compilador Un copilador es el proceso de traducci´on que convierte un programa fuente escrito en un lenguaje de alto nivel a un programa objeto en c´odigo m´aquina y listo por tanto para ejecutarse en el ordenador, con poca o ninguna preparaci´on adicional[2] 2 . ¿C´omo surgi´o el problema? El presente proyecto se enfoca en dar soluci´on a los inconvenientes que se producen al momento de utilizar los n´umeros ordinales en ingl´es ya que su escritura es similar a la de los n´umeros cardinales por ende tienden a confundir su escritura y es ah´ı donde nace el problema pudiendo solucionarlo al mismo realizando un compilador que nos permita tener los n´umeros ordinales en ingl´es disponibles para su respectivo uso. Figura 1: N´umeros Cardinales y Ordinales 3 . ¿Qu´e hace el Compilador? B´asicamente el compilador interpreta y convierte n´umeros cardinales a n´umeros ordi- nales en ingl´es. Como entrada de datos se ha creado un archivo de texto donde se almacena los d´ıgitos del 1 al 10, dando como resultado estos mismos n´umeros pero transformados a n´umeros ordinales en ingl´es respectivamente. 4
  • 5. 4 . ¿Para qu´e sirve el Compilador? La utilidad y provecho que se obtiene del compilador radica en la facilidad de obtener una traducci´on correcta de los n´umeros ordinales en ingl´es, dando la oportunidad a ni˜nos y j´ovenes de memorizar los diez primeros n´umeros para garantizar su correcta escritura. 5 . ¿C´omo se realiz´o el Compilador? Para poder llevar a cabo el problema planteado se hizo uso del lenguaje de programa- ci´on JAVA, adem´as se utiliz´o las librer´ıas JFLAP JCUP JFLEX las cuales permitieron el desarrollo de un compilador que proporcione la soluci´on al problema planteado. A continuaci´on se describe cada una de las herramientas utilizadas. 5 .1. JFLAP JFlex es un generador de analizadores lexicogr´aficos desarrollado por Gerwin Klein como extensi´on a la herramienta JLex desarrollada en la Universidad de Princeton. JFlex est´a desarrollado en Java y genera c´odigo Java. Los programas escritos para JFlex tie- nen un formato parecido a los escritos en PCLex; de hecho todos los patrones regulares admisibles en Lex tambi´en son admitidos por JFlex, por lo que en este apartado nos cen- traremos tan s´olo en las diferencias y extensiones, tanto de patrones como del esqueleto. Figura 2: Dise˜no del Aut´omata en Jflap 5
  • 6. 5 .2. JFLEX JFlex es un generador de analizadores lexicogr´aficos desarrollado por Gerwin Klein como extensi´on a la herramienta JLex desarrollada en la Universidad de Princeton. JFlex est´a desarrollado en Java y genera c´odigo Java. Los programas escritos para JFlex tienen un formato parecido a los escritos en PCLex; de hecho todos los patrones regulares admisi- bles en Lex tambi´en son admitidos por JFlex, por lo que en este apartado nos centraremos tan s´olo en las diferencias y extensiones, tanto de patrones como del esqueleto que debe poseer el fichero de entrada a JFlex. La instalaci´on y ejecuci´on de JFlex es trivial. Una vez descomprimido el fichero jflex-1.3.5.zip, dispondremos del fichero JFlex.jar que tan s´olo es necesario en tiempo de meta-compilaci´on, siendo el analizador generado totalmen- te independiente. La clase Main del paquete JFlex es la que se encarga de metacompilar nuestro programa .jflex de entrada; de esta manera, una invocaci´on t´ıpica es de la for- ma: java JFlex.Main fichero.jflex lo que generar´a un fichero Yylex.java que implementa al analizador lexicogr´afico. 5 .3. CUP Cup es un analizador sint´actico LALR desarrollado en el Instituto de Tecnolog´ıa de Georgia (EE.UU.) que genera c´odigo Java y que permite introducir acciones sem´anticas escritas en dicho lenguaje. Utiliza una notaci´on bastante parecida a la de PCYacc e igual- mente basada en reglas de producci´on. El archivo cup tiene las siguiente partes: C´odigo del Usuario para el Parser C´odigo del Usuario para las Acciones de la Gram´atica Declaraci´on de Variables para la Gram´atica Gram´atica. Las especificaciones comienzan de forma opcional con las directivas package y import, estas tienen la misma sintaxis y juegan el mismo rol que el package y el import de un programa normal escrito en Java. En general, CUP implementa las convenciones l´oxicas de Java, como por ejemplo, so- porta los dos tipos de comentarios que soporta Java. Despu´es de la declaraci´on opcional de package, luego se pueden importar cero o mas pa- quetes Java. Luego de la declaraci´on opcional de import y package, viene una serie de declaracio- nes opcionales que permiten al usuario escribir c´odigo que luego har´a parte del analizador generado como parte del archivo parser, pero separado en una clase no-p´ublica que con- tendr´a todo el c´odigo escrito por el usuario.[3] 6
  • 7. 6 . Analizador L´exico Se encarga de buscar los componentes l´exicos o palabras que componen el programa fuente, seg´un unas reglas o patrones. La entrada del analizador l´exico podemos definirla como una secuencia de caracteres, que pueda hallarse codificada seg´un cualquier est´andar: ASCII (American Standard Code for Information Interchange), EBCDIC (Extended Bi- nary Coded Decimal Interchange Code), Unicode, etc. El analizador l´exico divide esta secuencia en palabras con significado propio y despu´es las convierte a una secuencia de terminales desde el punto de vista del analizador sint´actico. Dicha secuencia es el punto de partida para que el analizador sint´actico construya el ´arbol sint´actico que reconoce las sentencias de entrada.[1] Figura 3: Declaraci´on de variables archivo JFlex 7
  • 8. Figura 4: Expresions regulares archivo JFlex 7 . Analizador Sint´actico Todo lenguaje de programaci´on obedece a unas reglas que describen la estructura sint´actica de los programas bien formados que acepta. En Pascal, por ejemplo, un pro- grama se compone de bloques; un bloque, de sentencias; una sentencia, de expresiones; una expresi´on, de componentes l´exicos; y as´ı sucesivamente hasta llegar a los caracteres b´asicos. Se puede describir la sintaxis de las construcciones de los lenguajes de programa- ci´on por medio de gram´aticas de contexto libre o utilizando notaci´on BNF (Backus-Naur Form). Un analizador sint´actico es la fase del analizador que se encarga de chequear la secuen- cia de tokens que representa al texto de entrada, en base a una gram´atica dada. En caso de que el programa de entrada sea v´alido, suministra el ´arbol sint´actico que lo reconoce en base a una representaci´on computacional. Este ´arbol es el punto de partida de la fase posterior de la etapa de an´alisis: el analizador sem´antico. Resulta evidente que los errores de correcci´on no pueden ser detectados por un com- pilador, ya que en ellos interviene el concepto abstracto que el programador tiene sobre el programa que construye, lo cual es desconocido, y probablemente incognoscible, por el compilador. Por otro lado, la detecci´on de errores l´ogicos implica un esfuerzo computacio- nal muy grande en tanto que el compilador debe ser capaz de averiguar los distintos flujos que puede seguir un programa en ejecuci´on lo cual, en muchos casos, no s´olo es costoso, sino tambi´en imposible. Por todo esto, los compiladores actuales se centran en el reco- nocimiento de los tres primeros tipos de errores. En este tema hablaremos de los errores de sintaxis, que son los que pueden impedir la correcta construcci´on de un ´arbol sint´actico. 8
  • 9. El manejo de errores de sintaxis es el m´as complicado desde el punto de vista de la creaci´on de compiladores. Nos interesa que cuando el compilador encuentre un error, no cancele definitivamente la compilaci´on, sino que se recupere y siga buscando errores. Re- cuperar un error no quiere decir corregirlo, sino ser capaz de seguir construyendo el ´arbol sint´actico a pesar de los errores encontrados.[1] Figura 5: M´etodo validar errores archivo CUP Figura 6: S´ımbolos terminales y no terminales archivo CUP 9
  • 10. Figura 7: Secci´on de la gram´atica archivo CUP Figura 8: M´etodo principal de ejecuci´on Figura 9: M´etodo para escribir el texto le´ıdo desde la interfaz 10
  • 11. Figura 10: M´etodo traducir y obtener los valores dados Figura 11: Interfaz gr´afica de usuario 8 . C´odigo disponible en Github: https://github.com/yandry0007/CompiladorNumerosCardinalesIngles 11
  • 12. B. BIBLIOGRAFIA Referencias [1] Traductores y Compiladores, EDICI´ON ELECTR´ONICA. Disponible en: http:// www.lcc.uma.es/˜galvez/ftp/libros/Compiladores.pdf [2] Compiladores e Interpretes, Disponible en: http://www.giaa.inf.uc3m.es/ docencia/ITIG/introduccion.pdf [3] Rafael Vega castro, disponible en : http://www.rafaelvega.info/wp-content/ uploads/Articulo.pdf 12
  • 13. 1 . Licencia Ensayo by Yandry Ram´ırez is licensed Under a Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 Unported License. 13