Lenguajes Formales - Unitat de Coordinació …rramirez/Logica/L07.pdf3 Conceptos centrales xy...

Post on 08-Jun-2018

229 views 0 download

Transcript of Lenguajes Formales - Unitat de Coordinació …rramirez/Logica/L07.pdf3 Conceptos centrales xy...

Lenguajes Formales

rafael ramirezrafael@iua.upf.es

Ocata 320

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!!!