Вы находитесь на странице: 1из 40

LENGUAJES Y TRADUCTORES

Prof. Augusto Cortez Vsquez

PROYECTO DE CURSO:
Especificacion y construccion de un lenguaje y su traductor

Integrantes:

CICLO IV 2017 I
Ciudad Universitaria, 24 de abril del 2017

1
Contenido
Contenido ...................................................................................................................................... 2
INTRODUCCIN ............................................................................................................................. 3
OBJETIVOS ..................................................................................................................................... 4
1. ESPECIFICACIN DEL LENGUAJE............................................................................................ 5
1.1. Caractersticas del Lenguaje .......................................................................................... 5
1.2. Sintaxis del lenguaje ...................................................................................................... 6
2. ESPECIFICACIN DEL TRADUCTOR ........................................................................................ 9
2.1. ANALIZADOR LEXICOGRFICO ...................................................................................... 9
2.1.1. Funciones del Analizador Lexicogrfico ................................................................ 9
2.1.2. Componentes Lxicos............................................................................................ 9
2.1.3. Errores Lxicos .................................................................................................... 17
2.2. ANALIZADOR SINTCTICO ........................................................................................... 17
2.2.1. Funciones del Analizador Sintctico .................................................................... 17
2.2.2. Gramtica ............................................................................................................ 17
2.2.3. Conversin a la forma normal de Chomsky ........................................................ 20
2.2.4. Construccin de la tabla de anlisis sintctico .................................................... 24
2.2.5. Errores Sintcticos ............................................................................................... 34
2.3. ANALIZADOR SEMNTICO ........................................................................................... 35
3. EJEMPLOS DE PROGRAMAS EN LENGUAJE TURING............................................................ 36
4. MANEJO DE ERRORES.......................................................................................................... 37
5. IMPLEMENTACIN .............................................................................................................. 37
CONCLUSIONES ........................................................................................................................... 39
REFERENCIAS BIBLIOGRAFICAS ................................................................................................... 40

2
INTRODUCCIN

El presente trabajo referido a la especificacin de nuestro lenguaje


est orientado a la programacin estructurada y haciendo uso de
registros y arreglos (considerando matrices).

A continuacin desarrollaremos un informe detallado de las


caractersticas de nuestro lenguaje, as como la especificacin de los
analizadores lexicogrfico, sintctico y semntico.

3
OBJETIVOS

Especificacin de un lenguaje formal

Especificacin y construccin del traductor para dicho lenguaje

4
1. ESPECIFICACIN DEL LENGUAJE
1.1. Caractersticas del Lenguaje

1) Nombre del Lenguaje: Turing

2) Especificaciones

2.1. Caracteres Validos:

Alfabeto Latinoamericano:
Maysculas (A-Z) y minsculas (a-z)
Dgitos (0-9)
Smbolos (&, %, , , , , -, /, *, +, >, <, =, |, , ?, , !, ., :,
coma, ;, parntesis , [, ])

2.2. Tipos de Sentencias

Asignacin
Declarativa
Condicional
Iterativa
Lectura y Escritura

2.3. Operaciones

2.3.1. O. Aritmticas: Adicin ( + ) , sustraccin ( - ),


Multiplicacin ( * ), Divisin ( / ), Modulo ( % ).

2.3.2. O. Lgicas: Conjuncin (&), Disyuncin (||), Negacin (!)

2.3.3. O. Relacionales: Mayor (>), Menor (<), Mayor Igual (>=),


Menor Igual (<=), Igualdad (=), Diferencia (<>).

2.3.4. O. Asignacin ( := )

2.4. Tipos de Datos

Constantes Variables
o Entero o Entero
o Real o Real
o Cadena o Cadena
o Carcter o Carcter
o Booleano o Booleano

2.5. Estructuras de Datos

Vectores y Matrices
Registros

5
2.6. Palabras Reservadas

PRINCIPAL, INICIO, FIN, PROCEDIMIENTO, RETORNAR,


ENTERO, REAL, CARACT, CADENA, BOOLEANO, ARREGLO, DE,
TIPO, REGISTRO
SI, ENTONCES, SINO, PARA, HASTA, CON, HACER, MIENTRAS
LEER, ESCRIBIR
VERDADERO, FALSO

2.7. Delimitadores

PUNTO Y COMA (;) (De Sentencia)


ESPACION EN BLANCO () (De Lexema)

1.2. Sintaxis del lenguaje

ESTRUCTURA GENERAL

P : SE SF / SF

SECCIN ESTRUCTURAS

SE : TIPO LVE

LVE : VE / VE , LVE

VE : ID : TIPOE

TIPOE : RECORD SD FIN REGISTRO

TIPOE : ARREGLO [ LONGITUD ] DE TIPO

6
SECCIN FUNCIONES

SF: PROCEDIMIENTO <ID> (<PARAMETROS>) : <TIPO>

INICIO

SD

SS

RETORNO

FIN <ID>

PARAMETROS : D / D ; PARAMETROS

SECCION DECLARACIONES

SD : D / D ; SD

D : LID : TIPO

LID : ID / ID , LID

SECCIN SENTENCIAS

SS : ASIG / SC / SI / ASIG SS / SC SS / SI SS

ASIG : Var := Oper

Oper : Opndo Opdor Opndo ; / Opndo Opdor Oper

SC : SI condicin ENTONCES SS FIN / SI condicin ENTONCES SS SINO SS FIN

SI : MIENTRAS condicion HACER SS FIN

SI : PARA Val_Inicial HASTA Val_Final CON Inc_Dec HACER SS END

7
Leyenda:

P: Programa ASIG: Asignacin


SE: Seccin Estructuras SC: Sentencia Condicional
SF: Seccin Funciones SI: Sentencia Iterativa
LVE: Lista de Variable de Var: Variable
Estructura Oper: Operacin
VE: Variable de Estructura Opndo: Operando
TIPOE: Tipo de Estructura Opdor: Operador
SD: Seccin Declaraciones Val_Inicial: Valor Inicial
D: Declaracin Val_Final: Valor Final
ID: Identificador Inc_Dec: Incremento o
LID: Lista de identificadores Decremento
SS: Seccin Sentencia

8
2. ESPECIFICACIN DEL TRADUCTOR

2.1. ANALIZADOR LEXICOGRFICO


2.1.1. Funciones del Analizador Lexicogrfico

El analizador lxico se encarga de obtener y analizar las palabras que


componen un texto fuente, distinguiendo s pertenecen o no a un
determinado conjunto, dependiendo de su definicin lgica (su descripcin).

La secuencia de caracteres consecutivos obtenidos de la entrada, que


pertenecen al lxico del lenguaje se denomina lexema.

El analizador lxico divide la secuencia de caracteres obtenidos (lexemas)


desde la entrada en conjuntos de palabras con un significado propio (una
descripcin).

Cada uno de los conjuntos de palabras con significado propio que pueden
formar parte del lenguaje (conjunto de lexemas) se llama componente
lxico o categora lxica.

Cada categora lxica se ajusta a un patrn que describe el conjunto de


lexemas que componen dicha
categora.

El fin principal de un analizador lxico una vez que se ha reconocido el


conjunto de caracteres (lexema) que forman el componente lxico (pieza
sintctica), por medio de un patrn descrito por un mecanismo regular, es
entregado al analizador sintctico. [2]

2.1.2. Componentes Lxicos

1. Identificadores:

Expresin regular:

r= l(l/d)* ,donde: l:letra, d: digito

Autmata finito:

d
l otro
0

9
2. Palabras Reservadas:

Expresin regular:

r = PRINCIPAL / INICIO / FIN / PROCEDIMIENTO / RETORNAR /


DEFINIR / ENTERO / REAL / CARACT / CADENA / BOOLEANO /
ARREGLO / TIPO / REGISTRO / SI / ENTONCES / SINO / PARA /
HASTA / CON / HACER / MIENTRAS / VERDADERO / FALSO

Autmata finito:

l otro
0

l: letra

Adems se usara un registro donde estn almacenadas todas las


palabras reservadas para que el analizador verifique si lo reconocido
por el autmata es o no una palabra reservada.

PRINCIPAL
INICIO
FIN
PROCEDIMIENTO
RETORNAR
ENTERO
REAL
CARACT
CADENA
BOOLEANO
ARREGLO
DE
TIPO
REGISTRO
SI
ENTONCES
SINO
PARA
HACER
MIENTRAS
HASTA
CON
VERDADERO
FALSO

10
3. Delimitador de fin de sentencia

Expresin regular:

r=;

Autmata finito:

; otro
0

4. Coma

Expresin regular:

r=,

Autmata finito:

, otro
0

5. Parntesis Izquierdo

Expresin regular:

r=(

Autmata finito:

( otro
0

11
6. Parntesis Derecho

Expresin regular:

r=)

Autmata finito:

) otro
0

7. Corchete Izquierdo

Expresin regular:

r=[

Autmata finito:

[ otro
0

8. Corchete Derecho

Expresin regular:

r=]

Autmata finito:

] otro
0

12
9. Dos Puntos

Expresin regular:

r=:

Autmata finito:

: otro
0

10. Punto

Expresin regular:

r=.

Autmata finito:

. otro
0

13
11. Operadores Aritmticos

Expresin regular:

r = + / - / */ / / %

Autmata finito:

* otro
0

12. Operadores Lgicos

Expresin regular:

r = & / ||

| | otro
0

&

14
13. Operadores Relacionales

Expresin regular:

r = < / > / >= / <= / <> / =

Autmata finito:

=

>
<
= otro
0

>
=

otro

14. Operador de Asignacin

Expresin regular:

r = :=

Autmata finito:

: = otro
0

15
15. Constante Numrica

Expresin regular:

r = (-)? d+ (.d+ )? , donde: d: digito

Autmata finito:


-
d
0 d

d .

otro
d

16. Constante Alfa-Numerica

Expresin regular:

r = (l/d/s) , donde: l: letra , d: digito ,


s: smbolo excepto apstrofos

Autmata finito:

l d

otro
0

16
2.1.3. Errores Lxicos

Los posibles errores lxicos de nuestro lenguaje son bsicamente los de


cualquier otro lenguaje de programacin:

Un operador, palabra reservada, operador, etc. mal escritos.


Un lexema no perteneciente a ninguno de los componentes lxicos
definidos
Presencia de caracteres no validos (No pertenecientes al alfabeto)

2.2. ANALIZADOR SINTCTICO


2.2.1. Funciones del Analizador Sintctico

Comprobar si la cadena de componentes lxicos proporcionada por el


analizador lxico puede ser generada por la gramtica que define el
lenguaje fuente (Gramtica Independiente del Contexto, GIC).

Construir el rbol de anlisis sintctico que define la estructura


jerrquica de un programa y obtener la serie de derivaciones para
generar la cadena de componentes lxicos. El rbol sintctico se
utilizara como representacin intermedia en la generacin de cdigo.

Informar de los errores sintcticos de forma precisa y significativa y


debera estar dotado de un mecanismo de recuperacin de errores
para continuar con el anlisis.

El anlisis sintctico se puede considerar como una funcin que toma como
entrada la secuencia de componentes lxicos producida por el anlisis lxico
y produce como salida el rbol sintctico. En la realidad, el anlisis
sintctico hace una peticin al anlisis lxico del componente lxico
siguiente en la entrada (los smbolos terminales) conforme lo va
necesitando en el proceso de anlisis, conforme se mueve a lo largo de la
gramtica. [3]

2.2.2. Gramtica

Para la creacin de la gramtica se hizo uso de la teora desarrollada en


clase, primero se cre una gramtica libre de contexto, la cual fue
convertida a la Forma Normal de Chomsky (FNC), y por ltimo se elimin la
recursividad por la izquierda.

La Gramtica resultante de acuerdo a la teora es una Gramtica LL(1), la


cual es una gramtica libre de contexto (GLC) que no posee reglas y
adems no es recursiva por la izquierda. [1]

17
Se decidi utilizar este tipo de gramtica porque facilita la definicin de los
conjuntos Primero y Siguiente, que ayudaran en la construccin de la Tabla
de Anlisis Sintctico.

La gramtica G del lenguaje Turing es definido de la siguiente manera:

G(VN, VT, T, P) ; Donde:

VN = { T, SE, LVE, VE, TIPOE, LONG, TIPOD, SF, LF, FP, F, SP, RT, SD, D,
TIPOV, LID, SS, SA, REF, ASIG, INV, PEI, PARI, OPER, OPDOR,
OPNDO, OA, OL, OR, SC, COND, COMP, CPNDO, SI, VI, VF, INDEC,
SL, SES }

VT = { PRINCIPAL, INICIO, FIN, PROCEDIMIENTO, RETORNAR, ENTERO,


REAL, CARACT, CADENA, BOOLEANO, ARREGLO, DE, TIPO,
REGISTRO, SI, ENTONCES, SINO, PARA, HASTA, CON, HACER,
MIENTRAS, LEER, ESCRIBIR, NE, ; , id , : , [ , ] , ( , ) , const, . , = ,
!,+,-,/,*,%,&,|,<, >,,}

P : { T SE SF / SF
SE TIPO LVE FIN TIPO ;
LVE VE / VE LVE
VE id : TIPOE
TIPOE REGISTRO SD FIN REGISTRO ;
TIPOE ARREGLO LONG DE TIPOD ;
LONG [NE] / [NE][NE]
TIPOD ENTERO / REAL / CADENA / CARACT / BOOLEANO
SF FP / LF FP
LF F / F LF
FP PROCEDIMIENTO PRINCIPAL ( ) INICIO SP FIN PRINCIPAL ;
F PROCEDIMIENTO id ( SD ) : TIPOD INICIO SP RETORNAR RT FIN id ;
F PROCEDIMIENTO id ( SD ) INICIO SP FIN id ;
F PROCEDIMIENTO id ( ) : TIPOD INICIO SP RETORNAR RT FIN id ;
F PROCEDIMIENTO id ( ) INICIO SP FIN id ;
SP SD SS / SD SS SP
RT const / id / id . id / INV
SD D / D ; SD
D LID : TIPOV
TIPOV TIPOD / id
LID id / id , LID
SS SA / SL / SES / SC / SI / SA SS / SL SS / SES SS / SC SS / SI SS
SA REF := ASIG ;
REF id / id . id / id LONG
ASIG INV / OPER / const / REF
INV id ( PEI ) / id ( )
PEI PARI / PARI ; PEI
PARI REF / const
OPER OPNDO OPDOR OPNDO / ! OPNDO
OPNDO const / REF / INV / ( OPER ) / OPER
OPDOR OA / OL / OR

18
OA + / - / / / * / %
OL & / ||
OR <> / = / < / > / <= / >=
SC SI ( COND ) ENTONCES SS FIN SI ;
SC SI ( COND ) ENTONCES SS SINO SS FIN SI ;
COND INV / COMP
COMP CPNDO OR CPNDO / ! OPNDO
CPNDO ( COMP ) / INV / OPER / const / REF / COMP
SI MIENTRAS ( COND ) HACER SS FIN MIENTRAS ;
SI PARA VI HASTA VF CON INDEC HACER SS FIN PARA ;
VI id := ASIG
VF id OR CPNDO
INDEC id := id OA OPNDO / id ++ / id --
SL LEER ( REF ) ;
SES ESCRIBIR ( OPNDO ) ; / ESCRIBIR ( OPER ) ; }

Leyenda:

T: Programa en Turing PEI: Parmetros de Entrada en


SE: Seccin Estructuras Invocacin
LVE: Lista de Variable de PARI: Parmetro en Invocacin
Estructura OPER: Operacin
VE: Variable de Estructura OPNDO: Operando
TIPOE: Tipo de Estructura OPDOR: Operador
LONG: Longitud OA: Operador Aritmtico
TIPOD: Tipo de dato OL: Operador Lgico
SF: Seccin Funciones OR: Operador Relacional
LF: Lista de Funciones SC: Sentencia Condicional
FP: Funcin Principal COND: Condicion
F: Funcin COMP: Comparacion
SP: Seccin del Procedimiento CPNDO: Comparando
RT: Retorno SI: Sentencia Iterativa
SD: Seccin Declaraciones VI: Valor Inicial
D: Declaracin VF: Valor Final
TIPOV: Tipo de Variable INDEC: Incremento o Decremento
LID: Lista de identificadores SL: Sentencia de Lectura
SS: Seccin Sentencias SES: Sentencia de Escritura
SA: Sentencia de Asignacin NE: Numero Entero
REF: Referencia id: Identificador
ASIG: Asignacin const: Constante
INV: Invocacin

19
2.2.3. Conversin a la forma normal de Chomsky

La gramtica G es una Gramtica Libre del Contexto, entonces podemos


construir la gramtica G* en la Forma Normal de Chomsky, a partir de la
gramtica G

G*(VN, VT, T, P) ; Donde:

VN = { T, SE, LVE, VE, TIPOE, LONG, TIPOD, SF, LF, FP, F, SP, RT, SD, D,
TIPOV, LID, SS, SA, REF, ASIG, PEI, PARI, OPER, OPDOR,
OPNDO, OA, OR, SC, COND, COMP, CPNDO, SI, VI, VF, INDEC, SL,
SES, N1,, N46, R1,, R127 }

VT = { PRINCIPAL, INICIO, FIN, PROCEDIMIENTO, RETORNAR, ENTERO,


REAL, CARACT, CADENA, BOOLEANO, ARREGLO, DE, TIPO,
REGISTRO, SI, ENTONCES, SINO, PARA, HASTA, CON, HACER,
MIENTRAS, LEER, ESCRIBIR, NE, ; , id , : , [ , ] , ( , ) , const, . , = ,
!,+,-,/,*,%,&,|,<, >,,}

P:{
T SE SF SF N4 R16
T N4 R16 SF LF FP
T LF FP LF N4 R23
SE N12 R1 LF N4 R35
R1 LVE R2 LF N4 R43
R2 N 3 R 3 LF N4 R54
R3 N12 N26 LF F LF
LVE N27 R4 FP N4 R16
LVE VE LVE R16 N1 R17
VE N27 R4 R17 N31 R18
R4 N28 TIPOE R18 N32 R19
TIPOE N13 R5 R19 N2 R20
R5 SD R6 R20 SP R21
R 6 N3 R 7 R21 N3 R22
R7 N13 N26 R22 N1 N26
TIPOE N11 R8 F N4 R23
R8 LONG R9 R23 N27 R24
R9 N24 R10 R24 N31 R25
R10 TIPOD N26 R25 SD R26
LONG N29 R11 R26 N32 R27
R11 N25 N29 R27 N28 R28
LONG N29 R12 R28 TIPOD R29
R12 N25 R13 R29 N2 R30
R13 N30 R14 R30 SP R31
R14 N29 R15 R31 N5 R32
R15 N25 N30 R32 RT R33
TIPOD ENTERO R33 N3 R34
TIPOD REAL R34 N27 N26
TIPOD CARACT F N4 R35
TIPOD CADENA R35 N27 R36
TIPOD BOOLEANO R36 N31 R37
20
R37 SD R38 SS N23 R122
R38 N32 R39 SS N23 R125
R39 N2 R40 SS N14 R76
R40 SP R41 SS N14 R83
R41 N3 R42 SS N21 R94
R42 N27 N26 SS N17 R101
F N4 R43 SS SA SS
R43 N27 R44 SS SL SS
R44 N31 R45 SS SES SS
R45 N32 R46 SS SC SS
R46 N28 R47 SS SI SS
R47 TIPOD R48 SA REF R66
R48 N2 R49 R66 N28 R67
R49 SP R50 R67 N35 R68
R50 N5 R51 R68 ASIG N26
R51 RT R52 REF id
R52 N3 R53 REF N27 R69
R53 N27 N26 R69 N34 N27
F N4 R54 REF N27 LONG
R54 N27 R55 ASIG N27 R70
R55 N31 R56 ASIG N27 R72
R56 N32 R57 ASIG OPNDO R74
R57 N2 R58 ASIG N36 OPNDO
R58 SP R59 ASIG const
R59 N3 R60 ASIG id
R60 N27 N26 ASIG N27 R69
SP SD SS ASIG N27 LONG
SP SD R61 R70 N31 R71
R61 SS SP R71 PEI N32
RT const R72 N31 N32
RT id PEI id
RT N27 R70 PEI N27 R69
RT N27 R72 PEI N27 LONG
RT N27 R62 PEI const
R62 N34 N27 PEI PARI R73
SD LID R64 R73 N26 PEI
SD D R63 PARI id
R63 N26 SD PARI N27 R69
D LID R64 PARI N27 LONG
R64 N28 TIPOV PARI const
TIPOV ENTERO OPER OPNDO R74
TIPOV REAL R74 OPDOR OPNDO
TIPOV CARACT OPER N36 OPNDO
TIPOV CADENA OPNDO const
TIPOV BOOLEANO OPNDO id
TIPOV id OPNDO N27 R69
LID id OPNDO N27 LONG
LID N27 R65 OPNDO N27 R70
R65 N46 LID OPNDO N27 R72
SS REF R66 OPNDO OPNDO R74
SS N22 R119 OPNDO N36 OPNDO

21
OPNDO N31 R75 CPNDO N31 R93
R75 OPER N32 R93 COMP N32
OPDOR + CPNDO N27 R70
OPDOR - CPNDO N27 R72
OPDOR / CPNDO OPNDO R74
OPDOR * CPNDO N36 OPNDO
OPDOR % CPNDO const
OPDOR & CPNDO id
OPDOR N43 N43 CPNDO N27 R69
OPDOR = CPNDO N27 LONG
OPDOR < CPNDO CPNDO R92
OPDOR > CPNDO N36 CPNDO
OPDOR N44 N45 SI N21 R94
OPDOR N44 N35 R94 N31 R95
OPDOR N45 N35 R95 COND R96
OA + R96 N32 R97
OA - R97 N20 R98
OA / R98 SS R99
OA * R99 N3 R100
OA % R100 N21 N26
OR = SI N17 R101
OR < R101 VI R102
OR > R102 N18 R103
OR N44 N45 R103 VF R104
OR N44 N35 R104 N19 R105
OR N45 N35 R105 INDEC R106
SC N14 R76 R106 N20 R107
R76 N31 R77 R107 SS R108
R77 COND R78 R108 N3 R109
R78 N32 R79 R109 N17 N26
R79 N15 R80 VI N27 R110
R80 SS R81 R110 N28 R111
R81 N3 R82 R111 N35 ASIG
R82 N14 N26 VF N27 R112
SC N14 R83 R112 OR CPNDO
R83 N31 R84 INDEC N27 R113
R84 COND R85 R113 N28 R114
R85 N32 R86 R114 N35 R115
R86 N15 R87 R115 N27 R116
R87 SS R88 R116 OA OPNDO
R88 N16 R89 INDEC N27 R117
R89 SS R90 R117 N37 N37
R90 N3 R91 INDEC N27 R118
R91 N14 N26 R118 N38 N38
COND N27 R70 SL N22 R119
COND N27 R72 R119 N31 R120
COND CPNDO R92 R120 REF R121
COND N36 OPNDO R121 N32 N26
COMP CPNDO R92 SES N23 R122
R92 OR CPNDO R122 N31 R123
COMP N36 OPNDO R123 OPNDO R124

22
R124 N32 N26 N22 LEER
SES N23 R125 N23 ESCRIBIR
R125 N31 R126 N24 DE
R126 OPER R127 N25 NE
R127 N32 N26 N26 ;
N1 PRINCIPAL N27 id
N2 INICIO N28 :
N3 FIN N29 [
N4 PROCEDIMIENTO N30 ]
N5 RETORNAR N31 (
N6 ENTERO N32 )
N7 REAL N33 const
N8 CARACT N34 .
N9 CADENA N35 =
N10 BOOLEANO N36 !
N11 ARREGLO N37 +
N12 TIPO N38 -
N13 REGISTRO N39 /
N14 SI N40 *
N15 ENTONCES N41 %
N16 SINO N42 &
N17 PARA N43 |
N18 HASTA N44 <
N19 CON N45 >
N20 HACER N46 , }
N21 MIENTRAS

En las reglas de produccin, podemos observar claramente que cada una de


estas reglas tiene la forma: A BC A b, donde A,B,C VN y b VT.
Entonces, a partir de estas reglas de produccin, podemos concluir que la
gramtica G* se encuentra en la Forma Normal de Chomsky (FNC)

23
2.2.4. Construccin de la tabla de anlisis sintctico

Eliminacin de la Recursividad por la izquierda

En la gramtica G* existen dos reglas que presentan recursividad por la


izquierda:

OPNDO OPNDO R74


CPNDO CPNDO R92

Para construir la tabla de anlisis sintctico, primero debemos eliminar la


recursividad por la izquierda de estas dos reglas [1], para ello
reemplazaremos estas reglas:

OPNDO const CPNDO N31 R93


OPNDO id CPNDO N27 R70
OPNDO N27 R69 CPNDO N27 R72
OPNDO N27 LONG CPNDO OPNDO R74
OPNDO N27 R70 CPNDO N36 OPNDO
OPNDO N27 R72 CPNDO const
OPNDO OPNDO R74 CPNDO id
OPNDO N36 OPNDO CPNDO N27 R69
OPNDO N31 R75 CPNDO N27 LONG
CPNDO CPNDO R92
CPNDO N36 CPNDO

Por estas:

OPNDO const A CPNDO N31 R93 B


OPNDO id A CPNDO N27 R70 B
OPNDO N27 R69 A CPNDO N27 R72 B
OPNDO N27 LONG A CPNDO OPNDO R74 B
OPNDO N27 R70 A CPNDO N36 OPNDO B
OPNDO N27 R72 A CPNDO const B
OPNDO N36 OPNDO A CPNDO id B
OPNDO N31 R75 A CPNDO N27 R69 B
A R74 A CPNDO N27 LONG B
A CPNDO N36 CPNDO B
B R92 B
B

24
Definicin de los conjuntos PRIMERO y SIGUIENTE

Para construir la Tabla de anlisis sintctico, es necesario construir los


conjuntos PRIMERO (Para cada uno de los smbolos terminales y no
terminales) y SIGUIENTE (Para cada smbolo no terminal)

PRIMERO

A PRIMERO(A)
PRINCIPAL { PRINCIPAL }
INICIO { INICIO }
FIN { FIN }
PROCEDIMIENTO { PROCEDIMIENTO }
RETORNAR { RETORNAR }
ENTERO { ENTERO }
REAL { REAL }
CARACT { CARACT }
CADENA { CADENA }
BOOLEANO { BOOLEANO }
ARREGLO { ARREGLO }
DE { DE }
TIPO { TIPO }
REGISTRO { REGISTRO }
SI { SI }
ENTONCES { ENTONCES }
SINO { SINO }
PARA { PARA }
HASTA { HASTA }
CON { CON }
HACER { HACER }
MIENTRAS { MIENTRAS }
LEER { LEER }
ESCRIBIR { ESCRIBIR }
NE { NE }
; {;}
id { id }
: {:}
[ {[}
] {]}
( {(}
) {)}
const { const }
. {.}
= {=}
! {!}
+ {+}
- {-}
/ {/}
* {*}
% {%}
& {&}
| {|}

25
< {<}
> {>}
, {,}
T { PROCEDIMIENTO, TIPO }
SE { TIPO }
LVE { id }
VE { id }
TIPOE { REGISTRO, ARREGLO }
LONG {[}
TIPOD { ENTERO, REAL, CARACT, CADENA, BOOLEANO }
SF { PROCEDIMIENTO }
LF { PROCEDIMIENTO }
FP { PROCEDIMIENTO }
F { PROCEDIMIENTO }
SP { id }
RT { const, id }
SD { id }
D { id }
TIPOV { ENTERO, REAL, CARACT, CADENA, BOOLEANO, id }
LID { id }
SS { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
SA { id }
REF { id }
ASIG { const, id, (, ! }
PEI { id, const }
PARI { id, const }
OPER { const, id, (, ! }
OPDOR { +, -, /, *, %, &, |, =, <, > }
OPNDO { const, id, (, ! }
OA { +, -, /, *, % }
OR { =, <, > }
SC { SI }
COND { const, id, (, ! }
COMP { const, id, (, ! }
CPNDO { const, id, (, ! }
SI { PARA, MIENTRAS }
VI { id }
VF { id }
INDEC { id }
SL { LEER }
SES { ESCRIBIR }
A { +, -, /, *, %, &, |, =, <, >, }
B { =, <, >, }
N1 { PRINCIPAL }
N2 { INICIO }
N3 { FIN }
N4 { PROCEDIMIENTO }
N5 { RETORNAR }
N6 { ENTERO }
N7 { REAL }
N8 { CARACT }
N9 { CADENA }

26
N10 { BOOLEANO }
N11 { ARREGLO }
N12 { TIPO }
N13 { REGISTRO }
N14 { SI }
N15 { ENTONCES }
N16 { SINO }
N17 { PARA }
N18 { HASTA }
N19 { CON }
N20 { HACER }
N21 { MIENTRAS }
N22 { LEER }
N23 { ESCRIBIR }
N24 { DE }
N25 { NE }
N26 {;}
N27 { id }
N28 {:}
N29 {[}
N30 {]}
N31 {(}
N32 {)}
N33 { const }
N34 {.}
N35 {=}
N36 {!}
N37 {+}
N38 {-}
N39 {/}
N40 {*}
N41 {%}
N42 {&}
N43 {|}
N44 {<}
N45 {>}
N46 {,}
R1 { id }
R2 { FIN }
R3 { TIPO }
R4 {:}
R5 { id }
R6 { FIN }
R7 { REGISTRO }
R8 {[}
R9 { DE }
R10 { ENTERO, REAL, CARACT, CADENA, BOOLEANO }
R11 { NE }
R12 { NE }
R13 {]}
R14 {[}
R15 { NE }

27
R16 { PRINCIPAL }
R17 {(}
R18 {)}
R19 { INICIO }
R20 { id }
R21 { FIN }
R22 { PRINCIPAL }
R23 { id }
R24 {(}
R25 { id }
R26 {)}
R27 {:}
R28 { ENTERO, REAL, CARACT, CADENA, BOOLEANO }
R29 { INICIO }
R30 { id }
R31 { RETORNAR }
R32 { const, id }
R33 { FIN }
R34 { id }
R35 { id }
R36 {(}
R37 { id }
R38 {)}
R39 { INICIO }
R40 { id }
R41 { FIN }
R42 { id }
R43 { id }
R44 {(}
R45 {)}
R46 {:}
R47 { ENTERO, REAL, CARACT, CADENA, BOOLEANO }
R48 { INICIO }
R49 { id }
R50 { RETORNAR }
R51 { const, id }
R52 { FIN }
R53 { id }
R54 { id }
R55 {(}
R56 {)}
R57 { INICIO }
R58 { id }
R59 { FIN }
R60 { id }
R61 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R62 {.}
R63 {;}
R64 {:}
R65 {,}
R66 {:}
R67 {=}

28
R68 { const, id, (, ! }
R69 {.}
R70 {(}
R71 { id, const }
R72 {(}
R73 {;}
R74 { +, -, /, *, %, &, |, =, <, > }
R75 { const, id, (, ! }
R76 {(}
R77 { const, id, (, ! }
R78 {)}
R79 { ENTONCES }
R80 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R81 { FIN }
R82 { SI }
R83 {(}
R84 { const, id, (, ! }
R85 {)}
R86 { ENTONCES }
R87 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R88 { SINO }
R89 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R90 { FIN }
R91 { SI }
R92 { =, <, > }
R93 { const, id, (, ! }
R94 {(}
R95 { const, id, (, ! }
R96 {)}
R97 { HACER }
R98 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R99 { FIN }
R100 { MIENTRAS }
R101 { id }
R102 { HASTA }
R103 { id }
R104 { CON }
R105 { id }
R106 { HACER }
R107 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R108 { FIN }
R109 { PARA }
R110 {:}
R111 {=}
R112 { =, <, > }
R113 {:}
R114 {=}
R115 { id }
R116 { +, -, /, *, % }
R117 {+}
R118 {-}
R119 {(}

29
R120 { id }
R121 {)}
R122 {(}
R123 { const, id, (, ! }
R124 {)}
R125 {(}
R126 { const, id, (, ! }
R127 {)}

SIGUIENTE

A SIGUIENTE(A)
T {$}
SE { PROCEDIMIENTO }
LVE { FIN }
VE { id }
TIPOE { FIN, id }
LONG { DE, :, ;, ), +, -, /, *, %, &, |, =, <, >, HACER, HASTA, CON }
TIPOD { ;, INICIO }
SF {$}
LF { PROCEDIMIENTO }
FP {$}
F { PROCEDIMIENTO }
SP { FIN, RETORNAR }
RT { FIN }
SD { FIN, ), id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
D {;}
TIPOV { FIN, ), id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, ; }
LID {:}
SS { FIN, RETORNAR, id, SINO }
SA { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
REF { :, ) }
ASIG { ;, HASTA }
PEI {)}
PARI {;}
OPER {)}
OPDOR { const, id, (, ! }
OPNDO { +, -, /, *, %, &, |, =, <, >, ;, ), HACER, HASTA, CON }
OA { const, id, (, ! }
OR { const, id, (, ! }
SC { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
COND {)}
COMP {)}
CPNDO { =, <, >, ), CON }
SI { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
VI { HASTA }
VF { CON }
INDEC { HACER }
SL { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
SES { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }

30
A { +, -, /, *, %, &, |, =, <, >, ;, ) , HACER, HASTA, CON }
B { =, <, >, ) , CON }
N1 { (, ; }
N2 { id }
N3 { TIPO, REGISTRO, PRINCIPAL, id, SI, MIENTRAS, PARA }
N4 { PRINCIPAL, id }
N5 { const, id }
N6 { }
N7 { }
N8 { }
N9 { }
N10 { }
N11 {[}
N12 { id, ; }
N13 { id, ; }
N14 { (, ; }
N15 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
N16 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
N17 { id, ; }
N18 { id }
N19 { id }
N20 { id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
N21 { (, ; }
N22 {(}
N23 {(}
N24 { ENTERO, REAL, CARACT, CADENA, BOOLEANO }
N25 { [, ] }
N26 { $, PROCEDIMIENTO, FIN, id, RETORNAR, LEER, ESCRIBIR, SI, MIENTRAS, PARA, const, SINO }
N27 { :, (, ;, ., FIN, , , [, ), +, -, /, *, %, &, |, =, <, >, HACER, HASTA, CON }
N28 { REGISTRO, ARREGLO, ENTERO, REAL, CARACT, CADENA, BOOLEANO, id, = }
N29 { NE, DE, :, ;, ), +, -, /, *, %, &, |, =, <, >, HASTA, HACER, CON }
N30 { [, DE, :, ;, ) , +, -, /, *, %, &, |, =, <, >, HASTA, HACER, CON }
N31 { ), id, const, (, ! }
N32 { INICIO, :, FIN, ;, +, -, /, *, %, &, |, =, <, >, ), ENTONCES, HACER, HASTA, CON }
N33 { }
N34 { id }
N35 { const, id, (, ! }
N36 { const, id, (, ! }
N37 { HACER, + }
N38 { HACER, - }
N39 { }
N40 { }
N41 { }
N42 { }
N43 { |, const, id, (, ! }
N44 { >, = }
N45 { const, id, (, !, = }
N46 { id }
R1 { PROCEDIMIENTO }
R2 { PROCEDIMIENTO }
R3 { PROCEDIMIENTO }
R4 { FIN, id }

31
R5 { FIN, id }
R6 { FIN, id }
R7 { FIN, id }
R8 { FIN, id }
R9 { FIN, id }
R10 { FIN, id }
R11 { DE, :, ;, ), +, -, /, *, %, &, |, =, <, >, HASTA, HACER, CON }
R12 { DE, :, ;, ), +, -, /, *, %, &, |, =, <, >, HASTA, HACER, CON }
R13 { DE, :, ;, ), +, -, /, *, %, &, |, =, <, >, HASTA, HACER, CON }
R14 { DE, :, ;, ), +, -, /, *, %, &, |, =, <, >, HASTA, HACER, CON }
R15 { DE, :, ;, ), +, -, /, *, %, &, |, =, <, >, HASTA, HACER, CON }
R16 {$}
R17 {$}
R18 {$}
R19 {$}
R20 {$}
R21 {$}
R22 {$}
R23 { PROCEDIMIENTO }
R24 { PROCEDIMIENTO }
R25 { PROCEDIMIENTO }
R26 { PROCEDIMIENTO }
R27 { PROCEDIMIENTO }
R28 { PROCEDIMIENTO }
R29 { PROCEDIMIENTO }
R30 { PROCEDIMIENTO }
R31 { PROCEDIMIENTO }
R32 { PROCEDIMIENTO }
R33 { PROCEDIMIENTO }
R34 { PROCEDIMIENTO }
R35 { PROCEDIMIENTO }
R36 { PROCEDIMIENTO }
R37 { PROCEDIMIENTO }
R38 { PROCEDIMIENTO }
R39 { PROCEDIMIENTO }
R40 { PROCEDIMIENTO }
R41 { PROCEDIMIENTO }
R42 { PROCEDIMIENTO }
R43 { PROCEDIMIENTO }
R44 { PROCEDIMIENTO }
R45 { PROCEDIMIENTO }
R46 { PROCEDIMIENTO }
R47 { PROCEDIMIENTO }
R48 { PROCEDIMIENTO }
R49 { PROCEDIMIENTO }
R50 { PROCEDIMIENTO }
R51 { PROCEDIMIENTO }
R52 { PROCEDIMIENTO }
R53 { PROCEDIMIENTO }
R54 { PROCEDIMIENTO }
R55 { PROCEDIMIENTO }
R56 { PROCEDIMIENTO }

32
R57 { PROCEDIMIENTO }
R58 { PROCEDIMIENTO }
R59 { PROCEDIMIENTO }
R60 { PROCEDIMIENTO }
R61 { FIN, RETORNAR }
R62 { FIN }
R63 { FIN, ), id, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R64 { FIN, ), id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, ; }
R65 {:}
R66 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R67 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R68 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R69 { :, ;, ), +, -, /, *, %, &, |, =, <, >, HACER, HASTA, CON }
R70 { FIN, ;, +, -, /, *, %, &, |, =, <, >, ), HACER, HASTA, CON }
R71 { FIN, ;, +, -, /, *, %, &, |, =, <, >, ), HACER, HASTA, CON }
R72 { FIN, ;, +, -, /, *, %, &, |, =, <, >, ), HACER, HASTA, CON }
R73 {)}
R74 { ;, ), +, -, /, *, %, &, |, =, <, >, HASTA, CON }
R75 { +, -, /, *, %, &, |, =, <, >, ;, ), HACER, HASTA, CON }
R76 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R77 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R78 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R79 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R80 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R81 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R82 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R83 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R84 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R85 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R86 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R87 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R88 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R89 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R90 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R91 { FIN, RETORNAR, id, LEER, ESCRIBIR, SI, MIENTRAS, PARA, SINO }
R92 { ), =, <, > }
R93 { =, <, >, ) , CON }
R94 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R95 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R96 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R97 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R98 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R99 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R100 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R101 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R102 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R103 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R104 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R105 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R106 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R107 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R108 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }

33
R109 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R110 { HASTA }
R111 { HASTA }
R112 { CON }
R113 { HACER }
R114 { HACER }
R115 { HACER }
R116 { HACER }
R117 { HACER }
R118 { HACER }
R119 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R120 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R121 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R122 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R123 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R124 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R125 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R126 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }
R127 { FIN, RETORNAR, id, SINO, LEER, ESCRIBIR, SI, MIENTRAS, PARA }

2.2.5. Errores Sintcticos

Los posibles errores sintcticos que se pueden presentar en nuestro


lenguaje son los siguientes:

El analizador lexicogrfico entrega un lexema perteneciente a un


componente lxico no esperado.

Ausencia de algn lexema esperado

El programa fuente no satisface la gramtica definida

Ambigedad de la gramtica para algn programa fuente (existencia


de dos o ms rboles sintcticos). Nota: Con respecto a este ltimo
error, se ha tratado de construir una gramtica de modo tal que este
error no suceda, sin embargo no se descarta que en algn momento
pueda suceder para algn programa fuente dado.

34
2.3. ANALIZADOR SEMNTICO

Se compone de un conjunto de rutinas independientes, llamadas por


los analizadores morfolgico y sintctico.

El anlisis semntico utiliza como entrada el rbol sintctico


detectado por el anlisis sintctico para comprobar restricciones de
tipo y otras limitaciones semnticas y preparar la generacin de
cdigo.

En compiladores de un solo paso, las llamadas a las rutinas


semnticas se realizan directamente desde el analizador sintctico y
son dichas rutinas las que llaman al generador de cdigo. El
instrumento ms utilizado para conseguirlo es la gramtica de
atributos.

En compiladores de dos o ms pasos, el anlisis semntico se realiza


independientemente de la generacin de cdigo, pasndose
informacin a travs de un archivo intermedio, que normalmente
contiene informacin sobre el rbol sintctico en forma linealizada
(para facilitar su manejo y hacer posible su almacenamiento en
memoria auxiliar).

En cualquier caso, las rutinas semnticas suelen hacer uso de una


pila (la pila semntica) que contiene la informacin semntica
asociada a los operandos (y a veces a los operadores) en forma
de registros semnticos.

35
3. EJEMPLOS DE PROGRAMAS EN LENGUAJE TURING

TIPO
Producto: REGISTRO
codigo, cantidad: ENTERO;
precio: REAL;
FIN

ListaProductos: ARREGLO[50] DE Producto;

PROCEDIMIENTO PRINCIPAL();

INICIO
cod, cant: ENTERO;
prec: REAL;
ret: BOOLEANO;
listaP: ListaProductos;
numProductos: ENTERO;
opc : CADENA;

ESCRIBIR('Desea llenar registros?');


LEER(opc);
MIENTRAS (opc = SI )
ESCRIBIR('Ingrese el codigo: ');
LEER(cod);
ESCRIBIR('Ingrese la cantidad: ');
LEER(cant);
ESCRIBIR('Ingrese el precio: ');
LEER(prec);
ret := registrarProducto(cod, cant, numProductos, prec);
SI ret ENTONCES
ESCRIBIR('EL INGRESO SE HA HECHO CORRECTAMENTE');
SINO
ESCRIBIR('HA OCURRIDO UN ERROR');
FIN;
ESCRIBIR('Desea llenar mas registros?');
LEER(opc);
FIN
FIN PRINCIPAL;

PROCEDIMIENTO registrarProducto (codigo, cantidad, numProductos:


ENTERO; precio: REAL): BOOLEANO;
INICIO
Producto produ;
produ.cantidad := cantidad;
produ.codigo := codigo;
produ.precio := precio;
listaP[numProductos] := produ;
numProductos := numProductos + 1;
RETORNAR VERDAD
FIN registrarProducto;

PROCEDIMIENTO mostrarProducto();
INICIO
PARA i:=1 HASTA numProductos HACER
ESCRIBIR(listaP[i].codigo);
ESCRIBIR(listaP[i].nombre);
ESCRIBIR(listaP[i].precio);
FIN;
FIN mostrarProducto;

36
4. MANEJO DE ERRORES

El manejo de errores se maneja en la salida del analizador lxico, cuando el analizador lxico
detecta un token que no pertence a ninguna categora / componente lxico entonces etiqueta
a este token con ERROR y luego te indica el error.

5. IMPLEMENTACIN

Se muestra la interfaz con un correcto funcionamiento:

37
Cuando se produce algn error lxico, es decir el token no se encuentra en ninguna categora,
el programa informa de ello:

38
CONCLUSIONES

39
REFERENCIAS BIBLIOGRAFICAS

1. Gua V Anlisis Sintctico. Curso Lenguajes y Traductores.


Prof. Augusto Cortez Vsquez. 2014

2. http://www.lpsi.eui.upm.es/webteolp/Documentation/Felix/Tem
a%204.pdf

3. http://informatica.uv.es/docencia/iiguia/asignatu/2000/PL/200
7/tema3.pdf

40

Вам также может понравиться