Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porRufino Corona Modificado hace 10 años
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 | uL 1, vL 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 | uL 1 } { v | vL 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).
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.