Lenguajes y Traductores 2019-II Guia 2 (Gramaticas)
Lenguajes y Traductores 2019-II Guia 2 (Gramaticas)
Lenguajes y Traductores 2019-II Guia 2 (Gramaticas)
GUIA II
ANALIZADOR LEXICOGRAFICO
GRAMATICAS
Beethoven
Objetivos de aprendizaje
Especificar gramaticas
Introducción
Se presenta en esta guía
ESTRUCTURA DE UN COMPILADOR
Analizador
Se divide en tres módulos:
Analizador lexicográfico (Scaner)
Analizador sintáctico (Parser)
Analizador semántico
Sintetizador
Generador de código intermedio
Optimador de código
Generador de código
ANALIZADOR LEXICOGRAFICO
Lexema o token
Ejemplo 1
lexemas
+ , - `, *, / OAr
…..
PR
INICIO, FIN, LEER ….
Componentes léxicos
Sea W : Área = (base *altura) / 2 ;
L L/D
A B
Estado inicial A
Estado final B
Ejemplo 2
Consideremos L = { w talque w es una expresión aritmética}
= { b, a+b, (a+b)/2…}
,
Cualquier w consta de una secuencia de lexemas w1 w2 w3……wn
Cada Wi corresponde a un componente lexico de L
GRAMATICA
Una gramática es un instrumento que se utiliza para especificar la sintaxis de un lenguaje. La
gramática de un lenguaje describe las reglas para verificar el orden estructural de las frases que
pertenecen al lenguaje. La gramática no describe la semántica o significado de las distintas
proposiciones.
G =( VT , VN, P, S) donde :
Convenio de notación
Las variables no terminales se escriben con letras mayúsculas, ejemplo A, B,...
Las terminales se escriben con letras minúsculas y en negrita.
Ejemplo 3
Ejemplo 4
L(G4)={apbap , p 1} G4 (VN, VT, S, P) donde
VN = {S} VT ={a, b}
P: { S aMa
M aMa / b
}
Gramática y Máquinas
Para cada clase de gramática existe una dualidad entre esa clase de gramática y una clase de
maquina abstracta
4. Una maquina de Turing, es similar a un autómata linealmente acotado, excepto que la cinta es
infinita en ambos sentidos.
El autómata linealmente acotado (LBA- linear-bounded automaton) como una maquina de turing
que puede usar solo la cantidad de cinta que contiene datos de entrada. Por tanto, su almacenamiento
crece con el tamaño de la entrada y puede reconocer cadenas más complejas. Sin embargo su
capacidad de almacenamiento de datos es limitada en comparación con la maquina de turing, puesto
que no puede extender su memoria indefinidamente.
es decir son todas las secuencias que están en la cerradura de VT, que pueden obtenerse
a partir del axioma de la gramática aplicando las reglas de producción.
Si a1, a2, ...an w (VN U VT)*
tal que a1 a2, a2 a3, ...an-1 an
entonces decimos que a1 * an
Formas sentenciales.
Si ai (VN U VT) y ai VT Entonces, decimos que ai es forma sentencial.
* *
FACTOR
( EXPRESION )
VARIABLE
CONSTANTE
La regla de producción E D D*
Se puede representar
ENTERO DIGITO
ENTERO FACTOR
div
Ejemplo 5
G= P Id = E
E E Op E / Id / CN
OP + / - / */ div
CN CNE / CNR
CNE D / D CNE
CNR CNE . CNE
D 0/1/2/3/4/5/6/7/8/9
VT={Id,+,-,*,div, .}
P Id = E
CNE
CN
CNE DIGITO
DIGITO CNE
CNR
CNE . CNE
DIGITO
0 1 2 3 4 5 6 7 8 9
Ejemplo 6
N_Prog Id
L_Decl Decl; / L_Decl ; Decl
Decl TIPO L_Id;
TIPO int / char / String
L_Id id / L_Id ,Id
L_Fun Fun / L_Fun ; Fun
Fun public static TIPO N_Fun(){ Cuerpo_Fun}
Fun_Princ public static void main(String arg[ ] ){L_Decl L_Prop }
L_Prop Prop / L_Prop ; Prop
Prop Asig / Lectura / Escritura
Cuerpo_Fun L_Decl L_Prop
Asig Id = Expr
Expr Termino /Termino * Factor /Termino DIV Factor
Factor Id / entero / ( Expr)
Escritura System.out.println( L_Id)
Clasificación de gramáticas
G.con estructura
de frase
G. sensible
al contexto
G.libre del
contexto
G.regular
Propiedades
1 Podemos apreciar en el gráfico que:
Si G es GR entonces G es GLC
Ejemplo 7
G (VN, VT, S, P) donde VN = {S} VT ={a, b}
P: {S aSb/ab}
S ab L(G15)={anbn , n 1 }
S aSb aabb G15 es sensible al contexto
S aSb aaSbb aaabbb
en general:
S aSb aaSbb ... aa..aSb..bb a..ab..b
ASb,aaSbb son formas sentenciales, ab,aabb,aaabbb L(G4)
Ejemplo 8
G (VN, VT, S, P)
donde VN = {S, R, Q} , VT={a, b, c}
P: { 1-2 S aSRQ/ aRQ,
3 QR RQ,
4 aR ab,
5 bR bb,
6 bQ bc,
7 cQ cc }
Ejemplo 9
G (VN, VT, S, P)
donde VN = {S, A, B} , VT={a,b,c,d}
P: { S AB
A aAb/ab
B cBd/cd
}
S AB abcd
S AB aAbB aabbcd
Ejemplo 10
L ={w / S *
w , y además w VT* } ,
es decir son todas las secuencias que están en la cerradura de V T, que pueden obtenerse a partir del
axioma de la gramática aplicando las reglas de producción.
Árbol de derivación
Para cada cadena del lenguaje generado por una gramática es posible construir (al
menos) un árbol de derivación, en el cual cada hoja tiene como rótulo uno de los
símbolos de la cadena.
Para cada frase reconocida por la gramática G, podemos construir un árbol de derivación, donde :
4 Si los nodos n1, n2, ... nk son descendientes directos del nodo n(de izquierda a
derecha), con etiquetas A1 ,A2 ,A3.. ,Ak
entonces existe una producción:
A A1A2A3.. Ak P
Podemos afirmar que w L(G) si existe un árbol de derivación para w.
Ejemplo 11
Consideremos la siguiente gramática
P: { S NOMBRE VERBO
NOMBRE ADJ NOMBRE
NOMBRE ADJ NOMB-SING
VERBO VERB-SING ADVERBIO
ADJ El /La /Los /Las
ADJ Pequeño /traviesa
NOMB-SING niño / niña
VERB-SING estudia / corre / juega /salta
ADVERVIO rápidamente / despacio / mucho
}
NOMBRE VERBO
Pequeño niño
Si w L(G) para G GLC entonces existe un árbol de análisis gramatical o sintáctico para
w.
Este árbol tiene una derivación por la izquierda y otro árbol de derivación por la derecha.
W puede tener varias derivaciones por la izquierda y por la derecha.
Existe mas de un árbol de derivación para w,
Para cada árbol de derivación solo puede obtenerse una derivación extrema izquierda y una
derivación extrema derecha.
Ejemplo 12
Ejemplo 13
G (VN, VT, S, P)
donde VN = {S, A, B} , VT={a, b}
P: { 1 S aBa / aSa,
2 B bb/bBb
}
a B a
bb
S
S aSa aaBaa
aabbaa a S a
a B a
bb
Ejemplo 14
G (VN, VT, S, P)
donde VN = {S, A, B} , VT={a,b,c,d}
P: { S AB
A aAb/ab
B cBd/cd
}
S AB abcd
S AB aAbB aabbcd
Ejemplo 15
P: { S NOMBRE VERBO
NOMBRE ADJ NOMBRE
NOMBRE ADJ NOMB-SING
VERBO VERB-SING ADVERBIO
ADJ El /La /Los /Las
ADJ Pequeño /traviesa
NOMB-SING niño / niña
VERB-SING estudia / corre / juega /salta
ADVERVIO rápidamente / despacio / mucho
}
NOMBRE VERBO
Pequeño niño
EJERCICIOS PROPUESTOS
CUESTIONES BREVES
I Describa formalmente
a. Lexema
b) Gramática libre de contexto
c) Forma sentencial
d) Variable terminal
e) Componente léxico
f) Gramática de hipertexto (ver referencia 5)
REFERENCIAS BIBLIOGRAFICAS
[3] [CORTEZ 2013] Cortez Vásquez, Augusto. ” Matemáticas discretas”, Editorial San
Marcos.
[4] [CORTEZ 2014] Cortez Vásquez, Augusto. ” Lenguajes y traductores”, Editorial
UCSS.
[5] [CORTEZ 2015] Cortez Vásquez, Augusto. ” Learning System of Web Navigation
Patterns through Hypertext Probabilistic Grammars”, INGE CUC.
https://revistascientificas.cuc.edu.co/ingecuc/article/view/383/2015107