Vous êtes sur la page 1sur 18

LENGUAJES Y AUTMATAS 1

ING. DANIEL NERI RAMREZ

Introduccin a la teora de lenguajes formales

TEMARIO
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

CRITERIOS DE EVALUACIN

Cuestionario 1 20% Semana 1 Cuestionario II 20% Semana 4 Exposicin Ensayo Asistencia y puntualidad 20% Semana 2 30% Semana 3 10% Semana 1-4

LENGUAJE FORMAL

En matemticas, lgica, y ciencias de la computacin, un lenguaje formal es un lenguaje cuyos smbolos primitivos y reglas para unir esos smbolos estn formalmente especificados. Al conjunto de los smbolos primitivos se le llama el alfabeto (o vocabulario) del lenguaje, y al conjunto de las reglas se lo llama la gramtica formal (o sintaxis). A una cadena de smbolos formada de acuerdo a la gramtica se la llama una frmula bien formada (o palabra) del lenguaje. Estrictamente hablando, un lenguaje formal es idntico al conjunto de todas sus frmulas bien formadas. A diferencia de lo que ocurre con el alfabeto (que debe ser un conjunto finito) y con cada frmula bien formada (que debe tener una longitud tambin finita), un lenguaje formal puede estar compuesto por un nmero infinito de frmulas bien formadas.

EJEMPLO

un alfabeto podra ser el conjunto {a,b}, y una gramtica podra definir a las frmulas bien formadas como aquellas que tienen el mismo nmero de smbolos a que b. Entonces, algunas frmulas bien formadas del lenguaje seran: ab, ba, abab, ababba, etc.; y el lenguaje formal sera el conjunto de todas esas frmulas bien formadas.

EJEMPLOS DE LENGUAJES FORMALES

Un conjunto de todas las palabras sobre {a,b}. La Numeracin de Gdel {an : a es un nmero primo y n un nmero de Gdel}. El conjunto de todos los programas sintcticamente vlidos en un determinado lenguaje de programacin. El conjunto de todas las frmulas bien formadas en la lgica de primer orden.

CONCEPTOS FUNDAMENTALES DE LA TEORA DE AUTMATAS

Alfabetos
Un alfabeto es un conjunto de smbolos nito y no vaco. Convencionalmente, utilizamos el smbolo para designar un alfabeto. Entre los alfabetos ms comunes se incluyen los siguientes: 1. ={0,1}, el alfabeto binario. 2. ={a,b,...,z}, el conjunto de todas las letras minsculas. 3. El conjunto de todos los caracteres ASCII o el conjunto de todos los caracteres ASCII imprimibles.

CONCEPTOS FUNDAMENTALES DE LA TEORA DE AUTMATAS

Cadenas de caracteres
Una cadena de caracteres(que tambin se denomina en ocasiones palabra) es una secuencia nita de smbolos seleccionados de algn alfabeto. Por ejemplo, 01101 es una cadena del alfabeto binario = {0,1}. La cadena 111 es otra cadena de dicho alfabeto.

CONCEPTOS FUNDAMENTALES DE LA TEORA DE AUTMATAS

Convenio de tipos para smbolos y cadenas


Habitualmente, emplearemos las letras minsculas del principio del alfabeto (o dgitos) para designar a los smbolos y las letras minsculas del nal del alfabeto, normalmente w, x, y y z, para designar cadenas. Debe intentar utilizar este convenio con el n de recordar el tipo de elementos con los que est trabajando.

LENGUAJES
Un conjunto de cadenas, todas ellas seleccionadas de un donde es un determinado alfabeto se denomina lenguaje. Si es un alfabeto y L , entonces L es un lenguaje de . Observe que un lenguaje de no necesita incluir cadenas con todos los smbolos de , ya que una vez que hemos establecido que L es un lenguaje de , tambin sabemos que es un lenguaje de cualquier alfabeto que sea un superconjunto de . La eleccin del trmino lenguaje puede parecer extraa. Sin embargo, los lenguajes habituales pueden interpretarse como conjuntos de cadenas. Un ejemplo sera el 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. Este alfabeto es un subconjunto de los caracteres ASCII. El alfabeto en concreto puede diferir ligeramente entre diferentes lenguajes de programacin, aunque generalmente incluye las letras maysculas y minsculas, los dgitos, los caracteres de puntuacin y los smbolos matemticos.

HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES

Flex, versin 2.5 Un generador de analizadores lxicos rpidos. http://es.tldp.org/Manuales-LuCAS/FLEX/flex-es-2.5.html

ESTRUCTURA DE UN TRADUCTOR

Un traductor es un programa que tiene como entrada un texto escrito en un lenguaje (lenguaje fuente) y como salida produce un texto escrito en un lenguaje (lenguaje objeto) que preserva el significado de origen. Ejemplos de traductores son los ensambladores y los compiladores.

En el proceso de traduccin se identifican dos fases principales:

FASE DE ANLISIS

FASE DE SNTESIS

ENSAMBLADORES
El programa ensamblador es el programa que realiza la traduccin de un programa escrito en ensamblador a lenguaje mquina. Esta traduccin es directa e inmediata, ya que las instrucciones en ensamblador no son ms que nemotcnicos de las instrucciones mquina que ejecuta directamente la CPU. Tipos de ensambladores Podemos distinguir entre tres tipos de ensambladores: Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres simblicos a las distintas instrucciones. Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores bsicos. Hacen todo lo que puede hacer un ensamblador, y adems proporcionan una serie de directivas para definir e invocar macroinstrucciones. Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, realizan la misma tarea que los anteriores, permitiendo tambin el uso de macros, permiten utilizar estructuras de programacin ms complejas propias de los lenguajes de alto nivel.

COMPILADORES

Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, es decir programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (lenguaje mquina). Generando un programa equivalente a capaz de interpretar.

ESTRUCTURA DE UN COMPILADOR
Cualquier compilador debe realizar dos tareas principales: anlisis del programa a compilar y sntesis de un programa en lenguaje maquina. Para el estudio de un compilador, es necesario dividir su trabajo en fases. Cada fase representa una transformacin al cdigo fuente para obtener el cdigo objeto. En cada una de las fases se utiliza un administrador de la tabla de smbolos y un manejador de errores.

COMPONENTES EN LOS QUE SE DIVIDE UN COMPILADOR


Anlisis Lxico. En esta fase se lee los caracteres del programa fuente y se agrupan en cadenas que representan los componentes lxicos. A la secuencia de caracteres que representa un componente lxico se le llama lexema (o con su nombre en ingls token). Anlisis Sintctico. Los componentes lxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. Anlisis Semntico. Intenta detectar instrucciones que tengan la estructura sintctica correcta, pero que no tengan significado para la operacin implicada. Generacin de cdigo Intermedio. Se puede considerar esta operacin intermedia como un subprograma para una mquina abstracta, a esta representacin debe tener dos propiedades importantes: debe ser fcil de producir y fcil de traducir al programa objeto. Optimizacin de Cdigo. Se trata de mejorar el cdigo intermedio, de modo que resulte un cdigo de mquina ms rpido de ejecutar. Generacin de Cdigo. Esta constituye la fase final de un compilador. Administrador de la tabla de smbolos. Se encarga de manejar los accesos a la tabla de smbolos, en cada una de las etapas de compilacin de un programa. Manejador de errores. Es posible encontrar errores. De esta forma podrn controlarse ms eficientemente los errores encontrados en cada una de las fases de la compilacin de un programa.

Vous aimerez peut-être aussi