Академический Документы
Профессиональный Документы
Культура Документы
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
3
OBJETIVOS
4
1. ESPECIFICACIN DEL LENGUAJE
1.1. Caractersticas del Lenguaje
2) Especificaciones
Alfabeto Latinoamericano:
Maysculas (A-Z) y minsculas (a-z)
Dgitos (0-9)
Smbolos (&, %, , , , , -, /, *, +, >, <, =, |, , ?, , !, ., :,
coma, ;, parntesis , [, ])
Asignacin
Declarativa
Condicional
Iterativa
Lectura y Escritura
2.3. Operaciones
2.3.4. O. Asignacin ( := )
Constantes Variables
o Entero o Entero
o Real o Real
o Cadena o Cadena
o Carcter o Carcter
o Booleano o Booleano
Vectores y Matrices
Registros
5
2.6. Palabras Reservadas
2.7. Delimitadores
ESTRUCTURA GENERAL
P : SE SF / SF
SECCIN ESTRUCTURAS
SE : TIPO LVE
LVE : VE / VE , LVE
VE : ID : TIPOE
6
SECCIN FUNCIONES
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
7
Leyenda:
8
2. ESPECIFICACIN DEL TRADUCTOR
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.
1. Identificadores:
Expresin regular:
Autmata finito:
d
l otro
0
9
2. Palabras Reservadas:
Expresin regular:
Autmata finito:
l otro
0
l: letra
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
Expresin regular:
r = & / ||
| | otro
0
&
14
13. Operadores Relacionales
Expresin regular:
Autmata finito:
=
>
<
= otro
0
>
=
otro
Expresin regular:
r = :=
Autmata finito:
: = otro
0
15
15. Constante Numrica
Expresin regular:
Autmata finito:
-
d
0 d
d .
otro
d
Expresin regular:
Autmata finito:
l d
otro
0
16
2.1.3. Errores Lxicos
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
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.
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 }
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:
19
2.2.3. Conversin a la forma normal de Chomsky
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 }
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
23
2.2.4. Construccin de la tabla de anlisis sintctico
Por estas:
24
Definicin de los conjuntos PRIMERO y SIGUIENTE
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 }
34
2.3. ANALIZADOR SEMNTICO
35
3. EJEMPLOS DE PROGRAMAS EN LENGUAJE TURING
TIPO
Producto: REGISTRO
codigo, cantidad: ENTERO;
precio: REAL;
FIN
PROCEDIMIENTO PRINCIPAL();
INICIO
cod, cant: ENTERO;
prec: REAL;
ret: BOOLEANO;
listaP: ListaProductos;
numProductos: ENTERO;
opc : CADENA;
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
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
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