Sei sulla pagina 1di 83

Diapositiva 1

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 2

Descripción de lenguajes
Lenguajes de programación
1. Programas
2. Lenguajes de alto nivel y de máquina
3. Traductores
1. Especificaciones gramaticales y semánticas
Lenguajes formales
◦ Alfabeto
◦ Palabras
Sintaxis
◦ Reglas de formación de palabras y frases
Semántica
◦ Significado de las palabras y frases

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 3

El problema de la traducción
MOVE 3 to A A := 3;
(Cobol) (Ada,Pascal)

A=3 3A !
(Fortran) (Forth)

MOV AX, 3
A =3;
01010111 /A 3 def
(C/C++, JS, (Postscript)
Java) 11101010
00000101

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 4

Reconocimiento de código fuente


Programa
escrito en Análisis
algún Léxico
lenguaje
tokens

Unidad I
Análisis
Sintáctico
árboles

Programa en
Análisis Traductor lenguaje de
Semántico máquina
Unidad II

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 5

Conceptos sobre lenguajes


Símbolos Operaciones con palabras
Alfabeto: Σ = {a, b, c, ...} Concatenación: X.Y
Potencia: Xi
Cadenas o palabras
Reflexión: X-1 o XR
Σn con n >= 0
Σ0 = {λ} (vacío λ, ε, ∆, ∅) Operaciones con lenguajes
Unión: L1 ∪ L2
Σ* = Σ0 ∪ Σ1 ∪ Σ2 ∪ ... Intersección: L1 ∩ L2
Σ+ = Σ1 ∪ Σ2 ∪ ... = Σ* - {λ} Resta:L1 – L2
Concatenación: L1 • L2
Universo de un alfabeto
Potencia: Li
W(Σ) Clausura: L+ = U∞i=1 Li
Lenguaje sobre un alfabeto Cierre: L*=L+ U {λ}
L(Σ) ⊂W(Σ) Reflexión: L-1

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 6

Reglas de producción
N R N (elemento a definir) R (patrón de generación)
Sean: v w donde v, w ∈ Σ*
Derivación directa: v w
Derivación: v v1 v2 … w

Regla compresora
N R |N| > |R| Ej: 101 11

Derivación por izquierda y por derecha


Sea la palabra 00011 y las reglas a) 01 11 b) 00 10
Por izq: 00011-> 10011-> 11011-> 11111
b b a
Por dcha: 00011-> 00111-> 01111-> 11111
a a a

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 7

Gramáticas formales
Definición: G = {Σ, Σt, S, P}
Σ alfabeto (Σt U Σn) Σn = variables
Σt conjunto de símbolos terminales
S axioma S ∈ Σn
P conjunto finito de reglas de producción
Lenguaje generado: L(G) conjunto de todas las
palabras o cadenas generadas por la gramática
Equivalencia: L(G1) = L(G2)

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 8

Gramáticas formales
P = { S -> aSb, S -> aSbb, S -> b } S
Σn = { S }
aSb
Σt = { a, b } ¿Qué genera?
aSbb
Dados ∑n = {S, T} ∑t = {a, b}
Obtener P para L = { ar b / r > 0 } b
aabbbb
S -> aS S -> aT S -> aS
X
S -> b T -> aT S -> aT
T -> b T -> b
Dados ∑n = {S, T} y ∑t = {a, b, c}
Obtener P para
L = { ar b cr / r > 0 } X
S -> aSc
S -> b
S -> aSc
S -> T
T -> b

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 9

Jerarquía de gramáticas (Chomsky)


Irrestrictas (G0)
• Condición: N R donde N ≠ λ
• Ejemplo: S → aSBC | aBC, CB → BC, aB → ab, bB → bb, bC → bc, cC → cc, A → bc

Sensibles al contexto (G1)


• Condición: N R donde |N|< |R|, N = αAβ, R = αΓβ
• tal que α, β, Γ ∈ V* con V = (Σt ∪ Σn)* y A = Σn
• Ejemplo: S → abc | aAbc, Ab → bA, Ac → Bbcc, bB → Bb, aB → aa | aaA
Libres de contexto (G2)
• Condición: N R donde N = Σn, R = sin restricción
• Ejemplo: S → aSb | ab | λ

Regulares (G3)
• Condición: N R donde N=Σn, R = (Σt ∪ Σn) ó Σt ó λ
• Ejemplo: A → aB | a | λ

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 10

G3 (regulares)
Regular x derecha Regular x izquierda
S -> 1A S -> C0
A -> 1A | 0B | 0 C -> C0 | D1 | 1
B -> 0B | 0 D -> D1 | 1
Ambas generan
11000

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 11

Recursividad por izquierda


Problemas con los analizadores de código
No puede procesarla
Se debe eliminar
Recursividad por izquierda inmediata
A →A α | β
Eliminación de recursividad por izquierda
Se trabaja con el término β (que no es RI)
A→βB
B→αB | ε

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 12

Eliminación recursividad izquierda


Sea por ejemplo el siguiente caso
S → Aa | b
A → Ac | Sd | f
1. Reemplazar: A → Sd por A → Aad | bd
2. Queda: A → Ac | Aad | bd | f
3. Eliminar recursividad inmediata:
A → bdB | fB
B → cB | adB | ε
Finalmente:
S → Aa | b
A → bdB | fB
B → cB | adB | ε

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 13

G2 (independientes de contexto)

G1 (no estricta) G2 (estricta)


S -> AB S -> AB | A | B | λ
A -> 0A1 | λ A -> 0A1 | 01
B -> 2B | λ B -> 2B | 2

Ambas generan
0 n1 n2 m con n, m ≥ 0

G1 no es estricta ya que incluye reglas nulas


asociadas a símbolos que no son el axioma

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 14

Árbol de derivación y ambigüedad


Sea G = { Σt, Σn, S, P } Para la cadena: [0[01*]+]
Σt = { 0, 1, [, ], +, * }
Σn = { E } S = E
P = { E [EE+],
E [EE*],
E 0, E 1 }
Necesidad de reglas de precedencia y asociatividad
a+b*c a+b+c a–b–c

Sea: S SaS|SbS|c ¿ Qué pasa para cbcac ?

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 15

Notación BNF y EBNF


Es un meta-lenguaje para especificación sintáctica de uso casi
universal

BNF (John Bakus, Peter Naur Normal Form - 1959)


<no terminal> ‘a’ ‘+’ ::= () |
Ejemplo
<dígito> ::= ‘0’ | ‘1’ | … | ‘9’
<número> ::= <dígito> <número>
<número> ::= <dígito>

EBNF (Extended BNF)


{ }* o {} { }+ []
Ejemplo
<dígito> ::= ‘0’ | ‘1’ | … | ‘9’
<número> ::= <dígito> {<dígito>}*

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 16

Diagramas sintácticos

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 17

BNF – EBNF – Diagramas


BNF:
<expr> ::= <expr> ‘+’ <term> |
<expr> ‘-’ <term> | <term>

EBNF:
<expr> ::= <term> { (‘+’ | ‘-’) <term> }

Diagrama sintáctico
expr

term

+
term
-

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 18

Notaciones
Infija
más usual (requiere paréntesis)
Postfija
Evaluación muy eficiente
Prefija
notación funcional

Infija Postfija Prefija


a+d*g-h adg*+h- -+a*dgh

C PostScript Lisp
a=a+ b /a a b add def (setf a (+ a b))

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 19

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 20

Máquinas abstractas
Permiten simular procesos para tratar información
la información se codifica en cadenas de símbolos
son “dispositivos” que manipulan cadenas de símbolos
procesan cadenas de entrada y producen cadenas de salida
reciben los símbolos de entrada secuencialmente
El símbolo de salida, en un instante dado depende de
el último símbolo de entrada
la secuencia o cadena, que ha recibido hasta ese instante
el estado en que se encuentra
Estados de un autómata
en un instante de tiempo dado, sólo puede estar en un estado
estados iniciales y estados finales
Formas de descripción: gráfica, matricial, funcional
Se usan como reconocedores de lenguajes
Existen distintos tipos de autómatas

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 21

Máquinas abstractas
Máquina de Mealy
ME = (Σe, Σs, Q, f, g) 0/11
1/11
0
1

Σe: alfabeto de entrada Σs: alfabeto de salida A A/11

Q: conjunto finito de estados ≠ ∅ 0/00 1/01 0 1

f: Q x Σe Q g: Q x Σe Σs B C B/00 C/01

La salida depende del estado actual y de la entrada


00 00/0
Máquina de Moore 10 10/0

A/0 A
ME = (Σe, Σs, Q, f, g) 10 00 10/1 00/0
Σe: alfabeto de entrada Σs: alfabeto de salida
B/1
Q: conjunto finito de estados ≠ ∅ C/0 B C

f: Q x Σe Q g: Q Σs

21
La salida depende sólo del estado actual

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 22

Autómata finito determinista


AFD = (Σ, q0, Q, F, f)
Σ: alfabeto de entrada q0: estado inicial ∈Q Notación funcional
f(1, a) 2
Q: estados ≠ ∅ F: estados finales ⊂ Q
f(1, b) 3
f: Q x Σ Q f(2, a) 2
f(3, b) 2
$, 2 a b, $, 2 0 f(3, $) 4
f(4, $) 4
2 a, 2 $ a, b f(4,2) 3
a
1 b 4 Notación matricial
2
a b $ 2
b
3 $ 1 2 3 - -
2 2 - - -
Habitualmente se representan las transiciones que conducen al 3 - 2 4 -
reconocimiento de alguna cadena, considerándose implícito un
"estado de captación global“ donde llegan los arcos omitidos. 4 - - 4 3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 23

Algoritmo de implementación
est = 1
repetir { b, $, 2 0
$, 2 a
leer c
segun (est) { 2 a, 2 a, b
a $
1: si c == ‘a’ hace est = 2
si c == ‘b’ hace est = 3 1 b 2 4
sino est = 0
b
2: si c == ‘a’ hace est = 2 3 $
sino est = 0
3: si c = ‘$’ hace est = 4
si c == ‘b’ hace est = 2
sino est = 0
4: si c == ‘$’ hace est = 4
si c = ‘2’ hace est = 3
sino est = 0
}
} hasta c == ‘’

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 24

Autómata finito no-determinista


AFND = (Σ, q0, Q, F, f)
Σ: alfabeto de entrada ?? q0: estado inicial ∈Q ??
Q: estados ≠ ∅ ?? F: estados finales ⊂ Q ??
f: Q x (Σ ∪ {λ}) P(Q) ??

1 q1
1 0 1 0 0 …
q0 0,1
0
λ,1
λ
q2 q3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 25

Gramáticas G3 y autómatas
Un lenguaje regular es el que se puede generar a partir de la aplicación de las operaciones de
unión, concatenación y el cierre de Kleene un número finito de veces.

Gramática regular
ΣT = {0, 1}
ΣN = {A, B, S}
P = { S 0A, A 0S, A 1B, B 1, B 0 }

Autómata

Expresión regular
0.(0.0)*.1.(1|0)

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 26

Expresiones regulares
Kleene (1956)
Describen máquinas de estados finitos
Operadores
Unión | V +
Concatenación .
Cierre (Kleene) *
Cierre (positivo) +
El problema de la conversión
Obtener el AEF
a.(b|c*).d ¿y la gramática?
y z

x w
(x | y*).z*.w q0 q1 q2 ¿ y.y.y.z.z.w ?

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 27

Conversión AEF a ER
Algoritmo de transformación
c c
b
a b a
qi qk qf qi qf qi qf
c
a
b d
qk

a.c*.b
a.c*.b qi
a | b.c*.d qf
qi qf qi

Sea
b.(b*.a.b)*.b*.(a|b).b*
1) b.bbb.a…. y queda en q0
Desde q0:
2) b.bbb….
(b.b*.a)*.b.b*.(a|b).b*

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 28

Conversión ER a AEF
Algoritmo
McNaughton,
Yamada,
Thompson

Sea (1 | 0)*1

convertir a
AFD y
minimizar

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 29

Equivalencia de autómatas
Se basa en la construcción de subconjuntos
Cada estado de AFD contiene un conjunto de estados del AFND
∀ AFND ∃ AFD (AFD son casos particulares de AFND)
N=(∑, q0, Q, F, f) equivale a D=(∑, {q’0}, Q’, F’, f’)
Es decir N = D / L(D)=L(N)
Si se cumple que:
Q’ = 2|Q| (conjunto potencia P(Q) )
q’i = [qi , …, qf ] => {qi , …, qf} ⊂ Q’
q’0 = {q0}
F’ = { q’ ∈ Q’ / q’ ∩ F ≠ ∅ } (al menos uno sea final)
f’(q’, a) = {∪q∈q’ f(q, a)} / q ∈ Q Λ a ∈ ∑

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 30

Equivalencia de autómatas
Algoritmo:
Eliminar estados superfluos (no alcanzables o que no conducen a un
estado final)
Construir el conjunto 2|Q| de estados combinados
Para cada estado de 2|Q| y símbolo de entrada, analizar cuáles estados
son alcanzables
Eliminar los estados
No alcanzables (excepto el inicial)
Aquellos que sólo son alcanzados por los eliminados en el paso previo
Los duplicados (debe quedar uno de ellos)
Construir el grafo del AEFD
El grafo obtenido debe ser conexo

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 31

Equivalencia de autómatas
Estados a b c
{} - - -
*
>* q0 q0,q1,q2 q1,q2 q2
*q1 - q1,q2 q2 **
*q2 - - q2
>*q0,q1 q0,q1,q2 q1,q2 q2
**
>*q0,q2 q0,q1,q2 q1,q2 q2 **
*q1,q2 - q1,q2 q2
>*q0,q1,q2 q0,q1,q2 q1,q2 q2

Se eliminan:
* estado de captación global
** no alcanzables

Tanto en el AEF original y el resultante, todos los estados, son finales.


Al aplicar el algoritmo queda con dos estados iniciales y se debe elegir uno de ellos.

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 32

Equivalencia de autómatas
Estados a b
q1
λ {} {} {}
a > {q0} - -
q0 b {q1} *{q2,q3} -
a
*{q2} - -
q2
{q3} *{q2} {q1}
q3 a {q0,q1} *{q2,q3} -
*{q0,q2} - -
La transición vacía no se considera {q0,q3} *{q2} -
sólo se tiene en cuenta cuando está en el
camino de otro símbolo procesable *{q1,q2} *{q2,q3} -
{q1,q3} *{q2,q3} {q1}
q2, *{q2,q3} *{q2} {q1}
a q3 *{q0,q1,q2} *{q2,q3} -
q0, a {q0,q1,q3} *{q2,q3} {q1}
a *{q0,q2,q3} *{q2} {q1}
q1 b
*{q1,q2,q3} *{q2,q3} {q1}
q2
*{q0,q1,q2,q3} *{q2,q3} {q1}
q1

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 33

Minimización de autómatas
Si para AFD=(∑, q0, Q, F, f) ∃ AFDM=(∑, q’0, Q’, F’, f’) entonces
L(AFD)=L(AFDM)
Eliminar los estados no alcanzables desde el estado inicial
Eliminar los estados desde los que no se alcanza un estado final
Luego:
1. Hacer partición inicial P en dos grupos G’(F) y G’’(Q – F)
2. ∀ G de P (|G| > 1) obtener nueva Pn de modo que:
∀ qi, qj ∈ Gi ∀ α ∈∑ se cumple: f(qi, α), f(qj, α) Gi
sino deben separarse en un nuevo grupo
3. sustituir G en Pn por el nuevo conjunto de subgrupos
4. si Pn= P entonces Pfinal := P e ir a (5) sino P := Pn e ir a (2)
5. Elegir en cada grupo un qi, como representante del grupo
6. Eliminar estados pasivos (“sumideros” no finales o no alcanzables)

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 34

Minimización de autómatas
AFD reconoce L = (a|b)*abb
Caminos posibles ¿cuál es válido?
Q1 aQ2 aQ2 bQ4 aQ2 bQ4 bQ5

Q1 aQ2 bQ4 bQ5 aQ2 bQ4 bQ5

Q1 aQ2 aQ2 bQ4 bQ5

P1:= {Q1, Q2, Q3, Q4} = {Q – F} {Q5} = {F}

P2 := {Q1, Q2, Q3, Q4} x b {Q1, Q2, Q3} {Q4} {Q5}

P3 := {Q1, Q2, Q3} x b {Q1, Q3} {Q2} {Q4} {Q5}

{Q1, Q3} no se separan:


- para ‘a’ van a una misma partición
- para ‘b’ van a la propia partición
Se elige Q1 en representación de
ambos por ser estado inicial

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 35

Minimización de autómatas
AFD reconoce L = (a|b)*abb Est a b

P1:= {Q1, Q2, Q3, Q4} {Q5} >Q1 Q2 Q3


Q2 Q2 Q4
P2 := {Q1, Q2, Q3, Q4} x b {Q1, Q2, Q3} {Q4} {Q5} Q3 Q2 Q3
P3 := {Q1, Q2, Q3} x b {Q1, Q3} {Q2} {Q4} {Q5} Q4 Q2 Q5
*Q5 Q2 Q3

Est a b Est a b Est a b Est a b


>Q1 Q2 Q3 >Q1 Q2 Q3 >Q1 Q2 Q3 >Q1 Q2 Q3
Q2 Q2 Q4 Q2 Q2 Q4 Q2 Q2 Q4 Q2 Q2 Q4
Q3 Q2 Q3 Q3 Q2 Q3 Q3 Q2 Q3 Q3 Q2 Q3
Q4 Q2 Q5 Q4 Q2 Q5 Q4 Q2 Q5 Q4 Q2 Q5
*Q5 Q2 Q3 *Q5 Q2 Q3 *Q5 Q2 Q3 *Q5 Q2 Q3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 36

Minimización de autómatas
a

Q1 a Q2 b Q4 b Q5
a
b a b
Q3
b

P1:= {Q5} + {Q1,Q2,Q3,Q4} a


b a
P := {Q5} + (Q1, Q2, Q3) x b + Q4 x b
a b b
P2 := {Q5} + {Q1, Q2, Q3} + {Q4} Q1 Q2 Q4 Q5
a
P := {Q5} + {Q4} y {Q1, Q3} x b y Q2 x b
b
P3 := {Q5} + {Q4} + {Q1, Q3} + {Q2}

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 37

Autómatas de pila
AP = ( Σ, Γ, Q, a0, q0, F, f )
Σ: alfabeto de entrada q0: estado inicial
Γ: alfabeto de pila F: estados finales
Q: conjunto de estados f: Q × (Σ ∪ {ε}) × Γ → Q × Γ
a0: símbolo inicial pila
Descripción o configuración instantánea: terna (q, x, z) que define el estado del
autómata, donde q ∈ Q, x ∈ Σ, z ∈ Γ
Movimiento: paso o transición de una descripción instantánea a otra y se produce
como resultado de la aplicación de f

q x, z /w donde w ∈ Γ

Símbolo distinguido: puede pertenecer a Σ o Γ, pero no forma parte de las cadenas


del lenguaje reconocido y a menudo se utiliza para evitar el indeterminismo.
37

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 38

Descripción de autómatas de pila


Para cada gramática G independiente del contexto, existe un autómata de pila M tal
que L(G)=L(M)
Los símbolos en la pila se ordenan en sentido cima base (convención)

0, ε # 1, # ε

ε, ε $ ε, ε ε ε, $ ε
q0 q1 q2 q3

Descripción funcional Descripción tabular


f(q0 x ε x ε) q1 x $ Estado Entrada Pila Transición
f( q1 x ε x ε) q2 x ε q0 ε ε e1,$
f( q1 x 0 x ε) q1 x #
q1 ε ε e2,ε
f( q2 x ε x $) q3 x ε
f( q2 x 1 x #) q2 x ε q1 0 ε e1,#
q2 ε $ e3,ε
q2 1 # e2,ε

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 39

Formas de reconocimiento
Reconocimiento por vaciado de pila
Lvp(M)={w∈Σ*/(q0,w,a0) (p,ε,ε),p∈Q}
Reconocimiento por alcanzar el estado final
Lef(M)={w∈Σ*/(q0,w,a0) (p,ε,h),p∈F,h∈Γ*}
Lvp y Lef reconocidos pueden ser diferentes

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 40

Comportamiento de un AP
Gramática libre de contexto Autómata de Pila
ΣT = {a, b} ΣN = {S} Σ: {a, b} q0: e0
P = { S -> aSb| λ } Γ : {$, a} F: {e3}
L1 = {anbn / n > 0} Q: {e0,e1,e2,e3} a0: $

Cinta

a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 41

Comportamiento de un AP

Cinta

a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 42

Comportamiento de un AP

Cinta
a
a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 43

Comportamiento de un AP

Cinta
a
a
a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 44

Comportamiento de un AP

a
Cinta
a
a
a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 45

Comportamiento de un AP

a
Cinta
a
a
a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 46

Comportamiento de un AP

Cinta
a
a
a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 47

Comportamiento de un AP

Cinta
a
a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 48

Comportamiento de un AP

Cinta

a a a b b b $
Pila

a, λ a b, a λ

λ, $ $ b, a λ λ, $ $
e0 e1 e2 e3

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 49

Autómatas de pila deterministas


Es determinista si cumple
∀(q∈Q ∧ A∈Γ) |f(q,ε,A)|>0 ⇒ ∀a∈Σ,f(q,a,A)=∅

∀(q∈Q ∧ A∈Γ ∧ a∈Σ ∪ {ε}),|f(q,a,A)|<2

Sea AP = { ∑, Г, Q, a0, q0, F, f } donde ∑ = { 0, 1 }, Г = {0, 1, #},


Q ={ q0, q1, q2 }, a0 = #, q0 = q0, F = {q2} especificar el APD que
reconoce por vaciado de pila (dejarla en la situación inicial) y
alcanzar el estado final, para el lenguaje: L = (wwr / w Є {0, 1}*)

Uso de símbolo distinguido para eliminar no-determinismo

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 50

Autómatas de pila y gramáticas


AP que reconoce una G2
Sean G={ΣN, ΣT, S, P} y AP ( Σ, Γ, Q, a0, q0, F, f )
construir APND=(Σ, ΣT∪ ΣN, {q}, S, q, fi, f)
El reconocimiento es por vaciado de pila
Algoritmo
si A ::= w ∈ P entonces (q, w)∈ f(q, ε, A)
si a∈ Σ entonces (q, ε)∈ f(q, a, a)
Sea P = { S→0S1, S→c } entonces
f(q, ε, A)= {(q, 0S1), (q, c)}
f(q, 0, 0)= f(q,1,1)= f(q, c, c)= {(q, ε)}

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 51

Algoritmo para convertir G2 en AP


Gramática G2 Definir
Σt = {a, b, z} 1) Σ con Σt
Σn = {S, M, N} 2) Γ con Σt + Σn + #
S zMNz 3) Q como i, p, q y fi
M aMa Agregar transiciones
M z 4) (i, λ, λ; p, #)
N bNb 5) (p, λ, λ; q, S)
N z 6) (q, λ,N; q,w) ∀ Σn
Autómata de pila 7) (q, x, x; q, λ) ∀ Σt
Σ = {a, b, z}
Γ = {a, b, z, S, M, N, #}
8) (q, λ, #; fi, λ)
Q = {i, p, q, fi}
a0 = #
q0 = i
F = fi

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 52

Definir el AP correspondiente
G2 = (∑T, ∑N, S, P) Definir AP
∑T = {a, b, c, d} 1) Σ con Σt Σ = {a, b, c, d}
∑N = {S, A, B} 2) Γ con Σt + Σn + # Г = {a, b, c, d, S, A, B, #}
3) Q como i, p, q y fi
P={ Agregar transiciones Q = {i, p, q, fi}
S aAa, 4) (i, λ, λ p, #) a0 = #
A bB | c, 5) (p, λ, λ q, S) q0 = i
B Acd 6) (q, λ,N q,w) ∀ Σn F = fi
} 7) (q, x, x q, λ) ∀ Σt
8) (q, λ, # fi, λ)

λ, A / c λ, B / Acd
λ, S / aAa λ, A / bB

λ, λ / # λ, λ / S λ, # / λ
i p q f
b, b /λ a, a /λ
c, c /λ d, d /λ

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 53

Comportamiento del AP

S aAa
A bB | c
a b c c d a
B Acd
λ, B / Acd
λ, A / bB
λ, A / c
c
A
λ, S / aAa
c
b
a
λ, λ / # λ, λ / S λ, # / λ B
A
d
i p q f
a
a
S
b, b /λ #
c, c /λ
a, a /λ
d, d /λ

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 54

Autómatas Linealmente Acotados


ALA= (Q, ∑, Γ, δ, e0, b, F) donde b = blanco
longitudcinta = longitudcadena

Q: conjunto finito estados


∑ : alfabeto de entrada; ∑ ⊆ Γ (input)
Γ : ∑ ∪ {b} ∪ otros símbolos, b ∉ ∑ (output)
δ: Q x Γ → Q x Γ x {D, I, N}
e0: estado inicial ∈ Q cinta
F: estados finales ⊆ Q
estados Control

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 55

Máquinas de Turing
AP = (Γ, Σ, b, Q, q0, F, f)
Σ: alfabeto de entrada ⊂ Γ
Γ: alfabeto de símbolos de la cinta
b: blanco ∈ Γ, ∉ Σ
Q: conjunto de estados
q0: estado inicial ∈ Q
F: estados finales ⊂ Q
f: Q x Γ Q x Γ x {I, D, P}
cinta
… …

estados Control

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 56

Máquinas de Turing
Duplicador
1 → $, R 1 → 1, L 1 → 1, R

q0 ◊ → ◊, L q1 $ → 1, R q2
◊ → ◊, R En 1936, Alan Turing resolvió el planteo
◊ → 1, L hecho por David Hilbert sobre si las
q3 Matemáticas son decidibles, es decir, si hay
un método definido aplicable a cualquier
sentencia matemática que determine si es verdadera o no.
En el artículo On Computable Numbers, Turing construyó un modelo
formal de computador, la Máquina de Turing, demostrando que había
problemas que una máquina no podría resolver.
Esa máquina fue el primer modelo teórico de lo que
luego sería una computadora programable.
Con el tiempo se las denominó máquinas
de estado finito, debido a que en cada etapa
de cálculo, la siguiente acción se contrasta
con una lista finita de estados posibles.

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 57

Lenguajes, gramáticas y autómatas

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 58

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 59

Análisis léxico
Funciones de un scanner
1. Recibir caracteres de entrada
2. Agruparlos según la G3 para reconocer lexemas y
generar tokens
3. Detectar algunos significados y errores
1. identificar los tokens y evaluarlos
4. Introducir información adicional descriptiva
5. Eliminar separadores innecesarios
6. Sustituir macros

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 60

Análisis léxico

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 61

Análisis léxico

patrón conjunto de secuencia de nombre

token
lexema
lexemas (texto caracteres con asociado a cada
del programa) un significado lexema
específico
(componentes
léxicos)

Enunciado Lexemas Tokens


index = 2 * count + 17 index identifier
= equal_sign
2 int_literal
* mult_op
count identifier
+ plus_op
17 int_literal
; semicolon

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 62

Análisis sintáctico
Funciones de un parser
1. Recibir tokens suministrados por el scanner
2. Agrupar tokens
1. de acuerdo a producciones especificadas por la G2
para reconocer frases
2. determinar si son sintácticamente correctas
3. establecer la estructura subyacente
3. Detectar errores sintácticos
4. Generar árboles sintácticos

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 63

Análisis sintáctico
Proceso de análisis
Tokenizado Árbol

Analizador
léxico

Analizador
sintáctico

Reglas de
producción

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 64

Análisis sintáctico
Árboles de sintaxis
Concreta: sirve para el análisis sintáctico
Abstracta: sirve para el análisis semántico
Sea: S if expr then A endif ;

Concreta Abstracta (AST)

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 65

Análisis sintáctico
Analizadores recursivos
cada no-terminal tiene asociada una rutina de análisis,
creada a partir de las reglas gramaticales
scan de izquierda a derecha
Estrategias de análisis
DESCENDENTE(Top-Down)
construye el árbol desde la raíz (S) hacia las hojas
problemas con recursividad a izquierda
ASCENDENTE(Bottom-Up)
construye el árbol desde las hojas hacia la raíz (S)
se basa en encontrar una derivación por la derecha

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 66

Analizador por izquierda (a)


Sea la gramática G = (N, T, S, P) con
N = {A, S}, T = {a, b, c},
P = {S → aAc, A → Ab | λ }
L = {a bn c / n > 0}.
Se quiere reconocer: abbc

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 67

Analizador por izquierda (b)


Sea la gramática G = (N, T, S, P) con
N = {A, S}, T = {a, b, c},
P = {S → aAc, A → λ | Ab}
L = {a bn c / n>=0}.
Se quiere reconocer: abbc

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 68

Problema del retroceso


Sea: G = (N, T, S, P) donde
N = {<PROGRAMA>, <DECLARACIONES>, <PROCEDIMIENTOS> }
T = {module, d, p, ;, end} S = <PROGRAMA>
El conjunto P de reglas de producción es:
<PROGRAMA> ::= module <DECLARACIONES>; <PROCEDIMIENTOS> end
<DECLARACIONES> ::= d | d; <DECLARACIONES>
<PROCEDIMIENTOS> ::= p | p; <PROCEDIMIENTOS>
Análisis aplicando derivaciones Leftmost: module d ; d ; p ; p end

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 69

Gramáticas LL(k) y analizadores


Características de los analizadores LL
Permiten el análisis descendente sin retroceso, usando un
subconjunto de las G2
L = reconocimiento de la cadena de entrada de izquierda a
derecha
L = toman las derivaciones más hacia la izquierda ("Leftmost")
con sólo mirar los k tokens situados a continuación de donde se
halla, donde si k=1 se habla de gramáticas LL(1)
Posibilitan la construcción de analizadores deterministas
descendentes (sólo examinan el símbolo actual de la cadena
de entrada, para saber que producción aplicar)

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 70

Analizador descendente
Sea: {S->xAx, S->λ, A->yAy, A->xBx, B->z}
1 2 3 4 5

Pila Árbol Entrada Regla

xyxxzyx$

xyxxzyx$ 1

x xyxxzyx$

xAx xyxxzyx$ 3

y xyxxzyx$

xyxxzyx$ 4

x xyxxzyx$

xyxxzyx$ 5

z xyxxzyx$

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 71

Gramáticas LR(k) y analizadores


Características de los analizadores LR
Eficiente análisis ascendente sin retroceso
Detectan errores sintácticos rápidamente
L = lee entrada Left-to-right
R = aplican derivaciones Rightmost en sentido inverso
k = número de símbolos de entrada por delante
(lookaheads) que lee el analizador (gramática LR(k))
Pueden construirse para la mayoría de las G2
Complicados de construir

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 72

Analizadores LL y LR
Sea
Producción:
E E+E | E*E | (E) | E | id
Enunciado:
id + id * id
Derivaciones
- por izquierda
- por derecha

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 73

Analizador ascendente
1 2 3 4 5
E E + E | E * E | (E) | E | id
Pila Árbol Entrada Regla

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 74

Analizador ascendente
1 2 3 4 5
E E + E | E * E | (E) | E | id
Pila Árbol Entrada Regla

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 75

Analizador ascendente
1 2 3 4 5
E E + E | E * E | (E) | E | id
Pila Árbol Entrada Regla

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 76

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 77

Fases de análisis
sup = alto*ancho;

análisis léxico

(id,sup)(asignador)(id,alto)(opMult)(id,ancho)(separador)

análisis sintáctico

(asignador)

(id,sup) (opMult)

(id,alto) (id,ancho)
análisis semántico

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 78

Semánticas
La sintaxis es insuficiente para describir lenguajes
int A; léxica y sintácticamente correcto, pero…
¿ cuál es el significado ?
Utilidad de las semánticas
1. Definir “qué deben hacer” los enunciados de un lenguaje
2. Implementar correctamente el lenguaje
3. Desarrollar técnicas y herramientas de
1. Análisis y optimización, depuración, verificación, etc.
4. Ayudar a “razonar sobre el funcionamiento” de los
programas (recursos usados, corrección, …)

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 79

Semántica estática
Se calcula en tiempo de compilación
Ejemplos de aspectos que controla
Correspondencia de la signatura de funciones
Accesos a variables consistentes con su declaración
Que identificadores y expresiones sean evaluables
Que el Left-side sea asignable
Compatibilidad de expresiones y operadores
Accesibilidad de las variables según su alcance
Uso de identificadores únicos

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 80

Semántica dinámica
Ciertos significados se detectan en la ejecución
Punteros con referencias nulas
Valores límites de subíndices de arreglos
Consistencia en el pasaje de argumentos
Otros: x := z / y ¿ qué pasa si y == 0 ?
Errores de “lógica” que cambian la semántica de un enunciado,
NO SON DETECTABLES
x := z / y si lo que se quería escribir era x := z * y
Ejemplo de semántica dinámica en JS
Si z = “45”; entonces z + 5 = 455
Si z = 45; entonces z + 5 = 50

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 81

Especificación de la semántica
Es deseable satisfacer características como:
No ambigüedad: facilitar la creación de descripciones rigurosas
Demostración: permitir la posterior demostración de propiedades de
los programas escritos en el lenguaje especificado
Prototipado: posibilitar obtener prototipos ejecutables de los
lenguajes que se diseñan de forma automática
Modularidad: realizar la especificación de forma incremental
Reusabilidad: facilitar la reutilización de descripciones para diferentes
lenguajes
Legibilidad: ser legibles por personas con formaciones heterogéneas
Flexibilidad: adaptarse a la variedad de lenguajes existentes
Experiencia: ser capaz de describir lenguajes reales, no sólo quellos
sencillos o experimentales

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 82

Técnicas de especificación semántica

No ambigua

Modular

reusable

demostrar

prototipar

legible

flexibñe

experiencia
Semántica

Lenguaje natural S S R S S

Operacional S R R R S S

Denotacional S S R S R

Axiomática R S R S

Algebráica S R S S R R R

De estado abstacto S S R R S R S

De acción S S R R S R R

Monádica modular S S S R S

Monádica reutilizable S S S S S S

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________
Diapositiva 83

Tipos de Errores
SINTAXIS SEMÁNTICA ESTÁTICA SEMÁNTICA DINÁMICA

int main (){ int main (){ int main (){


int pt, qr*; int pt = 1; int pt = 1, qr;
system("pause"); if (pt != 0){ if (pt != 0){
} int qr; int qr = 3;
qr = pt; qr = pt;
int main (){ } }
int pt, qr, cout << qr << endl; cout << qr << endl;
!qr; system("pause"); system("pause");
system("pause"); } }
}
int main (){ int main (){
int main (){ long pt = 9687372626; long pt = 68737262;
int pt, qr; int qr = 1425; int qr = 7425;
¡qr; pt = qr; pt = qr * pt;
system("pause"); cout << pt << endl; cout << pt << endl;
} system("pause"); system("pause");
} }

____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________

Potrebbero piacerti anche