Lenguajes Formales - Unitat de Coordinació …rramirez/Logica/L07.pdf3 Conceptos centrales xy...
Transcript of Lenguajes Formales - Unitat de Coordinació …rramirez/Logica/L07.pdf3 Conceptos centrales xy...
2
Conceptos centralesUn alfabeto es un conjunto (finito y no vacio) de símbolos.
Σ={0,1}Σ={a,b,…,z}
Una cadena (a veces llamada palabra) es una sequencia (finita) de símbolos de algun alfabeto.
01101 es una cadena del alfabeto Σ={0,1}
La cadena vacia є es la cadena con cero símbolos
La longitud de una cadena es el número de símbolos que contiene| 01101 | = 5| є | = 0
La potencia k de un alfabeto es el conjunto de cadenas con longitud ksi Σ={0,1}, Σ1 ={0,1}, Σ2 ={00,01,10,11}
El conjunto de todas las cadenas sobre un alfabeto se denota Σ*
3
Conceptos centralesxy denota la concatenacion de las cadenas x e y
si x=barce, y=lona entonces xy=barcelona
Un lenguaje es un conjunto de cadenas escogidasde algun Σ*
el conjunto de cadenas con mismo numero de 0s que de 1s= {є,01,10,0011,0101,1001,…}= {w | w consiste de el mismo numero de 0s que de 1s}
4
Gramáticas formalesUna gramática formal consiste en:
Un alfabeto ΣUn conjunto de símbolos terminales T ⊆ ΣUn conjunto de reglas de produccionUn símbolo inicial
El lenguaje generado por una gramática G (que se denota porL(G) ) es el conjunto de cadenas sobre Σ que puede ser producido por las reglas de produccion empezado con el simbolo inicial.A Σ − T se le llama el conjunto de simbolos no terminales
5
Ejemplo 1
Alfabeto: Σ = {0,1,S}
Conjunto de simbolos terminales: T = {0,1}(conjunto de simbolos no terminales: Σ − T = {S} )
Reglas de produccion: S → єS → 0S1
Simbolo inicial: S
Que lenguaje L(G) genera esta gramatica G?
6
Ejemplo 2
Alfabeto:Σ = conjunto de palabras en español y algunos simbolos no terminalesΣ = {el, la, niño, niña, corre, come, tarta, Oracion, Sujeto, Predicado, Verbo, Articulo, Sustantivo}
Conjunto de simbolos terminales:T = {el, la, niño, niña, corre, come, tarta}
Reglas de produccion: Oracion→ Sujeto PredicadoSujeto → Articulo SustantivoPredicado → Verbo Articulo SustantivoVerbo → corre | comeArticulo → el | laSustantivo → niño | niña | tarta
Simbolo inicial: Oracion
7
Ejemplo 2
Operador de remplazo ⇒ : remplaza cualquier no terminal en el lado izquierdo de cualquier produccion por el lado derecho de la produccion
Oracion ⇒ Sujeto Predicado Regla 1⇒ Articulo Sustantivo Predicado Regla 2⇒ el Sustantivo Predicado Regla 5... ⇒ el niño come la tarta
A partir de Oracion tambien podemos derivar⇒ el pastel come el niñoLa sintaxis no implica semantica correcta
8
Derivaciones
Una derivacion es una secuencia de formas sentenciales empezando con el símbolo inicial.
Gramatica: B → 0B | 1B | 0 | 1Derivacion: B ⇒ 0B ⇒ 01B ⇒ 010Cada paso de derivation es la aplicacion de una reglade produccion.
9
Arboles de parseUn arbol de parse es una estructurasintactica herárquicaLos nodos internos denotan noterminalesLas hojas (nodos externos) denotanterminales.
Gramatica: B → 0B | 1B | 0 | 1Derivacion: B ⇒ 0B ⇒ 01B ⇒ 010A partir de la derivacion podemosobtener el arbol de parse.
10
Derivaciones – arbol de parseLas derivaciones no necesariamenteson unicas
S → SS | (S) | ()S ⇒ SS ⇒(S)S ⇒(())S ⇒(())()S ⇒ SS ⇒ S() ⇒(S)() ⇒(())()
En este caso tenemos diferentesderivaciones pero obtenemos el mismo arbol de parse
11
Derivaciones – arbol de parsePero a partir de algunas gramaticas podemos obtener 2 arboles de parsediferentes para la misma cadena: ()()().
Cada arbol de parse corresponde a una unica derivacion:S ⇒ SS ⇒ SSS ⇒()SS ⇒()()S ⇒()()()
Una gramatica es ambigua si alguna cadena tiene 2 arboles de parse distintos.Para entender la semantica de un lenguaje nos gustaria tener gramaticasno ambiguas
12
PreguntaEs esta gramática ambigua? (intenta construir dos arboles de parse diferentes para una misma cadena)
E → E + EE → E * EE → NN → 1 | 2 | 3 | 4
13
Respuesta: considera la cadena 2 + 3 * 4
E → E + EE → E * EE → NN → 1 | 2 | 3 | 4
EE
E
+
N *NN
2 3 4
EE
I+ II
23 4
E+ *
14
Para desambiguarla(Caso 1) + con precedencia sobre *
E → E2 | E2 * EE2 → N | N + E2
1+2*3
<expr>
<expr2> * <expr>
<num> + <expr2>
<num>1
2
<expr2>
<num>
3(1+2)*3
15
Herarquía de Chomsky
Gramaticas Regulares: (tipo 3)subclase de las que hemos estado viendo (tipo 2)
Las reglas estan restringidas a: A → t N | t donde: N = no terminal, t = terminalEjemplo: B → 0 B | 1 B | 0 | 1
Gramaticas libres de contexto: (tipo 2)Las que hemos estado viendo
Las reglas estan restringidas a: A → αdonde: α = cadena de 0 o mas terminales y no terminalesEjemplo: S → SS | (S) | ()
16
Herarquía de Chomsky (cont)
Gramaticas sensibles al contexto: (tipo 1)
Reglas: α → β donde | α | ≤ | β | e.d. long. de α ≤ long. de β,
Gramaticas irrestringidas: (tipo 0)
Reglas: α → β. Sin restricciones en α y β.
17
GrammarV = {…}
Σ = {…}
R = {…}
S = {…}
Cadena19a0c6duw
Tree
DERIVACION
Tree
PARSING
18
Top Down parsingGramática
N → Int | Real
Int → Digit | Digit Int
Real → Int-part . FractionInt-part → Digit | Int-part DigitFraction → Digit | Digit FractionDigit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Es “12.34” aceptado por la gramática con N como símboloinicial?
Top-Down Parse => <num>=> <int> (Try first choice)=> <digit> (Try first choice)=> 1 (Backtrack : “2.34” not parsed)
19
Top Down parsingGramática
N → Int | Real
Int → Digit | Digit Int
Real → Int-part . FractionInt-part → Digit | Int-part DigitFraction → Digit | Digit FractionDigit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Es “12.34” aceptado por la gramática con N como símboloinicial?
Top-Down Parse => <num>=> <int> (Try first choice)=> <digit><int> (Try second choice)=> 1<int>=> 1<digit> (Try first choice)=> 12 (Backtrack: “.34” not parsed)
20
Top Down parsingGramática
N → Int | Real
Int → Digit | Digit Int
Real → Int-part . FractionInt-part → Digit | Int-part DigitFraction → Digit | Digit FractionDigit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Es “12.34” aceptado por la gramática con N como símboloinicial?
Top-Down Parse => <num>=> <real> (Try second choice)=> <int-part>.<fraction>=> …=> 12.34 (success!)
21
Bottom-up parsingGramática
N → Int | Real
Int → Digit | Digit Int
Real → Int-part . FractionInt-part → Digit | Int-part DigitFraction → Digit | Digit FractionDigit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Es “12.34” aceptado por la gramática con N como símboloinicial?
Bottom-Up Parse => 12.34=> <digit>2.34=> <int>2.34=> <num>2.34 (Backtrack)
22
Bottom-up parsingGramática
N → Int | Real
Int → Digit | Digit Int
Real → Int-part . FractionInt-part → Digit | Int-part DigitFraction → Digit | Digit FractionDigit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Es “12.34” aceptado por la gramática con N como símboloinicial?
Bottom-Up Parse => 12.34=> <digit>2.34=> <digit><digit>.34=> <digit><int>.34=> <int>.34=> <num>.34 (Backtrack)
23
Bottom-up parsingGramática
N → Int | Real
Int → Digit | Digit Int
Real → Int-part . FractionInt-part → Digit | Int-part DigitFraction → Digit | Digit FractionDigit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Es “12.34” aceptado por la gramática con N como símboloinicial?
Bottom-Up Parse => 12.34=> …=> <int-part>.34=> …=> <int-part>.<fraction>=> <real>=> <num> (Success!)
24
Automatas
Automata Finito
Una manera importante de describir los simples pero muy utiles lenguajes regulares
• Un grafo con un numero finito nodos, llamados estados• Los arcos estan etiquetados con uno o mas símbolos de algun alfabeto• Un estado es designado el estado inicial• Algunos estados son finales
El lenguaje del AF es el conjunto de cadenas que contienen los simbolosque en los arcos en un camino desde el estado inicial a algun estado final.
25
Automatas: ejemplo
inicio h o l aholah ho hol
26
Automata Finito (formal)
Un automata finito M consiste en:
1. un conjunto finito QM de simbolos (los elementos de QM se llamanlos estados de M);
2. un elemento sM de QM (sM se llama estado inicial de M);
3. un subconjunt AM de QM (los elementos de AM se llaman estados finales o “accepting states” de M);
4. a subconjunto finito TM de { (q, x, r) | q, r en QM y x es una cadena} (los elementos de TM se llaman transiciones de M).
27
Automata Finito
Ejemplo
1. QM = {A,B,C};
2. sM = A;
3. AM = {A,C};
4. TM = {(A, 1,A), (B, 11,B), (C, 111, C), (A, 0,B), (A, 2,B),(A, 0, C), (A, 2, C), (B, 0, C), (B, 2, C)}.
28
Definicion: autómata
Un autómata finito consiste en:
Un conjunto finito de estados
Un estado inicial
Un conjunto de estados finales
Una funcion de transicion
29
Automata FinitoEjemplo
1. QM = {A,B,C};2. sM = A;3. AM = {A,C};4. TM = {(A, 1,A), (B, 11,B), (C, 111, C), (A, 0,B), (A, 2,B),
(A, 0, C), (A, 2, C), (B, 0, C), (B, 2, C)}.
Dibuja la representacion grafica de M
30
Automata FinitoEjemplo
1. QM = {A,B,C};2. sM = A;3. AM = {A,C};4. TM = {(A, 1,A), (B, 11,B), (C, 111, C), (A, 0,B), (A, 2,B),
(A, 0, C), (A, 2, C), (B, 0, C), (B, 2, C)}.
31
Automata Finito
Los automatas finitos pueden ser determinaistas o nodeterministicas.
toman cadenas como entradas.
Cuando un automata ejecuta con una entrada dada, empieza en su estado inicial.
32
Automata Finito
Si, despues de un numero de pasos, el automata1. esta en un estado p, 2. la entrada restante empieza con x, y3. hay una transicion (p, x, q) en el automata,
Entonces el automata puede leer x de su entrada y cambiar al estado q.
Si (p, z, r) es una transicion del automata, y la entrada restante empieza con z, entonces se podria consumir zy cambiar al estado r, etc.
33
Automata Finito
Si al menos una sequencia de ejecucion consume toda la entrada y llega un estado final, se dice que la entrada es aceptada por el automata. De lo contrario se dice que es rechazada.
El significado del automata es el lenguaje que consiste en todas las cadenas que acepta.
34
Lenguaje de un autómataEl lenguaje de un autómata finito (AF) es el conjunto de cadenasque el AF acepta:Cual es el lenguage del siguiente automata?
inicio 0q0 q2q1
101
35
Lenguaje de un autómataEl lenguaje de un autómata finito (AF) es el conjunto de cadenasque el AF acepta:Ej. Considera el siguiente lenguaje:L= { w | w es de la forma XY para algunas cadenas X e Y tal que X consiste en un numero impar de 0´s e Y cualquier numero de 1´s} L es el lenguaje del siguiente autómata:
inicio 0q0 q2q1
101
36
Autómata finito nodeterminista
Permite a un AF (determinista) tener cero o mas estadossiguientes para un par estado-simbolo.Herramienta importante para diseñar procesadores de lenguajes, p.e. analizadores lexicos.Pero son imaginarios en el sentido de que tienen que ser implementados deterministamente.
Ejemplo: AFN que acepta cadenasde simbols en {1,2,3} tales que el ultimo simbolo ya ha aparecidoantes en la cadena.
37
Ejemplo
Cual es el lenguage del automata?
38
Ejemplo
Cual es el lenguage del automata?
39
Ejemplo
Cual es el lenguage del automata?
Ejercicio: el languaje de todas las cadenas sobre {a,b}
Con un numer par de a’s (encuentra el autómata).
40
Ejemplo
Que cadena no esta en el lenguaje del automata?Cual es el lenguage del automata?
Kleene’s Thm: Un lenguaje L sobre Σ es regular ssi
existe un automata finito que acepta L.
Pushdown Automata
42
Generators vs. Recognizers
For Regular Languages:regular expressions are generatorsFAs are recognizers
For Context-free LanguagesCFGs are generatorsPushdown Automata (PDAs) are recognizers
43
PDA vs. FA
Add a stackEach transition can specify optional push and pop operations
using an independent alphabetuse Λ (or e) to ignore stack operations
a,e/A means with input ‘a’, pop nothing, push an ‘A’
Usually require an empty stack to accept
in addition to being in an “accept” state
44
Example: anbn
X- +
+ Y
a,e/A a,e/A
b, A/e
b, A/e
45
Example: anbn
Every input ‘a’ pushes a ‘A’ on the stackEvery input ‘b’ pops an ‘A’ off the stack
if any other character appears, reject
At end of input, the stack should be empty
else the count was off, and we should reject
46
Example: PalindromeX
Accepts strings of the form wcwR
Pops the first half onto the stackmiddle delimiter to know when to start comparing in reverse
47
Palindrome
- +
a,e/a
b,e/b
c,e/e
a,a/e
b,b/e
48
Example: EvenPalindrome
- +
a,e/a
b,e/b
e,e/e
a,a/e
b,b/e
No delimiter
49
Non-determinism
Can have e-movesCan have multiple moves for the same inputAs long as an acceptable path exists, the machine accepts the input
50
CFG => PDA
Has two states:start, accepting
Have an empty move from the startstate to the accepting state that pushes the start non-terminalCycle on the accepting state:
empty moves that replace variables with each of their rulesmoves that consume each terminal
51
CFG => PDA ExampleS => e | (S) | SS
- +e,e/S
e,S/(S) e,S/SS
e,S/e),)/e(,(/e
52
Derive (())
Using CFG (do a leftmost-derivation):S => (S) =>((S)) => (())
PDA (non-deterministically)do by hand, showing stack at each step
53
A DPDA for (…)
- +(,e/R ),R/e
Exercise: accept (( )( ))
54
CFG vs. PDA
Any CFG can be represented by a PDAsome CFGs require non-determinism
unlike NFA’s => FAs => regular expressions
i.e., the languages accepted by DPDAsform a subset of those accepted by NPDAs
Any PDA has a corresponding CFGLots of work to find!!!