Вы находитесь на странице: 1из 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.