Anda di halaman 1dari 7

Universidad de San Carlos de Guatemala Facultad de Ingeniera

Curso: Organizacion de Lenguajes y Compiladores 2

Manual Tcnico
Proyecto 1: Virtual Machine

ri! "ladimir Gir#n $%r&uez

Carnet ' 2(()*)+,2 $arlon $anzo 2*/()/(Secci#n 0 1

Carnet ' 2(()*)*-.

Introduccin
Virtual Machine es una aplicacion de interpretacion de lenguajes tipo 2, que pueden ser resueltos con analisis sintactico libre de contexto. permitiendo al usuario generar paquetes de lenguajes, con acciones asociadas a la gramatica, para que luego, estos sirvan de intrpretes para los archivos de entrada final, como por ejemplo, para realizar un paquete calculadora, se debera escribir la gramatica de que reconozca expresiones aritmticas, para luego generar el paquete, y esta pueda interpretar un archivo de entrada con la expresion aritmetica correspondiente. El programa implementa un diseo puramente orientado a objetos, que junto con las caracter sticas de programaci!n por eventos de "ava, simplificaron en gran parte el desarrollo visual e interactivo de la aplicaci!n. #e utiliz! entonces para el desarrollo del proyecto, la plataforma "ava. $ermitindose compilar la aplicaci!n bajo Java JDK v %.& y utilizando netBeans para la administraci!n del proyecto, que gracias al sencillo editor de '() con que cuenta este IDE, permiti! generar de una manera r*pida y segura el c!digo necesario para la manipulaci!n de eventos sobre el (), tanto en '(), como en +,). En este documento, el programador se podr* guiar por medio de descripcion de los paquetes a travs del diseo del corazon del proyecto y de cada una de las clases que la componen, contando con descripciones de cada clase. #e recomienda que para ampliar la informaci!n dada aqu , se consulte el manual JavaDoc generado desde la documentaci!n del c!digo de la aplicaci!n, y localizado en la distribuci!n oficial, adem*s de revisar el c!digo fuente si se tiene alguna duda sobre la implantaci!n del c!digo.

Diseo interno generalizado:

Jerarqua de clases:
java.lang.Object

phparser.Ast java.awt.Component java.awt.Container

(implements

java.awt.image.ImageObserver,

java.awt.MenuContainer, java.io.Serializable)

java.awt.Window (implements java .a!!essibilit".#!!essible)

java.awt.$rame (implements java.awt.MenuContainer)

java .swing.%$rame java .a!!essibilit".#!!essible, java .swing.&oot'aneContainer, java .swing.WindowConstants)

(implements

phparser.GetFrame

phparser.MensajesParser lrparser.TablaLRFrame lalrgen.ConjuntoLR0 lalrgen.Elemento (implements java.util.Comparator()*, java.io.Serializable) lalrgen.ElementoLR0 lrparser.ElementoPila errormanager.ErrorElem (implements java.io.Serializable) errormanager.ErrorManager lalrgen.EstadoLR0 lalrgen.Gramatica (implements java.io.Serializable) lalrgen.Lado erec!o (implements java.util.Comparator()*, java.io.Serializable) lalrgen.LALRFilePac" (implements java.io.Serializable) lalrgen.Le#er (implements java+!up.runtime.S!anner) phparser.Le#er (implements java+!up.runtime.S!anner) java+!up.runtime.lr+parser

lalrgen.$arser

phparser.$arser 4

lrparser.LRParser vmw.Main phparser.%odoAst phparser.P!Parser phparser.Result&et lalrgen.&imbolo (implements java.util.Comparator()*, java.io.Serializable)

lalrgen.%oTerminal (implements java.io.Serializable)

lalrgen.Terminal (implements java.io.Serializable) lalrgen.s'm phparser.s'm lalrgen.&'mbol&et phparser.&'mTab phparser.&'mTab(&'mTabEntr' lrparser.TestLe#er (implements lrparser.S!anner) lrparser.To"en lalrgen.Tu$laLR (implements java.io.Serializable)

lalrgen.AccionLR (implements java.io.Serializable)

lalrgen.GoToLR (implements java.io.Serializable) lalrgen.)acc vmw.)m*

Descripcion de clases por paquete:


# !ontinua!ion se presenta una des!rip!ion general de !ada !lase ordenada por pa,uetes, 'ara ma"or in-orma!ion !onsultar los do!umentos %ava.o! in!luidos

Package errormanager

Class ummary
!rror!lem !rrorManager elemento que describe a un error de lectura Manejador estatico de errores lexicos, sintacticos, semanticos.

Package lalrgen

Class ummary
"ccion#$ Con%unto#$& !lemento !lemento#$& !stado#$& 'o(o#$ 'ramatica #adoDerecho #"#$)ilePack #e*er +o(erminal parser im,olo sym ym,ol et (erminal (upla#$ Vacc %e resentacion de un no terminal de la gramatica dada. C2. v&.1&/ generated arser. 3u erclase que re resenta los simbolos gramaticales. C2. generated class containing s(mbol constants. Clase base ara el conjunto de elementos rimero ( siguiente. %e resenta un terminal en una gramatica. %e resenta una celda de la tabla !% Clase rinci al ara el generador de anali$adores sintacticos, contiene todos los metodos utiles ara su utili$acion Clase derivada de Tu la!r que re resenta una accion en la tabla accion"# de los anali$adores !% %e resenta un conjunto de estados !%&, 'nclu(e )unciones ara la creacion ( mani ulacion de estos. %e resenta una roduccion sencilla *sin o erador +,+- de una sola linea .rovee una abstraccion de un elemento !%& que contiene una roduccion ( su res ectivo untito %e resenta un estado !%& del conjunto de estados !%& necesarios ara generar las acciones ( los loo/a0eads Clase derivada de Tu la!r que re resenta una transicion de estados en la tabla goto"# de los anali$adores !% %e resenta una gramatica libre de contexto. .rovee abstraccion al lado derec0o de una gramatica libre de contexto Clase que sirve como contenedor de los datos necesarios ara seriali$ar una tabla !1!% dada.

Package lrparser

-nter.ace ummary
canner 'nter)ace 3canner 4eclara el metodo next5to/en*- que debe ser im lementado or los scanners, el )in de arc0ivo*67O86- uede ser indicada (a sea retornanto 9 new Token($EOF$) o null.

Class ummary
!lementoPila #$Parser 4e)ine un elemento que se va a ingresar a la ila de analisis sintactico Clase que carga e inter reta un aquete que contiene una tabla !1!% generada reviamente, utili$ando un scanner que use la inter)a$ 3canner ( que tenga im lementada la )uncion next5to/en*- que devuelva

un to/en, ara oder reali$ar un analisis sintactico !%. (a,la#$)rame ;entana que muestra la tabla !1!% dada or un aquete. (est#e*er (oken Clase que de)ine a los to/ens retornados or el lexer

Package phparser

Class ummary
"st 'et)rame #e*er Mensa%esParser ;entanita de obtencion de valor de variable ara la instruccion get +odo"st parser PhParser $esult et sym ym(a, %e resenta un nodo abstracto de la cual se derivaran todos los di)erentes ti os de nodos nodos del 13T C2. v&.1&/ generated arser. .unto de entrada ara el arsing del codigo en .<. 3imboli$a un resultado devuelto or un recorrido 0ec0o en un 13T, ( es usado ara intercambios C2. generated class containing s(mbol constants. Tabla de simbolos a utili$ar durante la inter retacion Clase que re resenta un arbol de sintaxis abstracta ara la inter retacion dinamica del lenguaje dado ;entana de obtencion de valor ara la )uncion get

Anda mungkin juga menyukai