Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ASPECTOS
FORMALES
Lenguajes y Gramáticas
PL = (P1 + P2) /2
Contenido: Parte I
Aspetos Formales
Arquitectura
Análisis lexicográfico
Análisis sintáctico
Tabla de símbolos
Contenido: Parte II
Análisis sintáctico
Análisis semántico
Tratamiento de errores
Generación de código
LENGUAJE
Lenguaje (Grassmann)
Lenguaje (Chombsky)
Otras definiciones
Símbolo
• Es una entidad abstracta :
– Ejemplo: A, 7, $, (, etc
Alfabeto ( )
• Cualquier conjunto finito y no
vacio de elementos que
denominaremos símbolos
– Ejemplo:
b ={ 0, 1}
v ={ a, e , i , o , u }
LENGUAJE
Cadena
• Secuencia finita de símbolos del
alfabeto
- Ejemplo:
0, 1, 101, 1100 pertenecen a b
Ejemplo:
* b ={ , 0, 1, 101, 10,..}
Por ejemplo en L = { an bn / n 1 }
queremos indicar que las palabras
que constituyen el lenguaje son
todas las que estan formadas por
símbolos a seguidos de símbolos b
en igual número.
DEFINICION DE
GRAMATICA
G = ( Vn , Vt , P, S )
G = ( Vn , Vt , P, S )
SIMBOLO SIGNIFICADO
El esquema de la derecha desarrolla el elemento de la izquierda
| Se puede elegir únicamente uno de los elementos. Las reglas AaA y
AbB se convierten en AaA | bB
{} Los elementos que incluyen las llaves, pueden repetirse cero o más
veces, se usa también * o el +
[] Los elementos que incluyen los corchetes pueden utilizarse o no. Son
expresiones diferentes A | B+ y [A | B]+
() Sirven para agrupar los elementos que incluyen
GRAMATICA EJEMPLO
Reconocimiento de un identificador:
P={ P={
A L (L / D)* AL M
L a/b/…/z ML M / DM /
D0/1/…./9 L a/b/…/z
} D0/1/…./9
}
GRAMATICA CON O SIN EXPRESIONES
REGULARES
P={
P={
AL M
A L (L / D)*
ML M / DM /
L a/b/…/z
L a/b/…/z
D0/1/…./9
D0/1/…./9
}
}
AL M
palabra9 pLM
paLM
palLM
palaL M
palab L M
palab r L M
A L (L / D)* palab r a DM
palab r a 9
GRAMATICA CONFUSA
Reconocimiento de un identificador:
P={ P={
AL M <Id><Letra> <MasSimb>
ML M / D M / <MasSimb> <Letra> <MasSimb> /
L A/B/…./Z/a/b/…/z <MasSimb> <Digito> <MasSimb> /
D0/1/…./9 <Letra> A/B/…./Z/a/b/…/z
} <Digito>0/1/…./9
}
GRAMATICA CON Vt CON MAS DE UN
CARACTER
P={
<S> int <Id> <otro>
<otro> , <Id> <otro> /
<Id><Letra> <Mas>
<Mas> <Letra> <Mas> /
<Mas> <Digito> <Mas> /
<Letra> A/B/…./Z/a/b/…/z
<Digito>0/1/…./9
}
GRAMATICA HASTA UN NIVEL LEXICO
<Letra> <Mas>
, <id> <otro>
<Letra> <Mas>
<Letra> <Mas>
<Digito> <Mas>
b
c a 8
GRAMATICA HASTA UN NIVEL
SINTACTICO
• No se describen las
G= ( Vn, Vt, S, P) palabras hasta el
Vn={S, Mas } detalle,..en este caso
Vt={ id, int, , } G describe como es la
estructura de la
P={ instrucción.
<S> int id <Mas>
<Mas> , id <Mas> / • Por ejemplo id es un
} Vt y no hay que
describirlo como se
forma.
RECONOCIMIENTO
a , id <Mas>
cantidad
FORMA GRAMATICAL CORRECTA
Secuencias a reconocer
L(G)={ an bm / n impar y m par}
G=(Vn, Vt, P, S)
Vn={ S, A, B} Vt={ a, b}
P={ SaAbbB abb aaaaaaabbbb
AaaA / S S
BbbB/
}
aAbbB aAbbB
aaA bbB
aaA
aaA
FORMA GRAMATICAL NO CORRECTA
aAbbB aAbbB
aA bB aA bB
aA bB
JERARQUIA DE CHOMSKY
A aB
B a
con A,B Vn , a Vt U { }
TIPO 3:
Gramatica regular/ racional / Kleene
A Ba
B a
con A,B Vn , a Vt U { }
TIPOS DE GRAMATICA
TIPO 2:
Gramática Libre del Contexto / algebraicas /
incontextuales ( G.L.C)
A , A Vn , ( Vn Vt )*
Observación:
Toda gramática de tipo 3 es tambien de tipo 2
Equivale en cuanto a potencia descriptiva, al autómata
con pila o Pushdown
TIPOS DE GRAMATICA
TIPO 1:
Gramática Sensible al Contexto / Contextuales Este tipo de producciones,
implica que las sustituciones
aAb aBb sólo pueden efectuarse en
donde cierto contexto (el símbolo 'A'
A Vn se podrá sustituir por '
a, b (Vn Vt)* ' B ' si y sólo si, está precedido
B (Vn Vt)+ por ’a', y le sigue ‘b'), esto es,
son gramáticas dependientes
Definicion alternativa (sensibles) al contexto
con | | | |
, ( Vn Vt ) +
TIPOS DE GRAMATICA
TIPO 0:
Gramática sin restriccion / Estructura de frase
G1
S aSa | que es de tipo 2 y también por
G2
S aA |
A aS que es de tipo 3
r : Vn ( Vn Vt )*
G.L.C
Dada G=( Vn, Vt, P, E)
Vn={ E } Vt = { +, *, a, ( , ) }
P={ E E+E
E E*E
E (E)
Ea }
La secuencia:
FORMA SENTENCIAL
G.L.C
Arbol de derivación
E*E
E+E
a a a
G.L.C. AMBIGUA
Una gramática G es
ambigua si hay al menos
una cadena en L(G) que
tenga dos o mas árboles de
derivación distintos.
E E
E*E E + E
E +E E*E
a a a a a a
G.L.C. AMBIGUA
Recomendación
Para algunos tipos de
analizadores sintácticos es
preferible que la gramática no
sea ambigua pues si lo fuera, no
se podría determinar de manera
exclusiva que árbol de análisis
sintáctico seleccionar para una
frase
G.L.C. AMBIGUA
Eliminar la
ambiguedad
A A , ( Vn Vt ) * , A Vn
+
• La recursión izquierda es un
problema que debe ser resuelto G=(Vn, Vt, P, E)
antes que se quiera trabajar con Vn= { E, T, F }
una gramática para construir un
analizador descendente, ya que Vt = { + , * , a, ( ,) }
éste no funcionará si la gramática P={
la posee.
EE+T|T
• Por ejemplo esta gramática es no TT*F|F
ambigua pero si es recursiva.
F a|(E)
}
SOLUCION PARA LA
RECURSIVAD
A A’ A , A’ Vn
A’ A’ | a , ( Vn Vt ) *
ELIMINANDO LA RECURSIVIDAD
Eliminando la
recursividad de AA|
las producciones
del ejemplo A A’ A , A’ Vn
anterior A’ A’ | a , ( Vn Vt ) *
G recursiva G no recursiva
G=(Vn, Vt, P, E)
Vn= { E, E’, T, T’, F }
G=(Vn, Vt, P, E)
Vt = { + , * , a, ( ,) }
Vn= { E, T, F }
Vt = { + , * , a, ( ,) }
P={ E TE’
E’ +TE’/
P={ E E + T | T
TT*F|F T FT’
F a|(E)} T’*FT’/
F a|(E) }
RECURSIVIDAD ESCONDIDA
B1 YAB|XZ
B2 XYZ
B1 YAB|XZ
B2 XYZ
Tenemos
X A B Z |X Z Z
Hay
recursividad
GRAMATICA
SIN RECURSION
AA|
A A’ A , A’ Vn
A’ A’ | a , ( Vn Vt ) *
X ABZX'
X A B Z |X Z Z
X´ Z Z X ' |
EJERCICIOS
Genere una gramática para los siguientes casos:
3. L = { aN c bN / N ≥0}
4. L= { aN bN / N >0}
5. L= { aN bN cN / N >0}
6. L= { aN bM cN+M / N,M >0}
EJERCICIOS
7. L= { aN bN cN / N >0}
dato, a, b: integer;
cant, x: real;
Total: real;
EJERCICIOS
a) S abB b) SAb c) S aB
B cb ABc Bb BaB
B B
d) S aBbB e) SA f) S aB
BcBA AB B bA
BAaab Bab A
A a
g) SSa h) SBbA i) SaBb
SbS BbabA B
S AabBA BbB
SOLUCION
L= { aN bN cN / N >0} S
2
S
1
Vn={ S, R, Q} ↓ ↓
Vt={ a, b, c } aRQ aSRQ 2
↓ 4 ↓
P={ 1. SaSRQ
abQ aaRQRQ
2. S aRQ 4
↓ 6 ↓
3. QR RQ abc aabQRQ
4. aRab ↓ 3
5. bR bb aabRQQ
6. bQbc ↓ 5
7. cQcc } aabbQQ
↓ 6
aabbcQ
↓ 7
aabbcc
PROYECTO
2. IDENTIFICADORES
Compiladores:
principios, técnicas y
herramientas, (2010),
Alfred V. Aho, Monica S.
Lam, Ravi Sethi &
Jeffrey D. Ullman
BIBLIOGRAFIA
FÉLIX GARCÍA RAFAEL CABALLERO ROLDAN,
MERAYO (2005), TERESA HORTALA GONZALES,
NARCISO MARTI OLIET, SUSANA
Matemáticas Discretas,
NIEVA SOTO, ANTONIO PAREJA
3ra. Edición, Thomson LARA Y MARIO RODRÍGUEZ
ARTALEJO (2007), Matemáticas
Discretas para Informáticos