Está en la página 1de 39

Lenguajes y Autmatas 1

I.S.C. Jorge Miguel Vzquez Mrquez


miguel_007vm@Hotmail.com
Unidad 1. Introduccin a la Teora de
Lenguajes Formales.
1.1 Alfabeto.
1.2 Cadenas.
1.3 Lenguajes
1.4 Tipos de lenguajes
1.5 Herramientas computacionales ligadas con lenguajes
1.6 Estructura de un traductor
1.7 Fases de un compilador
El porqu de la Teora de Autmatas

Disciplinas de la Computacin segn La Educational Activities Board Of


IEEE:
El porqu de la Teora de Autmatas
El porqu de la Teora de Autmatas
Primera inmersin en la Teora de la Computacin:
Es anterior al invento del Computador (incluso del transistor)
Propiedades MATEMTICAS FUNDAMENTALES de Software, Hardware y
aplicaciones de los mismos. Responder a preguntas como:
Cmo puede construirse un programa para resolver un problema?
Resuelve el programa realmente el problema?
Cunto se tarda en realizar un cmputo (complejidad temporal).
Cuanta memoria se necesita para realizar el computo (complejidad
espacial).
Y el modelo de computacin (ImperaDvo, POO, Programacin. Lgica,
etc.)
Qu se puede computar y qu NO se puede computar.
El porqu de la Teora de Autmatas
El porqu de la Teora de Autmatas
El porqu de la Teora de Autmatas
Conceptos Basicos

Lenguaje:
Forma de representar informacin basada en un conjunto
finito de signos o smbolos
Alfabeto:
Conjunto de smbolos que forman parte de un lenguaje
Sentencia o palabra o frmula bien formada:
Secuencia de smbolos correcta.
Lenguaje formal:
Lenguaje descrito mediante un formalismo matemtico
Otras definiciones
Los conceptos bsicos de smbolos, palabras, alfabetos y strings son
comunes en la mayora de las descripciones de los autmatas. Estos son:
Smbolo
Un dato arbitrario que tiene algn significado a o efecto en la mquina. A estos
smbolos tambin se les llama "letras" o "tomos".
Palabra
Una cadena finita formada por la concatenacin de un nmero de smbolos.
Alfabeto
Conjunto finito de smbolos. Un alfabeto se indica normalmente con , que es
el conjunto de letras en un alfabeto.
Lenguaje
Un conjunto de palabras, formado por smbolos en un alfabeto dado. Puede ser
infinito.
Alfabeto
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 a1a2 ...an donde cada ai V.
Cadenas, Alfabetos y Lenguajes

Las principales ideas matemticas necesarias para la compresin a la Teora de Autmatas son
conceptos que incluyen grafos, rboles, conjuntos, relaciones, cadenas, lenguajes abstractos e
induccin matemtica. Un "smbolo" es una entidad abstracta. Las letras y los dgitos son ejemplos
de smbolos usados con frecuencia. Una cadena (o palabra) es una secuencia finita de smbolos
yuxtapuestos. Por ejemplo a, b y c son smbolos y casa es una cadena. La longitud de una cadena
w que se denota como |w|, es el nmero de smbolos que componen la cadena.

Por ejemplo casa tiene una longitud 4.

Habitualmente, se emplean las letras minsculas del principio del alfabeto (o dgitos) para designar
a los smbolos y las letras minsculas del final del alfabeto, normalmente w, x, y y z, para designar cadenas.
Cadenas, Alfabetos y Lenguajes
La cadena vaca, denotada por E es aquella que presenta cero
apariciones de smbolos, es una cadena que puede construirse en
cualquier alfabeto.

La concatenacin de dos cadenas es la cadena que se forma al escribir


la primera seguida de la segunda, sin que haya espacio entre ellas, Por
ejemplo la concatenacin de padre y madre es padremadre. La
yuxtaposicin se utiliza como el operador de concatenacin. Esto es si w y x
son cadenas, entonces wx es la concatenacin de estas dos cadenas. La
cadena vaca es la identidad para el operador de concatenacin, es
decir Ew=wE para cada cadena de w.

Un alfabeto es un conjunto de smbolos finito y no vaco.


Convencionalmente se utiliza el smbolo S para designar un alfabeto.
Cadenas, Alfabetos y Lenguajes
Un lenguaje es un conjunto de cadenas, todas ellas seleccionadas de un S* donde S es un determinado
alfabeto

El conjunto vaco y el conjunto formado por la cadena vaca { E } son lenguajes.

El conjunto de palndromos (cadenas que se leen igual de izquierda a derecha y viceversa) sobre
el alfabeto {0,1} es un lenguaje infinito. Algunos elementos de este lenguaje son E,0,1, 00, 01,010, y 1101011.

Por consiguiente vemos que el conjunto de todos los palndromos sobre una coleccin finita de smbolos
no es, tcnicamente hablando, un lenguaje, porque sus cadenas no se construyen colectivamente a partir de
un alfabeto.

Otro lenguaje es el conjunto de cadenas sobre un alfabeto fijo S Denotamos a este lenguaje como S*
Por ejemplo:

Si S = {a}, entonces S* = {E, a, aa, aaa,...}.


Si S = {0,1}, entonces S* = {E,0,1,00,01,10,11,000,...}
Cadenas, Alfabetos y Lenguajes

Como comentamos anteriormente el astersco (*) representa cualquier


nmero de apariciones de la expresin anterior.

En la teora de autmatas, un problemas es la cuestin de decidir si una


determinada cadena es un elemento de un determinado lenguaje.
Cualquier cosa que coloquialmente denominamos "problema" podemos
expresarlo como lenguaje. De manera precisa, si S es un alfabeto y L es un
lenguaje de S, entonces el problema de L es:

Data una cadena w de S*, decidir si w pertenece o no a L


Lenguajes
En matemticas, lgica, y las ciencias computacionales, un lenguaje
formal es un conjunto de palabras (cadenas de caracteres) de longitud
finita formadas a partir de un alfabeto (conjunto de caracteres) finito.
Informalmente, el trmino lenguaje formal se utiliza en muchos contextos
(en las ciencias, en derecho, etc.) para referirse a un modo de expresin
ms cuidadoso y preciso que el habla cotidiana. Hasta finales de la
dcada de 1990, el consenso general era que un lenguaje formal, era en
cierto modo la versin lmite de este uso antes mencionado: un lenguaje
tan formalizado que poda ser usado en forma escrita para describir
mtodos computacionales. Sin embargo, hoy en da, el punto de vista de
que la naturaleza esencial de los lenguajes naturales (sin importar su grado
de formalidad en el sentido informal antes descrito) difiere de manera
importante de aquella de los verdaderos lenguajes formales, gana cada
vez ms adeptos.
Tipos de Lenguajes

Llamamos lenguaje sobre el alfabeto V a cualquier subconjunto de V.

Especificacin de lenguajes:

Extensin (lenguajes finitos)


L = fa; aa; aaag es un lenguaje sobre el alfabeto V = fag
L = faba; cab; aaabcg es un lenguaje sobre el alfabeto V = fa; b; cg
Comprensin (lenguajes infinitos)
L = fa(bc)njn >= 1g
Tipos de Lenguajes
Chomsky clasificar los lenguajes formales de acuerdo a una jerarqua de
cuatro niveles, conteniendo cada uno de todos los siguientes.
El lenguaje ms general ser, pues, de tipo 0,y no posee restriccin alguna.
Este conjunto engloba el conjunto de todos los lenguajes posibles.
En el segundo nivel aparecen los lenguajes de tipo1,tambin llamados
lenguajes sensibles al contexto, al permitir que el papel de las palabras
dependa de la posicin en que aparezcan(es decir, del contexto).La
mayor parte de los lenguajes de ordenador pertenecen a este tipo.
En tercer lugar aparecen los lenguajes de tipo 2, o lenguajes
independientes del contexto. En ellas el significado de una palabra es
independiente del lugar que ocupa en la frase.
Finalmente, los lenguajes de tipo 3,o lenguajes regulares, son los que
presentan una estructura ms sencilla.
Tipos de Lenguajes
Resulta curioso observar como paralelamente a la jerarqua de lenguajes
aparece otra de mquinas abstractas equivalentes, como se observa en
el esquema siguiente:

Cada uno de estos tipos de mquinas es capaz de resolver problemas


cada vez ms complicados, hasta llegar a las mquinas de Turing. Como
descubri Turing, existen una serie de problemas que no son
computacionalmente abordables y que reciben el nombre de problemas
no enumerables.
La relacin estrecha entre la Teora de Lenguajes Formales y la Teora de
Autmatas se pone de manifiesto en este tema. Se establece unisomorfismo
entre ambas, estableciendo una conexin entre la clase de lenguajes
generados por ciertos tipos de gramticas y la clase de lenguajes reconocibles
por ciertas mqinas.
Los lenguajes del tipo 0 con los lenguajes reconocidos por una mquina de
Turing,
Los lenguajes de tipo 1 con los Autmatas Linealmente Acotados,
Los lenguajes de tipo 2 con los Autmatas a Pila
Los lenguajes de tipo 3 con los Autmatas Finitos, los Autmatas Probabilsticos
y los Autmatas de Clulas de McCulloch-Pitts.
Cada uno de estos tipos/mquinas aade restricciones al tipo/mquina del
nivel superior.
Herramientas computacionales
ligadas con lenguajes
bsicamente son las siguientes:
1- Diagramas Funcionales.
2- Interpretacin de Datos.
3- Bases de Datos.
4- Algoritmos.
5- Seudo-cdigos.

(Realizar cuadros comparativos entre estas herramientas)


Qu es un Traductor?

Un traductor es un mediador entre dos entidades: emisoras y


receptoras, los mediadores enmascaran la complejidad y
heterogeneidad de los lenguajes.

Un traductor convierte un lenguaje de entrada (cdigo fuente) a


una de salida (cdigo objeto).
Ensambladores
Ensamblador se refiere a un tipo de programa, informtico
que se encarga de traducir un fichero fuente escrito en un
lenguaje ensamblador, a un fichero objeto que contiene
cdigo mquina ejecutable directamente por la mquina
para la que se ha generado.

Ejemplos: MASM
Funcin De Un Ensamblador:

La tarea fundamental de un ensamblador es


traducir un programa en lenguaje de
ensamblador al cdigo correspondiente en
lenguaje de mquina.
.
MOTIVOS PARA USAR ENSAMBLADOR

Mayor control de la computadora.


Independencia de lenguaje.
La mayora de las computadoras pueden
ensamblar.
Los programas hechos en lenguaje
ensamblador son generalmente ms
rpidos y consumen menos recursos del
sistema.
MOTIVOS PARA NO UTILIZAR
Demasiado complejo.
Comprensin ms profunda de la computadora.
Errores ms frecuentes en el programa.
Mayor tiempo de codificacin.
Difcilmente portable, es decir, un cdigo escrito para un
microprocesador en particular necesita ser modificado
muchas veces en su totalidad para poder ser usado en otro
microprocesador.
Tipos de Ensambladores
ENSAMBLADORES CRUZADOS: Se denominan as a los
ensambladores que se utilizan en una computadora que
posee el procesador diferente al que tendrn las
computadoras donde se va a ejecutar el programa objeto
producido.

ENSAMBLADORES RESIDENTES: Son aquellas que permanecen


en la memoria principal de la computadora y cargar para su
ejecucin al programa objeto producido.
MICRO ENSAMBLADORES: Al programa que indica al
intrprete de instrucciones de la CPU como debe actuar se le
denomina microprograma. El programa que ayuda a realizar
este microprograma se llama micro ensamblador.

MACRO ENSAMBLADORES: Son ensambladores que permiten


el uso de macroinstrucciones.
ENSAMBLADORES DE UNA FASE: leen una lnea y la traducen
directamente para producir una instruccin de lenguaje
maquina o la ejecuta si se trata de una pseudosinstruccin. Se
construye la tabla de smbolos a medida que aparecen las
definiciones de variables, etiquetas, etc.

ENSAMBLADORES DE DOS FASES: Realiza la traduccin en dos


etapas: 1 fase leen el programa fuente y construyen la tabla
de smbolos, 2 fase vuelve a leer el programa fuente y
pueden ir traduciendo totalmente pues reconocen la
totalidad de los smbolos.
Compiladores
Un compilador es querer traducir un programa de un
lenguaje de alto nivel, a otro lenguaje de nivel inferior
(tpicamente lenguaje mquina).

Los compiladores son programas o herramientas encargadas


de compilar. Un compilador toma un texto (cdigo fuente)
escrito en un lenguaje de alto nivel y lo traduce a un lenguaje
comprensible por las computadoras (cdigo objeto).
Fases del Compilador
CLASIFICACIN DE COMPILADORES
DE UNA PASADA: Examina el cdigo fuente una vez,
generando el cdigo o programa objeto.

PASADAS MLTIPLES: Requiere pasos intermedios para


producir cdigo en otro lenguaje y una pasada final para
producir y optimizar el cdigo producido durante pasos
anteriores.
COMPILADORES INCREMENTALES: Generan un cdigo objeto,
instruccin por instruccin cuando el usuario teclea cada
orden individual.

COMPILADOR CRUZADO: Se genera cdigo en lenguaje


objeto para una maquina diferente a la que se esta utilizando
para compilar.

COMPILADOR CON MONTADOR: Compila distintos mdulos


de forma independiente y despus es capaz de aplazarlos.
AUTO COMPILADORES: Compilador que esta escrito en el mismo
lenguaje que va a compilar.

META COMPILADOR: Es programa que recibe como entrada las


especificaciones del lenguaje para el que se desea obtener un
compilador y genera como salida el compilador para ese
lenguaje.

DESCOMPILADOR: Es un programa que acepta como entrada


cdigo maquina y la traduce a un lenguaje de alto nivel
realizando el proceso inverso a la compilacin.
1.4.3 Interpretes
Un intrprete es un programa capaz de analizar y ejecutar
otros programas, escritos en un lenguaje de alto nivel. Los
intrpretes suelen contraponerse a los compiladores, ya que
mientras que los segundos se encargan de traducir un
programa desde su descripcin en un lenguaje de
programacin al cdigo mquina del sistema destino, los
primeros slo realizan la traduccin a medida que sea
necesario y normalmente, no guardan el resultado de dicha
traduccin.
JavaScript, BASIC, LISP, Smalltalk y Python son ejemplos de
lenguajes que son normalmente interpretados en vez de
compilados.
El intrprete tiene estas caractersticas

Traduce y ejecuta una lnea del programa a la vez.


Si hay error, detiene ejecucin del programa
Programas ms lentos pero ms portables y flexibles
Conclusiones
Gran parte del temario se basar en problemas que tienen que ver con el
procesamiento del lenguaje, por tanto, se repasa la terminologa y algunos
de los conceptos asociados al proceso de traduccin.
Se establecen los trminos de lenguaje formal, definidos por reglas
preestablecidas, y de lenguaje natural, no cuentan con reglas
gramaticales formales.
As, el estudio de los lenguajes se reduce al anlisis de la estructura de las
frases (Gramtica)y del significado de las mismas(Semntica).
A su vez, la Gramtica puede analizar las formas que toman las
palabras(Morfologa),su combinacin para formar frases
correctas(Sintaxis),y las propiedades del lenguaje hablado(Fontica)(nica
no aplicable a los lenguajes de ordenador).
Para realzar el papel de la gramtica en el proceso de traduccin se
indican los componentes bsicos de que consta compilador para un
determinado lenguaje de programacin: anlisis lxico, anlisis sintctico y
generacin de cdigo.

También podría gustarte