Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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.
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.
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.
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.
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.