You are on page 1of 9

RISI 2(2), 60-68 (2005) A NLISIS COMPARATIVO ENTRE UN ANALIZADOR SINTCTICO LL Y UN ANALIZADOR SINTCTICO LR Rev. investig. sist. inform.

Facultad de Ingeniera de Sistemas e Informtica Universidad Nacional Mayor de San Marcos ISSN: 1815-0268 (versin impresa)/ ISSN: 1816-3823 (versin electrnica)

PARA UN LENGUAJE FORMAL

ANLISIS COMPARATIVO ENTRE UN ANALIZADOR SINTCTICO LL Y UN ANALIZADOR SINTCTICO LR PARA UN LENGUAJE FORMAL
COMPARATIVE ANALYSIS BETWEEN A PARSER SINTACTIC LL AND A PARSER SINTACTIC LR FOR A FORMAL LANGUAGE Augusto Cortez*

RESUMEN

El presente trabajo surge como una necesidad de contrastar los mtodos de anlisis sintcticos ascendente y descendente, que se realizan durante la fases de anlisis en la compilacin de un programa fuente escrito en un lenguaje formal. Al momento de especificar un lenguaje, se tiene que especificar la sintaxis y la gramtica, asimismo para disear su compilador, especficamente el mdulo de anlisis sintctico, tiene que decidirse que tcnica utilizar. Este trabajo pretende servir como un instrumento de decisin. Palabras clave: Lenguaje Formal, Compilador, Analizador Lxico, Analizador Sintctico.

ABSTRACT

The present work arises like a necessity to resist the methods of ascending and descendent syntactic analysis, that is made during the phases of analysis in the compilation of a source program written in a formal language of high level. At the time of specifying a language, it must specify the syntax and the gramatic. Also to design its compiler, specifically I modulate of syntactic analysis, must be decided that technical to use. This work tries to serve like a decision instrument. Key word: Formal language, compilers, lexical analyzer, syntactic analyzer.

1. INTRODUCCIN Generalmente los programadores se especializan en programar en uno o dos lenguajes. SAMETT en 1969 elabor una lista de 120 lenguajes, de uso bastante amplio, y desde entonces se han desarrollado muchos ms. Frente a ello muchos se preguntan cul es la finalidad de estudiar la teora de lenguajes de programacin y de traductores. Existen razones para realizar un estudio sobre la teora de lenguajes, y la construccin de su traductor, y es que muchas de las tcnicas son utilizadas tambin en otras reas como son los manejadores de base de datos, reconocedores de patrones, etc.

2. MARCO CONCEPTUAL 2.1. LENGUAJES Un lenguaje consiste de un nmero finito o infinito de secuencias o frases. Los lingistas definen un lenguaje como un sistema de comunicacin que est compuesto de smbolos y constructores para describir frases vlidas para el lenguaje. Aunque un lenguaje puede describirse enumerando sus elementos, es conveniente definirlo a travs de propiedades: Descripcin gramatical: Sea G una gramtica, definimos el lenguaje generado por una gramtica y lo denotamos L(G) de la siguiente forma:

* Docente Asociado del Departamento de Ciencias de la Computacin, Facultad de Ingeniera de Sistemas e Informtica de la Universidad Nacional Mayor de San Marcos, Lima-Per E-mail: acortezv@unmsm.edu.pe

60

FISI-UNMSM

RISI 2(2), 60-68 (2005)

AUGUSTO CORTEZ

L(G) ={w / S

w, y adems w Vt* },

G denota la gramtica del lenguaje L. L contiene secuencias de terminales que son generadas a partir del axioma de G. L = {amb , m 0} descripcin algebraica Podemos hallar G tal que L=L(G) G (VN, VT, S, P)
S VN = {S} VT ={a, b} P:{ S aS / b} S S S b aS aS aS ab aaS aaS aab aaaS aaab

- Esquemas sintcticos - Representacin grfica de la sintaxis Esquemas sintcticos Un programa tiene la siguiente sintaxis
ACCIN <Id> INICIO CUERPO FIN

donde: donde: Id: denota el nombre del programa. CUERPO: denota el cuerpo del programa. donde: Id: denota el nombre del programa. CUERPO: denota el cuerpo del programa. SD; SP;

luego b, ab, aab, aaab L(G). Descripcin mediante expresiones regulares Si r es expresin regular, el conjunto de secuencias generadas por r es denominado lenguaje regular y lo denotamos L(r). Para r = a*b, se tiene L(r) = {b, ab, aab, aaab,...}, esto denota el conjunto de frases de cero o ms smbolos a, que terminan con smbolo b. Descripcin mediante un autmata Si M es un autmata finito, al conjunto de secuencias que reconoce M lo denotamos como L(M).

El cuerpo consta de dos partes CUERPO: donde: SD: denota la seccin declaraciones. SP: denota la seccin proposiciones. Declaracin 1 Declaracin 2 ... Declaracin n La seccin de declaraciones consta de una secuencia de declaraciones. SD se define:

r = ab*
b a A B A

r = a*b
a b B

En forma recursiva puede definirse

D / D ; SD

Conjunto de frases que constan de una a, seguido de 0 o ms b

Conjunto de frases que constan de una b, precedida de 0 o ms ab

La seccin de declaraciones SD, consta de una declaracin D o de una D seguida de SD donde: D: denota una proposicin de declaracin. 2.2. COMPILADORES

La figura muestra los diagramas de transiciones de dos autmatas que corresponde a la expresin regular ab*

Sintaxis de un lenguaje La sintaxis proporciona al programador el formato de un programa, y se describe mediante esquemas sintcticos o mediante diagramas sintcticos: Traductores Un traductor es, en forma general, un programa que traduce un programa escrito en un lenguaje:

FISI-UNMSM

61

ANLISIS COMPARATIVO ENTRE UN ANALIZADOR SINTCTICO LL Y UN ANALIZADOR SINTCTICO LR

PARA UN LENGUAJE FORMAL

el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje: el lenguaje objeto. Durante este proceso de traduccin el compilador informa al usuario de la presencia de errores en el programa fuente y presenta tcnicas de recuperacin [12].
P R O G R A MA FU EN T E P R O G R A MA O B J ET O

Ejemplo:

L= { a mb , m 0}= { b, ab, aab, aaab,...}


G (VN, VT, S, P) donde:
S VN = {S} VT ={a, b} P: { S aS / b} S S S b aS aS aS ab aaS aaS aab aaaS aaab

ANALIZADOR LXICO

GENERADOR DE CDIGO

ANALIZADOR SINTCTICO

luego b, ab, aab, aaab L(G).

Lenguajes definidos por una gramtica Si G es una gramtica, genera un lenguaje L(G) VT* Funciones bsicas del compilador Una proposicin est conformada por una cadena de caracteres; sin embargo, por razones de anlisis el compilador agrupa los caracteres en secuencias llamadas componentes lxicos (TOKENS). Estos componentes pueden suponerse como los axiomas o fundamentos del lenguaje, pues vienen a ser los tomos o ladrillos con los que se construyen las frases de un lenguaje. Un componente lxico puede ser una palabra clave, un nombre de variable (identificador), una constante numrica entera o real, un operador aritmtico etc. Despus de analizar los componentes lxicos, cada proposicin del programa debe reconocerse como una frase del lenguaje, como una declaracin, proposicin de asignacin etc. Este proceso se denomina anlisis sintctico (PARSING), lo realiza la parte del compilador denominada analizador sintctico (PARSER). El ltimo paso en el proceso bsico de traduccin es la generacin de cdigo objeto [1], [5]. L ={w / S
*

w , y adems w VT* },

es decir son todas las secuencias que estn en la cerradura de VT, que pueden obtenerse a partir del axioma de la gramtica aplicando las reglas de produccin.

4. AUTMATAS FINITOS Un autmata finito es un modelo matemtico que sirve como reconocedor de frases de un lenguaje, es representado como un diagrama de transiciones grafo dirigido. en el que los nodos son los estados y las aristas etiquetadas representan las funciones de transicin [3]. Formalmente un autmata se define como un modelo matemtico, el cual denotaremos: M =(, , , 0 , F) : conjunto de estados : alfabeto de entrada (alfabeto)

3. GRAMTICA La gramtica de un lenguaje describe las reglas para verificar el orden estructural de las frases. Definicin formal de gramtica Una gramtica se define formalmente de la siguiente forma: G =(VT , VN, P, S) donde: VT: conjunto finito de smbolos terminales del lenguaje. VN: conjunto finito de smbolos no terminales. P: conjunto finito de reglas de produccin. S : Smbolo distinguido o axioma inicial a partir del cual se reconocern las secuencias de L, aplicando sucesivamente las reglas de produccin.

: funcin de transicin, : x
0: estado inicial

F: conjunto de estados de aceptacin El autmata M puede ser determinista (AFD) o no determinista (AFND). M es determinista cuando a partir de un estado puede pasarse a un solo estado con cada entrada del alfabeto, adems no tiene ninguna transicin con para cada estado. Un autmata es no determinista cuando se da el caso que existe ms de una transicin desde un estado con la misma entrada [7], [9]. Ejemplo: sea r = (a/b)*ab expresin regular, construimos M(r) autmata no determinista, a partir de la expresin regular.

62

FISI-UNMSM

RISI 2(2), 60-68 (2005)

AUGUSTO CORTEZ

a/b a 0
inicio Figura 1. Autmata finito no determinista M(E, , , 0, F) E={0, 1, 2} = { a, b} F= {2}

b 1 2

[A] [B] [D]

a [B] [B] [B]

b [A] [D] [A]

5. AUTMATA DE PILA Un autmata de pila es esencialmente un autmata finito al que se le ha aadido una memoria (pila). As como los lenguajes regulares pueden definirse a travs de un autmata finito, un lenguaje libre de contexto puede definirse a travs de un autmata de pila [3], [7], [5]. Consideremos el lenguaje L(G) = {anbn / n N} generado por la gramtica G , P: { } esta gramtica no es regular, es decir no existe una expresin regular que la genere y por ello tampoco existe un autmata finito que reconozca L(G). Para este tipo de lenguajes es necesario adicionar al autmata finito una pila que sirva para memorizar algunos smbolos de referencia. Ejemplo: Sea la gramtica G (VN, VT, S, P) donde: VN = {S} , VT= {a, b, c} P: { 1 2 3 } L(G) = {wcwR / w {a, b}
*

0 1 2

a {o,1} -

b {o} {2} -

El siguiente autmata determinista es equivalente al autmata de la figura 1.


b C b a a A inicio B b D b

1 2

S S

ab, aSb,

Figura 2. Autmata finito determinista M(E, A, , 0, F) E={A, B, C, D} A = { a, b} F = {D} b C D C C

AUTMATA DE PILA AP gramtica libre de contexto AUT MATA FI NITO AF gramtica regular

A B C D

a B B B B

S S S

aSa, bSb, c

Existe un mtodo llamado de particiones, el cual no detallaremos, que permite reducir el nmero de estados. La mquina simplificada es la siguiente:
b a [A] inicio [B] a b a b [D]

No existe M autmata finito tal que L(M) = L(G), puesto que los autmatas de pila slo aceptan gramticas libres de contexto. Para reconocer la frase aabcbaa deber empilarse un smbolo asociado a cada smbolo de la entrada antes que aparezca el smbolo c, luego de la cual por cada smbolo que aparezca despus se desempilar un smbolo de la pila que se compara con el smbolo de la entrada. Sea P autmata de pila , definido formalmente como: ( , , p, , o , p0, F)

Figura 3. Autmata finito determinista simplificado M( , , , 0 , F ) = { a, b} ={[A], [B], [D]} F = {[D]}

FISI-UNMSM

63

ANLISIS COMPARATIVO ENTRE UN ANALIZADOR SINTCTICO LL Y UN ANALIZADOR SINTCTICO LR

PARA UN LENGUAJE FORMAL

: conjunto finito de estados. : conjunto finito de entradas (alfabeto del sistema). p : conjunto finito de la pila (alfabeto de la pila). : Funcin de transicin. o : estado inicial. P0 p : estado inicial de la pila. F E : conjunto de estados finales. , , o y F se definen igual que los autmatas finitos. Ejemplo: G = (VN , VT , P , S) Donde else , e , while, ; , { , } , p} P ={ VN = {S , L} VT ={if ,

7. ANLISIS SINTCTICO El proceso de anlisis sintctico puede describirse como el intento de construir un rbol de anlisis sintctico para la frase que se quiere reconocer. Aunque en la prctica los rboles sintcticos no se implementan porque ocuparan mucho espacio. La sintaxis de las construcciones de los lenguajes de programacin pueden describirse por medios de gramticas libres del contexto [1], [11]. Los analizadores sintcticos pueden ser de dos tipos: Analizador sintctico ascendente: Intenta construir un rbol de anlisis sintctico, empezando desde la raz y descendiendo hacia las hojas. Lo que es lo mismo que intentar obtener una derivacin por la izquierda para una cadena de entrada, comenzando desde la raz y creando los nodos del rbol en orden previo. Analizador sintctico descendente: Intenta construir un rbol de anlisis sintctico, empezando desde las hojas (la cadena) y ascendiendo hacia la raz. Lo que es lo mismo que intentar obtener una reduccin desde una cadena hasta llegar al axioma. El analizador sintctico tanto ascendente como descendente puede representarse de dos formas: mediante tabla de anlisis sintctico o mediante autmata de pilas.

S if e S; / if e S else S; S while e S; S { L } / p L L ; S / S

} A partir de G se construye , F) Donde : = {i , p , q , f } ; , { , } , p} P = ( , , p , , , = {if , else , e , while,

P = {S , L} U {if, else ,e, while, ; , { , } , p} U { # }


, , , , , , , S ; if e S; S ; if e S else S; S ; while e S; S;{L} S;p L; L;S L;S

7.1. ANLISIS SINTCTICO DESCENDENTE LL BASADO EN TABLA DE ANLISIS (TAS) Intenta construir un rbol de anlisis sintctico, empezando desde la raz y descendiendo hacia las hojas. Lo que es lo mismo que intentar obtener una derivacin por la izquierda para una cadena de entrada, comenzando desde la raz y creando los nodos del rbol en orden previo. L: left to right: lee la entrada de izquierda a derecha. L: left derivation: produce una derivacin por la izquierda. Ejemplo: Consideremos la gramtica
A A+B /B B*C/C (A)/Id eliminamos la recursividad A A B B C Sea la Tabla de anlisis sintctico T BA +BA/ CB *CB/ (A)/Id

,; # i p

, ; S q , # ; f

if , if ; else, else; , ; while, while ; ;,; ; {,{; },}; ,; Figura 4.

6. ANLISIS LXICO La tarea de examinar la proposicin con la finalidad de reconocer y clasificar los distintos componentes lxicos se conoce como anlisis lxico y la parte del compilador que realiza esa funcin analtica se denomina analizador lxico (SCANNER).

B C

64

FISI-UNMSM

RISI 2(2), 60-68 (2005)

AUGUSTO CORTEZ

Id A A B B C A B C Id CB BA

+ A +BA

* -

( A B CB BA

) A

$ A

*CB

C (A)

Paso 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

PILA $A $A'B $A'B'C $A'B'Id $A'B' $A' $A'B+ $A'B $A'B'C $A'B'Id $A'B' $A'B'C* $A'B'C $A'B'Id $A'B' $A' $

ENTRADA Id+Id*Id$ Id+Id*Id$ Id+Id*Id$ Id+Id*Id$ +Id*Id$ +Id*Id$ +Id*Id$ Id*Id$ Id*Id$ Id*Id$ *Id$ *Id$ Id$ Id$ $ $ $ C B C A B C

SALIDA BA' CB' Id +BA' CB' Id *CB' Id

B' A'

B'

B' A'

CONSTRUCCIN DE LA TABLA
Accin CONSTRUYE_TABLA() Inicio > //regla de derivacin PRIMERO() Incluir A a en T[A , a] Si PRIMERO () Incluir > a en T[A , a] b SIGUIENTE(A) Fin si Si PRIMERO () y $ SIGUIENTE(A) Incluir > en T[A , $] Fin si Fin

ANLISIS SINTCTICO ASCENDENTE LR L: left to right: lee la entrada de izquierda a derecha. R: right derivation: produce una derivacin por la derecha. Si G es una gramtica libre de contexto entonces, existe analizador LR basado en Pila P, tal que L(G) = L(P). Sea G = (VN, VT, S, P) Construimos P = ( E, , p, , 1, R, F) Hacemos: 1 = VT 2 p = VT U VN U {#} # no est en VT ni VN 3 E = {i, p, q, f } f : estado final i : estado inicial 4 Introducir las transiciones (operacin de reduccin)

En el ejemplo anterior, aplicando el algoritmo, se obtiene la tabla T mostrada anteriormente. ANLISIS SINTCTICO ASCENDENTE LR BASADO EN AUTMATA DE PILA Construye un autmata de pila que reconoce mediante transiciones una derivacin por la derecha. A partir de la gramtica G es posible construir un analizador LR basado en autmata de pila [3] [4].

(i, , ; p, #) (p, , S ; q, ) (p, , W ; p, N)

FISI-UNMSM

65

ANLISIS COMPARATIVO ENTRE UN ANALIZADOR SINTCTICO LL Y UN ANALIZADOR SINTCTICO LR

PARA UN LENGUAJE FORMAL

(Reduccin) N W , W (VN UVT)* (p, a, ; p , a) (q, , # ; F , ) a VT (desplazamiento)

Ejemplo Consideremos al lenguaje L(G) = {cancanbmcbmc / m, n Z+} cuya gramtica es G = (VN, VT, S, P) libre del contexto donde VN= {S, A, B} , VT={a, b, c}

COMPARACIN ENTRE ANLISIS SINTCTICO LL Y ANLISIS SINTCTICO LR Cuando se utiliza un autmata de pila surge un problema al interrogar qu smbolos existen en la cima, de la pila, pues slo se conoce el smbolo en la cima, y en caso se quiera conocer varios smbolos, tendran que hacerse varias desempilaciones, en caso de que los smbolos sacados no sean los que se esperaban tienen que regresarse a la pila. Esta desventaja es subsanada por la tcnica mediante tabla de anlisis sintctico, que integra en cada entrada la informacin que se requiere para hacer una derivacin sin necesidad de usar pila. Problemas al implantar LL 1 Cmo determinar si debemos aplicar una operacin de desplazamiento o una operacin de reduccin? Si reducimos, puede existir ms de una alternativa a elegir. Esto se resuelve con el principio de preanlisis. Cmo manejar la pila. Si se tiene el movimiento (i , , aPa ; p , P) significa desempilar aPa y empilar P. Pero cmo saber si se tiene la tira aPa en el extremo de la pila si slo conocemos la cima. Una solucin es implementar una pila hbrida en la que se pueda acceder no slo a la cima de la pila sino a todos sus elementos.

P: {

1 2 3

S A B

cABc aAa/c bBb/c }

Construimos P = ( E, , p, , 0 , R, F) a partir de G
1 (0, , ) (q, a, ) (q, c,) (q, b, )

3 (q , ,aAa) 4 (q, ,c) 5 (q, ,bBb)

2 ( p , ,cABc ) = (q, S)

= (p, #) = (q, A) = (q, A) = (q, B) = (q, B)

7 8 9 10 11

= (q, a) = (q, b) = (q, ) = (f, ) = (q, c)

(p, , S)

6 (q, ,c)

(q, , #)

,cABc; S ,aAa; A , c; A ,bBb; B ,c; B

, ; #
a, ;a b, ;b c, ; c Figura 5.

, S;

,# ;

Veamos el comportamiento del autmata de la figura 5, para la secuencia aacbb

Orden 1 2 3 4 5 6 7 8 9 10 11 12

Pila

# #a #aa #aac #aaS #aaSb #aS #aSb #S #

Entrada aacbb aacbb acbb cbb bb bb b b

Transicin (i , , ; p , #) (p , a , ; p , a) (p , a , ; p , a) (p , c , ; p , c) ( p, , c ; p , S) ( p, b , ; p , b) ( p, , aSb ; p , S) ( p, b, ; p , b) ( p, , aSb ; p , S) ( p, , S; q , ) ( q, , # ; f , )

desp desp desp reduc desp reduc desp reduc

66

FISI-UNMSM

RISI 2(2), 60-68 (2005)

AUGUSTO CORTEZ

Veamos el comportamiento del autmata para la secuencia cacabcbc Orden 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Pila entrada cacabcbc cacabcbc acabcbc cabcbc abcbc abcbc bcbc bcbc cbc bc bc c c transicin (i , , ; p , #) (p , c , ; p , c) ( p, a , ; p , a) ( p, c , ; p , c) ( p, , c ; p , A) ( p, a , ; p , a) ( p, , aAa ; p , A) ( p, b , ; p , b) ( p, c, ; p , c) ( p, , c ; p , A) ( p, b, ; p , b) ( p, , bAb; p , B) ( p, , c, , p , c) ( p, ,cABc; p , S) ( p, , S, q , ) ( q, , #, f , )

# #c #ca #cac #caA #caAa #cA #cAb #cAbc #cAbA #cAbAb #cAB #cABc #S #

desp desp desp reducc. desp reduc. desp desp. reduc. desp. reducc. desp. reducc.

8. DISCUSIN DE RESULTADOS Razones para estudiar los lenguajes de programacin Facilitar el aprendizaje de un nuevo lenguaje. Hacer posible una mejor eleccin del lenguaje de programacin a utilizar. Mejorar la habilidad para desarrollar algoritmos eficaces. Facilitar el diseo de un nuevo lenguaje. Mejorar el uso del lenguaje de programacin disponible. Acrecentar el propio vocabulario con construcciones tiles sobre programacin.

A partir de algunas clases de gramticas se puede construir automticamente un analizador eficiente que determine si un programa fuente est sintcticamente bien formado. Los lenguajes evolucionan con el tiempo, adquiriendo nuevas construcciones y realizando tareas adicionales. Estas nuevas construcciones se pueden aadir con ms facilidad a un lenguaje cuando existe una aplicacin basada en una descripcin gramatical. Una gramtica imparte una estructura a un lenguaje de programacin til para la traduccin de un programa fuente a cdigo objeto correcto y para la deteccin de errores. El proceso de construccin del analizador sintctico puede revelar ambigedades sintcticas y otras construcciones difciles de analizar que podran pasar sin ser detectadas en la fase inicial del diseo de un lenguaje y de su compilador.

Los lenguajes libres del contexto incluyen a los lenguajes regulares. Podemos deducir de ello que todo lenguaje regular es tambin lenguaje libre de contexto, no se cumple lo contrario pues, existen lenguajes libres de contexto que no son regulares, para este tipo de lenguajes no basta con un autmata finito, deber utiizarse un autmata de pila, es por ello que un analizador sintctico puede implementarse a travs, de autmatas de pila ya sea en su forma LL, o en su forma LR.

Ventajas de utilizar un analizador sintctico La gramtica proporciona una especificacin precisa, fcil de entender de un lenguaje de programacin.

Aunque falta mucho por analizar y contrastar sobre todo en cuestiones de implementacin, podemos deducir que la coleccin de analizadores sintcticos LR es ms poderosa que la de los analizadores LL, puesto que existen lenguajes libre del contexto que no puede ser analizados por un analizador sintctico LL, aunque s por un analizador LR. Una implantacin de un analizador sintctico utilizando tabla requiere un trabajo de anlisis. Primero tiene que eliminarse la recursin por la izquierda si

FISI-UNMSM

67

ANLISIS COMPARATIVO ENTRE UN ANALIZADOR SINTCTICO LL Y UN ANALIZADOR SINTCTICO LR

PARA UN LENGUAJE FORMAL

fuera el caso. Luego tiene que hallarse los conjuntos PRIMERO y SIGUIENTE. Finalmente tiene que construirse la tabla de anlisis sintctico TAS. Existen lenguajes libres del contexto para los cuales no existe ningn analizador sintctico LR. Los analizadores LR pueden analizar lenguajes independientes del contexto determinista, ya que est basado en un autmata de pila determinista. Resulta ms conveniente una implementacin mediante tabla de anlisis sintctico que una implantacin mediante autmata de pila. La tabla de anlisis integra toda la informacin necesaria que se requiere cuando se utiliza un autmata de pila y tenga que interrogarse qu smbolos existen en el TOP de la pila. Existe una familia de analizadores LL, contenidos en la familia de analizadores LL(K), asimismo existe una familia de analizadores LR, contenidos en la familia de analizadores LR(K), la variable K indica el nmero de smbolos de preanlisis necesarios para la derivacin o reduccin dependiendo de si es un anlisis descendente o ascendente, respectivamente. Las gramticas LL(k) estn incluidas en las gramticas LR(k)

[2] BBECK Leland Software de Sistemas Addisson Wesley iberoamericana Wilmington Delaware 1988 [3] BROOKSHEAR J. Glean Teora de la computacin Addisson Wesley iberoamericana Wilmington Delaware 1993. [4] Cortez Vsquez, Augusto. Matemticas Discretas, UNMSM EAPIS 1999. [5] Cortez Vsquez, Augusto. Lenguajes y traductores, UNMSM FISI 2005. [6] Deitel Harvey M. Introduccin a los sistemas operativos ; Addison-Wesley, Iberoamenricana 1987 Wilmigton Delaware EUA. [7] Hopcroft Jhon, Ullman Jeffrey. Introduccin a la teora de autmatas. Edit. CECSA 1993. [8] Johnsonbaugh Richard. Matemticas discretas ; Prentice Hall 1999. [9] Kolman-Busby-Ross. Matematicas Discretas ; Prentice Hall 1997. [10] PEA MARI, Ricardo. Diseo de programas, Formalismo y abstraccin . Prentice may - Madrid 1998. [11] Terrence W. Pratt. Lenguajes de programacin, Diseo e implementacin; Prentice Hall Hispanoamericana 1988. [12] SETHI, Ravi. Lenguajes de programacin, conceptos y Constructores; Addison-Wesley, 1992. [13] Teufel-Smithd-Teufel. Compiladores, Conceptos fundamentales ; Addison-Wesley, 1990.

REFERENCIAS BIBLIOGRFICAS [1] Aho A.,Sethi,Ullman Compiladores, principios, tcnicas y herramientas ; Addison-Wesley1990, Wilmington-Delaware EUA.

68

FISI-UNMSM

You might also like