Está en la página 1de 37

Lenguajes y Autmatas I

Ing. Ricardo Ziga Hdez.

Unidad I
Introduccin a la teora de
los lenguajes formales

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Qu es un alfabeto?
Un alfabeto es un conjunto finito no vaco de elementos los cuales
son llamados smbolos. Denotamos un alfabeto arbitrario con la
letra .

Qu es un smbolo?
Es una entidad abstracta que no se puede definir, ya que se
dejara como una axioma, igual que se define un punto en la
geometra. Normalmente los smbolos son letras (a, b, c,. z),
dgitos (0,1,9 o caracteres (+, -, *, /,>,< ..); los smbolos
pueden estar formados por varias letras o caracteres.
Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

El alfabeto es un conjunto de letras (caracteres o grafemas) con un


determinado orden, de un sistema de escritura, cada una representa
aproximadamente un fonema (consonante o vocal).

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Qu es una cadena?
Es un conjunto de smbolos o palabra sobre un alfabeto ;
admitimos la existencia de una nica cadena que no tiene
smbolos, la cual se denomina cadena vaca y se denota con ; la
cadena vaca desempea, en la teora de lenguajes formales, un
papel similar al que desempea el conjunto vaco en la teora
de conjuntos.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Longitud de una cadena


Esta se da por el nmero de smbolos que contiene.
La notacin empleada es la que se indica en el ejemplo:
I abcb I = 4,
I a + 2*b I = 5
I 000111 I = 6
I if a > b then a = b; I = 9

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Cadena vaca
Una cadena vaca es la nica cadena de caracteres de tamao
cero. Y la podemos denotar usualmente con letras o (Griegas).

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Concatenacin de cadenas
La concatenacin de dos cadenas u y v, escrita uv, es "pegar" las
dos cadenas para formar una nueva.
Ejemplo:
Sea: u = ab
v = ca
w = bb.
Entonces: uv = abca
vw = cabb
(uv) w = abcabb
u(vw) = abcabb
El resultado de la concatenacin de u, v y w es independiente del
orden en que las operaciones son ejecutadas. Matemticamente
esta propiedad es conocida como asociatividad.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Formacin de alfabetos
Teniendo los siguientes smbolos, se puede generar los siguientes
alfabetos:
1.- = {0 , 1}
Alfabeto binario
2.- = {a, b, c, z}
El conjunto de todas las letras minsculas
3.- El conjunto de todos los caracteres ASCII

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Formacin de cadenas
Ejemplo: si = {0, 1}, entonces
1 = {0 , 1}
2 = {00, 01, 10, 11}
3 = {000, 001, 010, 011, 100, 101, 110, 111}
Ejemplo de cadena vaca:
0 = {}, independientemente de cual sea el alfabeto , es decir,
es la nica cadena cuya longitud es 0.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Lenguajes
Es un conjunto de cadenas, todas seleccionadas de un *.
donde es un determinado alfabeto se denomina lenguaje.
Los lenguajes habituales pueden interpretarse como conjuntos
de cadenas. Un ejemplo es el lenguaje ingls, donde la
coleccin de las palabras correctas inglesas es un conjunto de
cadenas del alfabeto que consta de todas las letras. Otro
ejemplo es el lenguaje C o cualquier otro lenguaje de
programacin, donde los programas correctos son un
subconjunto de las posibles cadenas que pueden formarse a
partir del alfabeto del lenguaje.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Ejemplos de lenguajes
1.- Un lenguaje de todas las cadenas que consta de n ceros
seguidos de n unos para cualquier n>=0; {,01,0011,000111,}
2.- El conjunto de cadenas formadas por el mismo nmero de
ceros que unos: {, 01, 10, 0011, 0101, 1001, }
3.- El conjunto de nmeros binarios cuyo valor es un nmero
primo: {,10,11,101,111,1011,}
4.- * es un lenguaje para cualquier alfabeto
5.- 0, el lenguaje vaco, es un lenguaje de cualquier alfabeto.
Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Tipos de lenguajes
Lenguaje natural
El ser humano est relacionado con el concepto tradicional de
gramtica que, de esta forma intuitiva, puede considerar un
conjunto de reglas las cuales indican qu es correcto y qu no lo es
del lenguaje natural. Con este fin se puede acercar a la definicin
ms clara y formal de la lengua que se utiliza.
Ejemplo: El lenguaje espaol.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Tipos de lenguajes
Lenguaje artificial / Computacional
Declarativos
Son fundamentalmente lenguajes de rdenes, dominados por
sentencias que expresan lo que hay que hacer en vez de cmo hacerlo.

Alto nivel
Son los ms utilizados como lenguajes de programacin, permiten que
los algoritmos se expresen en un nivel y estilo de escritura fcilmente legible
y comprensible por otros programadores.

Ensamblador
Es el programa en que se realiza la traccin de un programa escrito en
ensamblador y lo pasa a lenguaje mquina. Directa o no directa la
traduccin en que las instrucciones no son ms que instrucciones que
ejecuta la computadora.

Mquina
Es como la mquina interpreta lo que nosotros queremos hacer, es la
lectura de 0 y 1.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Tipos de lenguajes
Lenguaje regular.
Llamamos as a los lenguajes porque sus palabras contienen
"regularidades" o repeticiones de los mismos componentes, por
ejemplo en este lenguaje L1 = { ab, abab, ababab, abababab,...}
En este ejemplo se aprecia que las palabras de L1 son solo
repeticiones de "ab" donde se repiten varias veces. Su regularidad
consiste en las palabras que contienen "ab" varias veces.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Herramientas computacionales
ligadas con los lenguajes
Muchas herramientas computacionales que manipulan programas
fuente realizan primero algn tipo de anlisis, segn sean las
caractersticas del lenguaje que se estudia. A continuacin se
vern algunas de esas herramientas, aclarando que existe una
gran diversidad de stas.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Editor de estructuras
Esta herramienta no solo realiza las funciones de
creacin y modificacin de textos de un editor de textos
ordinario, sino que tambin analiza el texto del
programa, imponiendo al programa fuente una
estructura jerrquica apropiada.
De esta manera, el editor de estructuras puede realizar
tareas adicionales tiles para la preparacin de
programas.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Impresoras estticas
Una impresora esttica analiza un programa y lo
imprime de forma que la estructura del programa
resulte claramente visible.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Traductor
Se define a un traductor como un programa que traduce o convierte
desde un texto o programa escrito en un lenguaje fuente hasta un
texto o programa equivalente escrito en un lenguaje destino
produciendo, si cabe, mensajes de error.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Un traductor divide su labor en dos etapas: una que analiza la


entrada y genera estructuras intermedias y otras que sintetiza la
salida a partir de dichas estructuras.
Bsicamente los objetivos de la etapa de anlisis son:
a) Controlar la correccin del programa fuente.
b) Generar las estructuras necesarias para comenzar la etapa de
sntesis.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Tipos de traductores
Desde los orgenes de la computacin, ha existido un abismo
entre la forma en que las personas expresan sus necesidades y la
forma en que un ordenador es capaz de interpretar instrucciones.
1.- Traductores del idioma.
Traducen de un idioma dado a otro, como por ejemplo del ingls
al espaol. Este tipo de traductores posee multitud de problemas.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Tipos de traductores
2.- Compiladores.
Es aquel traductor que tiene como entrada una sentencia en
lenguaje formal y como salida tiene un archivo ejecutable, es
decir, realiza una traduccin de un cdigo de alto nivel a cdigo
mquina (tambin se entiende por compilador aquel programa
que proporciona un archivo objeto en lugar del ejecutable final).

Programa fuente

Compilador

Cdigo objeto

Error de sintaxis
Editar y corregir

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Intrpretes
Es como un compilador, solo que la salida es una ejecucin. El
programa de entrada se reconoce y ejecuta a la vez. No se
produce un resultado fsico (cdigo mquina) sino lgico (una
ejecucin).

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Ventajas de los intrpretes


Flexibilidad
Permite realizar acciones complejas, imposibles o muy difciles
con un compilador.
Facilidad de depuracin de programas.
La interpretacin puede interrumpirse en cualquier momento
para examinar o modificar los valores de las variables o la
situacin en la ejecucin.
Rapidez en el desarrollo.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Desventajas de los intrpretes


Velocidad.
Usualmente un orden de magnitud menor que la de un programa
compilado.
Tamao del programa objeto.
Exige aadir el intrprete al programa propiamente dicho.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Intrprete de comandos
Traduce sentencias simples a invocaciones a programas de una
biblioteca. Se utilizan especialmente en los sistemas operativos (la
Shell de Unix es un intrprete de comandos). Los programas
invocados puedes residir en el kernel (ncleo) del sistema o estar
almacenados en algn dispositivo externo.

Ejemplo:
Si bajo MS-DOS se teclea el comando copy se ejecutar la funcin
de archivos del sistema operativo, que se encuentra residente en
memoria.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Ensambladores y macroensambladores
Un ensamblador es un compilador sencillo, en el que el lenguaje
fuente tiene una estructura tan sencilla que permite la traduccin
de cada sentencia fuente a una nica instruccin en cdigo
mquina.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Conversores fuente-fuente
Permiten traducir desde un lenguaje de alto nivel a otro lenguaje
de alto nivel, con lo que se consigue una mayor portabilidad en
los programas de alto nivel.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Compilador cruzado
Es un compilador que genera cdigo para ser ejecutado en otra
mquina.
Se utilizan en la fase de desarrollo de nuevos ordenadores.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Procesadores
Permiten modificar el programa fuente antes de la verdadera
compilacin.
Hacen uso de macroinstrucciones y directivas de compilacin.
Los preprocesadores suelen actuar de manera transparente para
el programador, pudiendo incluso considerarse que son una fase
preliminar del compilador.
Algunas otras directivas de preprocesamiento permiten compilar
trozos de cdigos opcionales (lenguajes C y Clipper): #if, #ifdef,
#define, #ifndef, etc.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Analizador lxico
Se encarga de buscar los componentes lxicos (tokens) o palabras
que componen el programa fuente, segn unas reglas o patrones.
La entrada del analizador lxico se puede definir como una
secuencia de caracteres.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Funciones de un Analizador Lxico


El analizador lxico es la primera fase de un compilador. Su
principal funcin consiste en leer los caracteres de entrada y
elaborar como salida una secuencia de componentes lxicos que
utiliza el analizador sintctico para hacer el anlisis.
Estos componentes lxico representan:
Palabras reservadas. (If, While)
Identificadores. (Variables, funciones)
Operadores. (=, >, <, +)
Smbolos especiales. (;, (), {})
Constantes numricas. (enteros, flotantes)
Constantes de caracteres.
Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Estructura de un traductor
Recordando que un traductor es un programa que convierte desde
un texto o programa escrito en un lenguaje fuente hasta un texto
o programa equivalente escrito en un lenguaje destino,
produciendo, si cabe, mensajes de error, se pueden identificar dos
fases en este proceso:
Programa
fuente

Fase de anlisis
(Front end)
Comprueba que el
programa est escrito
conforme a las reglas
del lenguaje

Fase de sntesis
(Back end)

Programa
destino

Genera el texto
equivalente en el
lenguaje objeto

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Fase de anlisis
El objetivo de esta etapa es obtener una representacin de la
entrada que permita realizar la sntesis o la interpretacin con
comodidad.
El anlisis a su vez se divide en tres pasos:
Anlisis lxico.
Se encarga de la divisin de la entrada en componentes lxicos.
Anlisis sintctico.
Se encarga de encontrar las estructuras presentes en la entrada.
Anlisis semntico.
Se encarga de comprobar que se cumplan las restricciones
semnticas del lenguaje.
Programa
fuente

Anlisis
lxico

Secuencia
de smbolos

Gestin de errores

Anlisis
sintctico

rbol
sintctico

Tabla de smbolos

Anlisis
semntico

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Sntesis
Una vez analizado el programa de entrada, es necesario generar
cdigo, a ser posible para la mquina objetivo.
La generacin de cdigo se divide habitualmente en dos etapas:
1.- Generacin de cdigo intermedio.
2.- Generacin de cdigo objeto: Se traduce el cdigo intermedio a
cdigo mquina.

rbol
sintctico

Generador
de cdigo
intermedio

Cdigo
intermedio

Gestin de errores

Optimizador
de cdigo
intermedio

Cdigo
intermedio
optimizado

Generador
de cdigo
objeto

Tabla de smbolos

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Gestor de errores
Al programar se cometen errores, compilador debe, ante un error:
diagnosticarlo de la manera ms clara posible. Detener la
generacin de cdigo. Intenta recuperarse para poder continuar el
anlisis.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

Tabla de smbolos
Esta estructura de datos mantiene la informacin asociada con los
identificadores: funciones, variables, constantes y tipos de datos.
Esta tabla interacta con casi todas las fases del compilador.
entrada, es necesario generar cdigo, a ser posible para la mquina
objetivo.

Lenguajes y Autmatas I
Ing. Ricardo Ziga Hdez.

También podría gustarte