Está en la página 1de 17

Captulo 1: Lenguajes y Gramticas Formales

Teora de Autmatas y Compiladores [ICI-445] Captulo 1: Lenguajes y Gramticas Formales


Dr. Ricardo Soto
[ricardo.soto@ucv.cl] [http://www.inf.ucv.cl/rsoto]

Escuela de Ingeniera Informtica Ponticia Universidad Catlica de Valparaso

Marzo, 2010

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

1/17

Captulo 1: Lenguajes y Gramticas Formales

1. Introduccin
Un autmata es una mquina terica que lee instrucciones en forma de smbolos y cambia de estado segn stas.

a, b q0 a q1 b q2

reas de aplicacin de la teora de autmatas:


Comunicaciones. Teora de Control. Circuitos secuenciales. Recocimiento de Patrones. . . . Compiladores.

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

2/17

Captulo 1: Lenguajes y Gramticas Formales

1. Introduccin
Un compilador es un programa que traduce un programa escrito en un lenguaje a (lenguaje fuente) a un lenguaje b (lenguaje objeto).
Programa Fuente

Analizador Lxico Analizador Sintctico Analizador Semntico Generador Cdigo Intermedio Optimizador Cdigo Intermedio Generador Cdigo Objeto Programa Objeto

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

3/17

Captulo 1: Lenguajes y Gramticas Formales

2. Alfabetos y palabras
Un alfabeto es un conjunto nito y no vaco de elementos llamados smbolos o letras. Una palabra o cadena sobre un alfabeto V es una cadena nita de smbolos del alfabeto.
Notaciones: || denota la longitud de la cadena . denota a una cadena de longitud 0, tambin conocida como palabra vaca. Vn denota al conjunto de todas las palabras de longitud n sobre V V0 denota al conjunto cuyo nico elemento es la palabra vaca, es decir, V0 = {}. V denota al conjunto de todas las cadenas de cualquier longitud sobre V . V + denota al conjunto de todas las cadenas de cualquier longitud sobre V , excepto la vaca. Un elemento de Vn es una cadena del tipo a1 a2 . . . an donde cada ai V .

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

4/17

Captulo 1: Lenguajes y Gramticas Formales

3. Lenguajes Formales

Llamamos lenguaje sobre el alfabeto V a cualquier subconjunto de V . Especicacin de lenguajes:


Extensin (lenguajes nitos) L = {a, aa, aaa} es un lenguaje sobre el alfabeto V = {a} L = {aba, cab, aaabc} es un lenguaje sobre el alfabeto V = {a, b, c} Comprensin (lenguajes innitos) L = {a(bc)n |n >= 1}

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

5/17

Captulo 1: Lenguajes y Gramticas Formales

4. Gramticas Formales

El uso de gramticas es otra forma de describir un lenguaje en forma general y rigurosa.


Deniciones: Una gramtica es una cuadrupla G = (VN , VT , S, P) donde: VT es el alfabeto de smbolos terminales. VN es el alfabeto de smbolos no terminales, de forma que VT VN = , y denotamos con V al alfabeto total de la gramtica, esto es, V = VN VT S es el smbolo inicial y se cumple que S VN P es un conjunto nito de reglas de produccin.

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

6/17

Captulo 1: Lenguajes y Gramticas Formales

4. Gramticas Formales
Deniciones: Una regla de produccin es un par ordenado (, ) de forma que: = 1 A2 , donde:
1 , 2 (VN VT ) A VN

(VN VT ) Una regla de produccin (, ) se suele escribir como Ejemplo Denir una gramtica para el lenguaje L = {a(bc)n |n >= 1}: Solucin: S aB B bcB|bc donde VN = {S, B} y VT = {a, b, c}.

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

7/17

Captulo 1: Lenguajes y Gramticas Formales

Ejercicios

Denir una gramtica para los siguientes lenguajes:


L1 = {an bm |n 4 y m 3}

L2 = {an bn |n > 0}

L3 = {an b2n |n > 0}

L4 = {an bn c m d m |n > 0 y m > 0}

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

8/17

Captulo 1: Lenguajes y Gramticas Formales

4.1 Jerarqua de Chomsky


Noam Chomsky clasic las gramticas en cuatro familias: Tipo 3 (Gramticas regulares).
Lineales por la derecha. Producciones del tipo: A A A B donde A, B VN y VT . Lineales por la izquierda. Producciones del tipo: A A A B donde A, B VN y VT . Los lenguajes generados por estas gramticas se llaman lenguajes regulares (lenguajes de la clase L3 ).

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

9/17

Captulo 1: Lenguajes y Gramticas Formales

4.1 Jerarqua de Chomsky


Tipo 2 (Gramticas libres de contexto).
Producciones del tipo: A donde A VN y (VN VT ) . Los lenguajes generados por estas gramticas se llaman lenguajes libres de contexto (lenguajes de la clase L2 ). La mayora de los lenguajes de programacin pertenecen a esta categora.

Tipo 1 (Gramticas sensibles al contexto).


Producciones del tipo: A S donde A, S VN , , V y V + . Los lenguajes generados por estas gramticas se llaman lenguajes sensibles al contexto (lenguajes de la clase L1 ). La sensibilidad al contexto se puede interpretar en la 1era regla de produccin: A puede ser reemplazada por slo cuando A aparezca en el contexto de y .
Dr. Ricardo Soto Teora de Autmatas y Compiladores 10/17

Captulo 1: Lenguajes y Gramticas Formales

4.1 Jerarqua de Chomsky

Tipo 0 (Gramticas sin restricciones o Gramticas con estructura de frase).


Producciones del tipo: donde (V VN V ) y V Los lenguajes generados por estas gramticas se llaman lenguajes libres de contexto (lenguajes de la clase L0 ).

Clases de lenguajes L3 L2 L1 L0

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

11/17

Captulo 1: Lenguajes y Gramticas Formales

4.2 Notacin BNF (Backus-Naus-Form)

BNF es una metasintaxis utilizada para denir gramticas BFN y sus extensiones son ampliamente utilizadas para denir gramticas de lenguajes de programacin. En BNF, smbolos no terminales se denen entre ngulos ( ) y producciones se denen utilizando el smbolo ::=.

Ejemplos
1. <S> ::= a<B> <B> ::= bc<B>|bc 2. <class-dec> ::= class <identifier> { <class-body> }

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

12/17

Captulo 1: Lenguajes y Gramticas Formales

4.3 Notacin EBNF (Extended BNF)


EBNF introduce el uso de parntesis cuadrados para smbolos opcionales y llaves para repeticiones. El uso de ngulos para smbolos no terminales no es obligatorio. Introduce el uso de comillas en terminales para evitar ambigedad con smbolos reservados de EBNF.

Smbolo opcional
class-dec ::= "class" identifier ["extends" identifier] "{" class-body "}"

Repeticin
number ::= {digit}

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

13/17

Captulo 1: Lenguajes y Gramticas Formales

4.4 Otras convenciones

denota desde cero a n repeticiones + denota desde una a n repeticiones () para agrupaciones

Repeticin
number ::= digit+

Opcin y repeticin
import-dec ::= identifier ("." identifier )* ["." "*"] ";"

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

14/17

Captulo 1: Lenguajes y Gramticas Formales

Ejercicios

Utilize EBNF para construir las siguientes gramticas:


Nmero entero. Nmero real. Letra. Palabra. Direccin Postal.
Ej: Juan Maldonado Perez, 6 norte 1234, Via del Mar, Chile

Una expresin. if-else en Java. for en Java. Clase Java.

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

15/17

Captulo 1: Lenguajes y Gramticas Formales

4.5 Expresiones Regulares

Las expresiones regulares tambin permiten especicar lenguajes regulares. Las expresiones regulares son de gran utilidad en editores de texto y aplicaciones para buscar y manipular textos. En la actualidad existe gran soporte para el uso de expresiones regulares (Perl, PHP, bibliotecas Java, bibliotecas .NET, shell Unix, etc). Similar a EBNF: denota desde cero a n repeticiones + denota desde una a n repeticiones {n} denota n repeticiones {m, n} denota de m a n repeticiones ? denota elemento opcional () para agrupaciones

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

16/17

Captulo 1: Lenguajes y Gramticas Formales

Ejercicios

Dena los siguientes lenguajes mediante expresiones regulares: L1 = {(ab)n |n > 1} L2 = {an bm |n 4 y m 3} Todas las palabras que empiezen con a y terminen con o Todas las palabras que empiezen con a, tengan una s y terminen con o Todas las palabras que tengan entre 5 y 8 letras

Dr. Ricardo Soto

Teora de Autmatas y Compiladores

17/17

También podría gustarte