La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.

Presentaciones similares


Presentación del tema: "Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores."— Transcripción de la presentación:

1 Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores

2 Introducción a la Teoría de Lenguajes Definición: Un alfabeto (o vocabulario) Σ es un conjunto finito de símbolos. Ejemplo: Alfabeto de Pascal: + - * / < …(operadores) ‏ begin end if var(Palabras reservadas) ‏ (Identificadores) ‏ (hileras) ‏ (enteros) ‏ ; :, ( ) [ ](puntuación) ‏ Nota: Todos los identificadores son representados por un símbolo, porque Σ debe ser finito.

3 Definición: Una secuencia t = t 1 t 2 …t n de símbolos de un alfabeto Σ es una hilera. Definición: La longitud de la hilera t = t 1 t 2 …t n (se denota |t|) es n. Si n = 0, la hilera es ε, la hilera vacía. Definición: Dadas las hileras s = s 1 s 2 …s n t = t 1 t 2 …t m, la concatenación de s y t se denota st, y es la hilera s 1 s 2 …s n t 1 t 2 …t m. Introducción a la Teoría de Lenguajes

4 Nota: εu = u = uε, uεv = uv, para hileras cualesquier u,v (incluyendo ε) ‏ Definición: Σ* es el conjunto de todas las hileras de símbolos de Σ. Nota: Σ* es llamada la clausura transitiva y reflexiva de Σ. Σ* está descrito por un grafo (Σ*, ·), donde “·” denota concatenación, y hay un nodo de inicio designado, ε. Introducción a la Teoría de Lenguajes

5 Ejemplo: Σ = {a, b}. (Σ*, ·) Σ* es contablemente infinito: no se puede calcular todo Σ*. Solo se pueden calcular subconjuntos finitos de Σ*. Pero SÍ se puede calcular si una hilera dada pertenece a Σ*. ε a b aa ab ba bb aba abb a b b a a b a b Introducción a la Teoría de Lenguajes

6 Ejemplo: Σ = Vocabulario de Pascal. Σ* = Todos los posibles programas potenciales de Pascal, i.e. todas las posibles entradas al compilador de Pascal. Deseamos especificar L  Σ*, los programas de Pascal correctos. Definición: Un lenguaje L sobre un alfabeto Σ es un subconjunto de Σ*.

7 Introducción a la Teoría de Lenguajes Ejemplo: Σ = {a, b}. L1 = ø es un lenguaje L2 = {ε} es un lenguaje L3 = {a} es un lenguaje L4 = {a, ba, bbab} es un lenguaje L5 = {a n b n / n >= 0} es un lenguaje donde a n = aa…a, n veces L6 = {a, aa, aaa, …} es un lenguaje Nota: L5 es un lenguaje infinito, pero descrito finitamente.

8 Introducción a la Teoría de Lenguajes ESTE ES EL OBJETIVO PRINCIPAL DE LA ESPECIFICACION DE LENGUAJES: Describir (en forma finita) un lenguaje de programación (infinito), y proporcionar un algoritmo de prueba-de-inclusión correspondiente (finito).

9 Constructores de Lenguajes Definición: La concatenación (o producto) de dos lenguajes L 1 y L 2, se denota L 1 L 2, y es el conjunto {uv | uL 1, vL 2 }. Ejemplo: L 1 = {ε, a, bb}, L 2 = {ac, c} L 1 L 2 = {ac, c, aac, ac, bbac, bbc} = {ac, c, aac, bbac, bbc}

10 Definición: L n = LL…L (n veces), y L 0 = {ε}. Ejemplo: L = {a, bb} L 3 = {aaa, aabb, abba, abbbb, bbaa, bbabb, bbbba, bbbbbb} Constructores de Lenguajes

11 Definición: La unión de dos lenguajes L 1 y L 2 es el conjunto L 1 L 2 = {u | uL 1 } { v | vL 2 } Definición: La clausura de Kleene (L*) de un lenguaje es el conjunto L* = U L n, n >0. Ejemplo: L = {a, bb} L* = {cualquier hilera compuesta de a’s y bb’s} Definición: La clausura transitiva(L + ) de un lenguaje L es el conjunto L + = U L n, n > 1. ∩∩ Constructores de Lenguajes

12 Nota: En general, L* = L + U {ε}, pero L + ≠ L* - {ε}. Por ejemplo, considerar L = {ε}. Entonces {ε} = L + ≠ L* – {ε} = {ε} – {ε} = ø. Constructores de Lenguajes

13 Gramáticas Objetivo: Proporcionar un mecanismo finito para la descripción de lenguajes infinitos. Método: Se da un subgrafo (Σ*, → *) de (Σ*, ·), y un nodo inicial S, tal que los nodos accesibles (desde S) son las hileras en el lenguaje.

14 Gramáticas Ejemplo: Σ = {a, b} L = {a n b n / n > 0} ε a b aa ab ba bb aab aaa bbb bba aaba bbaa bbab aabb b a b a b a a b b b a a a b

15 Gramáticas Definición: “=>” (deriva) es una relación definida por un conjunto finito de reglas de re-escritura conocidas como producciones. Definición: Dado un vocabulario V, una producción es un par (u, v)  V* x V*, denotado u → v. u es llamada la parte-izquierda; v es llamada la parte-derecha.

16 Gramáticas Ejemplo: Pseudo-Inglés. V = {Sentence, NP, VP, Adj, N, V, boy, girl, the, tall, jealous, hit, bit} Sentence → NP VP (una producción) ‏ NP → N NP → Adj NP N → boy N → girl Adj → the Adj → tall Adj → jealous VP → V NP V → hit V → bit Nota: El inglés es demasiado complicado para ser descrito de esta manera.

17 Gramáticas Definición: Dado un conjunto finito de producciones P  V* x V*, se define la relación “=>” tal que para todo , β, u, v  V*, uβ => vβ sii (u,v)  P es una producción. Ejemplo: Sentence → NP VPAdj → the NP → NAdj → tall NP → Adj NPAdj → jealous N → boyVP → V NP N → girlV → hit V → bit

18 Gramáticas Sentence=> NP VP => Adj NP VP => the NP VP => the Adj NP VP => the jealous NP VP => the jealous N VP => the jealous girl VP => the jealous girl V NP => the jealous girl hit NP => the jealous girl hit Adj NP => the jealous girl hit the NP => the jealous girl hit the N => the jealous girl hit the boy

19 Gramáticas Definición: Una gramática es una tupla de 4 elementos, G = (Φ, Σ, P, S), donde Φ es un conjunto de no-terminales, Σ es un conjunto de terminales, V = Φ U Σ es el vocabulario de la gramática, S  Φ es el símbolo de inicio (o meta), y P  V* x V* es un conjunto finito de producciones. Ejemplo: Gramática para {a n b n / n > 0}: G = (Φ, Σ, P, S), donde Φ = {S}, Σ = {a, b}, y P = {S → aSb, S → ε}

20 Gramáticas Derivaciones: S => aSb => aaSbb => aaaSbbb => aaaaSbbbb → … ε ab aabb aaabbb aaaabbbb Nota: Normalmente, las gramáticas son dadas por un simple listado de las producciones. =>

21 Convenciones gramaticales c onvención del TWS 1.Letra mayúscula (identificador) – nonterminal 2.Letra minúscula(hilera) – terminal 3.Letra griega minúscula– hileras en V* 4.La parte izquierda de la primera producción se considera el símbolo de inicio, ej. S → aSb S → ε 1.La parte izquierda se omite si es la misma que para la producción anterior, ej. S → aSb → ε

22 Gramáticas Ejemplo: Gramática para identificadores. Identificador → Letra → Identificador Letra → Identificador Dígito Letra → ‘a’ → ‘A’ → ‘b’ → ‘B’. → ‘z’ → ‘Z’ Dígito → ‘0’ → ‘1’. → ‘9’

23 Gramáticas Definición: El lenguaje generado por la gramática G, es el conjunto L(G) = {  Σ* | S =>*  } Definición: Una forma sentencial generada por una gramática G es cualquier hilera tal que S =>* . Definición: Una sentencia generada por una gramática G es cualquier forma sentencial  tal que   Σ*.

24 Gramáticas Ejemplo: formas sentenciales S => aSb => aaSbb => aaaSbbb => aaaaSbbbb > … ε ab aabb aaabbb aaaabbbb Lemma: L(G) = { | es una sentencia} Prueba: Trivial. => sentencias

25 Gramáticas Ejemplo: A → aABC → aBC aB → ab B se reemplaza con b, pero bB → bb solamente en el contexto bC → bc de tener a ó b a la izquierda CB → BC cC → cc

26 Gramáticas Derivación: A=> aABC=> aaABCBC=> … aBC aaBCBC aaaBCBCBC abC aabCBC aaaBBCBCC abc aabBCC aaaBBBCCC aabbCC aaabBBCCC (2) ‏ aabbcC aaabbbCCC aabbcc aaabbbcCC (2) ‏ aaabbbccc L (G) = {a n b n c n | n > 1} sensible al contexto => A → aABC → aBC aB → ab bB → bb bC → bc CB → BC cC → cc

27 La Jerarquía de Chomsky Una jerarquía de gramáticas, de los lenguajes que generan, y de las máquinas que aceptan esos lenguajes.

28 La Jerarquía de Chomsky TipoNombre del Lenguaje Nombre de la Gramática Restricciones sobre la Gramática Máquina Aceptadora 0Recursivamente Enumerable Sistema de re-escritura sin restricciones NingunaMáquina de Turing 1Lenguaje sensible al contexto Gramática sensible al contexto Para todo  → , |  |≤|  | Máquina Acotada Lineal 2Lenguaje libre de contexto Gramática libre de contexto Para todo  → , Φ. Autómata de pila (parser) 3Lenguaje RegularGramática Regular Para todo  → , Φ,  U Φ U {  } Autómata de Estado Finito (lexer)

29 Jerarquía del Chomsky 3: Lenguajes Regulares {a n | n > 0} 2: Lenguajes Libres de Contexto 1: Lenguajes Sensibles al Contexto {a n b n | n>0} {a n b n c n | n>0} 0: Lenguajes Recursivamente Enumerables ¿ Lenguaje natural ? Trataremos con los lenguajes de tipo 2 (sintaxis) y los de tipo 3 (léxico).


Descargar ppt "Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores."

Presentaciones similares


Anuncios Google