1 / 29

Introducción a la Teoría de Lenguajes

Introducción a la Teoría de Lenguajes. Programming Language Translators. Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida. Introducción a la Teoría de Lenguajes. Definición: Un alfabeto (o vocabulario) Σ es un a conjunto finito de símbolos.

corine
Download Presentation

Introducción a la Teoría de Lenguajes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introducción a la Teoría de Lenguajes Programming Language Translators Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida

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

  3. Introducción a la Teoría de Lenguajes Definición: Una secuencia t = t1t2…tn de símbolos de un alfabeto Σ es una cadena. Definición: La longitud de la cadena t = t1t2…tn (se denota |t|) es n. Si n = 0, la cadena es ε, la cadena está vacia. Definición: Dada las cadenas s = s1s2…sn t = t1t2…tm, la concatenación de s y t, se denota st, y la cadena es s1s2…snt1t2…tm.

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

  5. Introducción a la Teoría de Lenguajes Ejemplo: Σ = {a, b}. (Σ*, ·) Σ* es contablemente infinito, es decir no puede operar todo de Σ*, y puede solo operar subconjuntos finitos de Σ*, pero puede operar si una cadena dada está en Σ*. aa a a aba b a a ab b abb ε b ba a b b bb

  6. Introducción a la Teoría de Lenguajes • Ejemplo: Σ = Vocabulario de Pascal. • Σ* = Todos los posibles programas mencionados de Pascal, i.e. todas las posibles entradas al compilador de Pascal. • Se necesita 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 = {anbn / n >= 0} es un lenguaje • donde an = aa…a, n veces • L6 = {a, aa, aaa, …} es un lenguaje • Nota: L5 es un lenguaje infinito, pero descritofinitamente.

  8. Introducción a la Teoría de Lenguajes • ESTE ES EL OBJETIVO PRINCIPAL DE LA ESPECIFICACION DEL LENGUAJE: • Describir (infinite) los lenguajes de programación finitos, y proporcionar los algoritmos inclusion-test finitos correspondientes.

  9. Language Constructors Definición: El encadenamiento(o producto) de dos lenguajes L1 y L2, se denota L1L2, es un conjunto. {uv | uL1, vL2}. Ejemplo: L1 = {ε, a, bb}, L2 = {ac, c} L1L2 = {ac, c, aac, ac, bbac, bbc} = {ac, c, aac, bbac, bbc}

  10. Language Constructors Definición: Ln = LL…L (n veces), y L0 = {ε}. Ejemplo: L = {a, bb} L3 = {aaa, aabb, abba, abbbb, bbaa, bbabb, bbbba, bbbbbb}

  11. Language Constructors Definición: La unión de dos lenguajes L1 y L2 es el conjunto L1 L2 = {u | uL1} { v | vL2} Definición: La clausura de Kleene (L*) de un lenguaje es el conjunto L* = U Ln, n >0. Ejemplo: L = {a, bb} L* = {cualquier cadena compuesta de a’s y b’s} Definición: La clausula transitiva(L+) de un lenguaje L es el conjunto L+ = U Ln, n > 1. ∩ ∩ ** La clausura de Kleene también llamada estrella Kleene o cierre estrella.

  12. Language Constructors Nota: En general, L* = L+ U {ε}, pero L+≠ L* - {ε}. Por Ejemplo, considerar L = {ε}. Entonces {ε} = L+≠ L* – {ε} = {ε} – {ε} = ø.

  13. Gramática • Objetivo: Proporcionar un significado para la descripcion de lenguajes finitos. • Método: Proporcionar un subgrafo (Σ*, →*) de (Σ*, ·), y un nodo inicial S, tal que el conjunto de nodos accesibles (de S) son las cadenas en el lenguaje.

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

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

  16. Gramática Ejemplo: Pseudo-English. V = {Sentence, NP, VP, Adj, N, V, boy, girl, the, tall, jealous, hit, bit} Sentence → NP VP (one production)‏ NP → N NP → Adj NP N → boy N → girl Adj → the Adj → tall Adj → jealous VP → V NP V → hit V → bit Nota: El ingles es mucho mas complicado para ser descrito de esta manera.

  17. Gramática Definición: Dado un conjunto finito de producciones P  V* x V* la relación => es definido tal que , β, u, v  V* , uβ => vβ iff u → v  P es una produccion. Ejemplo: Sentence → NP VP Adj → the NP → N Adj → tall NP → Adj NP Adj → jealous N → boy VP → V NP N → girl V → hit V → bit

  18. Gramática 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ática Definición: Una gramatica es una tupla de 4 elementos,G = (Φ, Σ, P, S) donde Φ es un conjunto de no terminales, Σ es un conjunto de terminales, V = Φ U Σ es la gramática del vocabulario, S  Φ es llamado el inicio o el “goal symbol”, y P  V* x V* es un conjunto finito de producciones. Ejemplo: Gramática para {anbn / n > 0}. G = (Φ, Σ, P, S), donde Φ = {S}, Σ = {a, b}, y P = {S → aSb, S → ε}

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

  21. Convenciones gramáticales TWS convention Letra mayúscula (identificador) – nonterminal Letra minúscula(cadena) – terminal Letra griega minúscula– cadenas en V* Parte izquierda de la primera produccion es considerada para ser el simbolo de inicio, ej. S → aSb S → ε Parte izquierda omitida si es lo mismo para la produccion anterior, ej. S → aSb → ε

  22. Gramática 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ática Definición: The language generated by a grammar G, is the set L(G) = { Σ* | S =>* } Definición: A sentential form generated by a grammar G is any string α such that S =>* . Definición: A sentence generated by a grammar G is any sentential form  such that  Σ*.

  24. Gramática Ejemplo: sentential forms S => aSb => aaSbb => aaaSbbb => aaaaSbbbb > … ε ab aabb aaabbb aaaabbbb Lemma: L(G) = { | is a sentence} Proof: Trivial. => => => => => sentences

  25. Gramática Ejemplo: A → aABC → aBC aB → ab bB → bb bC → bc CB → BC cC → cc

  26. Gramática Derivaciones: A => aABC => aaABCBC => … aBC aaBCBC aaaBCBCBC abC aabCBC aaaBBCBCC abc aabBCC aaaBBBCCC aabbCC aaabBBCCC (2)‏ aabbcC aaabbbCCC aabbcc aaabbbcCC (2)‏ aaabbbccc L (G) = {anbncn | n > 1} => => => => => => => => => => => => => => => =>

  27. Jerarquía de Chomsky Es una jerarquia de gramaticas, contiene los lenguajes que generan y las maquinas que aceptan esos lenguajes.

  28. La Jerarquía de Chomsky

  29. Jerarquía del Lenguaje 0: Recursively Enumerable Languages 1: Context-Sensitive Languages We will deal with type 2 (syntax) and type 3 (lexicon) languages. 2: Context-free Languages 3: Regular Languages {an | n > 0} {anbn | n>0} {anbncn | n>0} English?

More Related