Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Marzo, 2010
1/17
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
2/17
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
3/17
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 .
4/17
3. Lenguajes Formales
5/17
4. Gramticas Formales
6/17
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}.
7/17
Ejercicios
L2 = {an bn |n > 0}
8/17
9/17
Clases de lenguajes L3 L2 L1 L0
11/17
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> }
12/17
Smbolo opcional
class-dec ::= "class" identifier ["extends" identifier] "{" class-body "}"
Repeticin
number ::= {digit}
13/17
denota desde cero a n repeticiones + denota desde una a n repeticiones () para agrupaciones
Repeticin
number ::= digit+
Opcin y repeticin
import-dec ::= identifier ("." identifier )* ["." "*"] ";"
14/17
Ejercicios
15/17
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
16/17
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
17/17