You are on page 1of 8

1.

1 ALFABETO Alfabeto: Leyendo sobre varios autores para comprender la definición de alfabeto puedo decir claramente que Deán Kelly en su libro “Teoría de autómatas y lenguajes formales” nos dice que un alfabeto “Es un conjunto no vacío y finito de símbolos” por otro lado Jonh E. Hpocroft, Rajeev Motwani y Jeffrey D. Ullman en su libro “Introducción a la teoría de autómatas, Lenguajes y Computación” nos definen que un alfabeto es un conjunto finito no vacio de símbolos, sin embargo Otros autores como Pedro García, Tomás Pérez, José Ruíz, Encarna Segarra, José M. Sempere y M. Vázquez de Parga nos dicen en su libro “Teoría de autómatas y lenguajes formales” que un alfabeto es cualquier conjunto finito y no vacío de elementos que denominan símbolos y los denotaran con el símbolo Ʃ. Con otro autor como John Martin en su libro “Lenguajes formales y teoría de la computación” Por tanto puedo concluir que un alfabeto es un conjunto no vacío y finito de símbolos denotado por el símbolo Ʃ.

1.2 CADENAS Cadena: La definición de cadena se puede encontrar con varias definiciones como Deán Kelly en su libro “Teoría de autómatas y lenguaj es formales” nos dice que en su libro definirá cadena como palabra y dice que una secuencia finita de símbolos de un determinado alfabeto es conocido como palabra ó cadena. Por otro lado John Martin en su libro “Lenguajes formales y teoría de la computación” define como cadena en un alfabeto Ʃ se obtiene al ordenar elementos de Ʃ (o posiblemente ninguno) este autor no define la palabra cadena en sí pero si la utiliza mucho en sus definiciones para lenguajes y alfabeto. Otra definición de Jonh E. Hpocroft, Rajeev Motwani y Jeffrey D. Ullman en su libro “Introducción a la teoría de autómatas, Lenguajes y Computación” nos dicen que una cadena (también llamada palabra) es una secuencia finita de símbolos pertenecientes a un alfabeto. 1.3 LENGUAJES Lenguajes: La definición de lenguajes la encontré de diferentes autores y cada uno usa sus términos como Jonh E. Hpocroft, Rajeev Motwani y Jeffrey D. Ullman en su libro “Introducción a la teoría de autómatas, Lenguajes y Computación” nos dice que un lenguaje es un conjunto de cadenas, todas ellas elegidas de algún Ʃ*donde Ʃ es un alfabeto, algo que me llamo la atención de este libro es que los autores comenta n que la definición de Lenguajes puede parecer extraña más sin embargo los lenguajes habituales se pueden considerar como conjuntos de cadenas. Otro autor como John Martin en su libro “Lenguajes formales y teoría de la computación” define lenguajes como que es simplemente un conjunto de cadenas que incluyen símbolos de un alfabeto. Por tanto puedo concluir que un alfabeto es un conjunto no vacío y finito de símbolos denotado por el símbolo Ʃ. Sin embargo Deán Kelly nos dice que un lenguaje es un conjunto de palabras o de cadenas y se puede tener el lenguaje compuesto por ninguna cadena.

1.4 TIPOS DE LENGUAJES Podemos encontrar varios tipos de lenguajes: * Lenguajes declarativos * Lenguajes de alto nivel * Lenguajes ensambladores * Lenguajes máquina

El editor de estructuras no sólo realiza las funciones de creación y modificación . estos lenguajes permiten que los algoritmos se expresen en un nivel y estilo de escritura fácilmente legible y comprensible por otros programadores. lo cual permite una programación menos tediosa que con el anterior. COBOL (para aplicaciones de procesamiento de datos). SNOBOL (para aplicaciones de procesamiento de textos). Sin embargo. Son fundamentalmente lenguajes de órdenes. dominados por sentencias que expresan “lo que hay que hacer” en vez de “cómo hacerlo”. LISP y PROLOG (para aplicaciones de inteligencia artificial). Además. C y ADA (para aplicaciones de programación de sistemas) y PL/I (para aplicaciones de propósi to general). es necesario un conocimiento de la arquitectura mecánica subyacente para realizar una programación efectiva en cualquiera de estos niveles de lenguajes. APL y FORTRAN (lenguajes de programación utilizados para aplicaciones científicas). Los lenguajes de alto nivel son los más utilizados como lenguajes de programación. Ejemplos de estos lenguajes de alto nivel son PASCAL. El lenguaje ensamblador es simplemente una representación simbólica del lenguaje máquina asociado. los lenguajes de alto nivel suelen tener la característica de “transportabilidad”. Cada tipo de máquina tiene su propio lenguaje máquina distinto y su lenguaje ensamblador asociado. 1. Aunque no son fundamentalmente declarativos. Los lenguajes ensambladores y los lenguajes máquina son dependientes de la máquina.Los lenguajes declarativos son los más parecidos al castellano o inglés en su potencia expresiva y funcionalidad y están en el nivel más alto respecto a los otros.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES * Editores de estructuras: “Un editor de estructuras toma como ent rada una secuencia de órdenes para construir un programa fuente.

sino que también analiza el texto del programa. un intérprete realiza las operaciones que implica el programa fuente. lo analiza e intenta descubrir errores potenciales sin correr el programa. a mi punto de vista estos editores de estructura son los que se encarga de llevar el orden de las palabras. De esa manera. En el proceso de traducción se identifican dos fases principales: * Fase de análisis * Fase de Síntesis . Ejemplos de traductores son los ensambladores y los compiladores. valla el acomodo y comprobar si la entrada está formada correctamente. como un editor o un compilador” es el encargado de COMPILADOR CONVENCIONAL * Formadores de textos: “Un formador de textos toma como entrada una cadena de caracteres. “Un verificador estático puede detectar si hay partes de un programa que nunca se podrán ejecutar o si cierta variable se usa antes de ser definida” nos dice Addison Wesley. la mayor parte de la cual es texto para componer. algo muy parecido a la corrección de los editores de texto como Word. * Impresoras estéticas: “Una impresora estética analiza un programa y lo imprime de forma que la es tructura del programa resulte claramente visible” Concepto encontrado en el lib ro de Compiladores de Addison Wesley. figuras o estructuras matemáticas como subíndices o superíndices” esto con comento el autor del libro de Compiladores Addison Wesley. el editor de estructuras puede realizar tareas adicionales útiles para la preparación de programas” Concepto encontrado en el libro de Compiladores de Addison Wesley. Muchas veces los interpretes se usan para ejecutar lenguajes de órdenes. * Intérpretes: “En lugar de producir un programa objeto como resultado de una traducción. * Intérpretes de consultas:” Un intérprete de consultas traduce un predicado que contiene operadores relacionales y booleanos a órdenes para buscar en una base de datos registros que satisfagan ese predicado” 1. pues cada operador que se ejecuta en un lenguaje de ordenes suele ser una invocación de una rutina compleja.de textos de un editor de textos ordinario. imponiendo al programa fuente una estructura jerárquica apropiada. * Verificadores estáticos: este verificador lee un programa.6 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. pero alguna incluye órdenes para indicar párrafos.

A la secuencia de caracteres que representa un componente léxico se le llama lexema (o con su nombre en inglés token). y además proporcionan una serie de directivas para definir e invocar macroinstrucciones. Componentes en que se divide un compilador: Análisis Léxico. . Estructura de un Compilador. * Ensambladores modulares 32-bits o de alto nivel. a otro lenguaje de nivel inferior (lenguaje máquina). En cada una de las fases se utiliza un administrador de la tabla de símbolos y un manejador de errores. El programa ensamblador es el programa que realiza la traducción de un programa escrito en ensamblador a lenguaje máquina. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits. COMPILADORES. * Ensambladores modulares. Cualquier compilador debe realizar dos tareas principales: análisis del programa a compilar y síntesis de un programa en lenguaje máquina. Generando un programa equivalente a capaz de interpretar. Un compilador es un programa informático que traduce un programa escrito en un lenguaj e de programación a otro lenguaje de programación. Esta traducción es directa e inmediata. Son de muy bajo nivel. Cada fase representa una transformación al código fuente para obtener el código objeto. permiten utilizar estructuras de programación más complejas propias de los lenguajes de alto nivel. o macro ensambladores. Para el estudio de un compilador.ENSAMBLADORES. permitiendo también el uso de macros. y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas instrucciones. Hacen todo lo que puede hacer un ensamblador. ya que las instrucciones en ensamblador no son más que nemotécnicos de las instrucciones máquina que ejecuta directamente la CPU. realizan la misma tarea que los anteriores. es necesario dividir su trabajo en fases. En esta fase se lee los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos. Tipos de ensambladores Podemos distinguir entre tres tipos de ensambladores: * Ensambladores básicos. es decir programa que permite traducir el código fuente de un programa en lenguaje de alto nivel. Descendientes de los ensambladores básicos.

Los componentes léxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. en cada una de las etapas de compilación de un programa. Generación de código Intermedio. * Facilita el proceso de depuración. De esta forma podrán controlarse más eficientemente los errores encontrados en cada una de las fases de la compilación de un programa. INTERPRETES. * No produce resultados transportables. Manejador de errores. Optimización de Código. lo cual hace la ejecución lenta. ni tampoco un lenguaje de alto nivel. Administrador de la tabla de símbolos. Se trata de mejorar el código intermedio. Los intérpretes realizan normalmente dos operaciones: * Traducen el código fuente a un formato interno. Es posible encontrar errores.Análisis Sintáctico. * Ejecutan o interpretan el programa traducido al formato interno. Generación de Código. * No demasiado eficiente. Estructura Particularidades de la interpretación: * Ahorra memoria. de modo que resulte un código de máquina más rápido de ejecutar. La primera parte del intérprete se llama a veces "el compilador". Se puede considerar esta operación intermedia como un subprograma para una máquina abstracta. Esta constituye la fase final de un compilador. * Produce un resultado que no se puede almacenar. Intenta detectar instrucciones que tengan la estructura sintáctica correcta. pero que no tengan significado para la operación implicada. Análisis Semántico. a esta representación debe tener dos propiedades importantes: debe ser fácil de producir y fácil de traducir al programa objeto. Se encarga de manejar los accesos a la tabla de símbolos. ni siquiera lenguaje simbólico. aunque el código interno que genera no es el lenguaje de la máquina. . cada vez que se entre en un bucle se analizaran sus sentencias.

* Programas de prototipo y de enseñanza. Generación de código: Esta es la fase final de un compilador es la generación de código objeto.7 FASES DE UN COMPILADOR Fases de un compilador: El autor Addison Wesley nos dice que un compilador opera en fases. como un identificador. cada una de las cuales transforma al programa fuente de una representación en otra y nos propone la siguiente estructura Analizador léxico: esta fase lee los caracteres en el programa fuente y agrupa en una cadena de componentes léxicos en los que cada componente representa una secuencia lógicamente coherente de caracteres. una palabra clave (if. algunos compiladores generan una representación intermedia explícita del programa fuente. . Durante el análisis semántico el compilador intenta detectar construcciones que tengan la estructura sintáctica correcta.La interpretación es útil en: * Sistemas interactivos. Las posiciones de memoria se seleccionan para cada una de las variables usadas por el programa. que por lo general consiste en código de máquina re localizable o código ensamblador. Optimización de código: esta fase trata de mejorar el código intermedio. de modo que resulte un código de máquina más rápido de ejecutar. etc. 1. Generación de código intermedio: Después de los análisis sintáctico y semántico.) Analizador sintáctico y semántico: por lo general manejan una gran porción de los errores detectables por el compilador. while. * Programas de pequeña envergadura.

ya que los libros que había en la biblioteca del TEC ya los habían prestado. necesite ir a la biblioteca Magna ubicada en la UAN. para poder encontrar la información. técnicas y herramientas Lugar de publicación: Mexico Editorial: Bell Telephone Laboratories.ANEXOS 1. ¿Cuál de las tareas realizadas consideras más sencilla y porque? La tarea de buscar 3 lenguajes. se me hizo más sencilla porque encontré demasiada información y no le batalle.mx/dep/sada/carreras/Ingenieria%20en%20Sistemas%20Computacionales/6to %20Semestre/Interfaces/interfaces/T203.edu. ¿Cuál de las tareas realizadas consideras más significativa o que te aporto más para comprender más la unidad? Sin dudar puedo decir que hacer los ejercicios de lenguajes porque así considero que aprendo más haciendo ejercicios que escuchando pura teoría y por eso la creación de lenguajes.HistoriayTiposdeLenguajesdeProgramacion.pdf “Lenguajes de programación” Allon B. junto con la descripción es lo que más me ayudo a comprender la unidad 3. Editorial McGraw Hill . Tucker. Inc PDF:http://blearning. ¿Cuál es el trabajo de las tareas que consideras más difícil y porque? La tarea que más se me complico fue la de investigar las herramientas ligadas con lenguajes no po rque estuvo difícil si no que por la falta de información. 2.itmina. BIBLIOGRAFIAS Autor: Addison Wesley Longman Fecha de publicación: 1990 Título: Compiladores Principios.

LIBROS CONSULTADOS * Deán Kelly “Teoría de autómatas y lenguajes formales” * Jonh E. Ullman “Introducción a la teoría de autómatas. Rajeev Motwani y Jeffrey D. Hpocroft. Lenguajes y Computación” * John Martin “Lenguajes formales y teoría de la computación” .