Lenguajes autómatas.
Upcoming SlideShare
Loading in...5
×
 

Lenguajes autómatas.

on

  • 6,181 views

Este documenta esta elaborado con toda la informacion referente a la unidad uno de la materia de Lenguajes y automatas.

Este documenta esta elaborado con toda la informacion referente a la unidad uno de la materia de Lenguajes y automatas.

Statistics

Views

Total Views
6,181
Views on SlideShare
6,181
Embed Views
0

Actions

Likes
3
Downloads
399
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Lenguajes autómatas. Lenguajes autómatas. Document Transcript

  • INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO INVESTIGACIÓN: U1 INTRODUCCIÓN A LA TEORÍA DE LENGUAJES FORMALES. D O C E N T E: Ing. Marcos Gaspar Pech Cruz. PRESENTA Angulo Estrella Jesús Alberto Lara Domínguez Efraín Yama May José Luis Tun Chulin Johnni Giovanni Canul Chan Rolando Estrada Canul Roger Alfredo Aula: J2 No. De Control 111K0030 No. De Control 111K0043 No. De Control 111K0056 No. De Control 111K0235 No. De Control 111K0231 No. De Control 111K0038 Grupo: B C A R R E R A: Ingeniería en sistemas computacionales M A T E R I A: Lenguajes Y Automatas Felipe Carrillo Puerto, Quintana Roo a 28 de Enero de 2014
  • Introducción a la Teoría de Lenguajes Formales Contenido 1.1 ALFABETO ............................................................................................................................ 3 1.1. CADENA ......................................................................................................................... 3 1.3 LENGUAJES .......................................................................................................................... 4 1.4 TIPOS DE LENGUAJES.......................................................................................................... 4 1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES. ..................................... 6 1.6 ESTRUCTURA DE UN TRADUCTOR. ...................................................................................... 8 1.7 FASES DE UN COMPILADOR. ............................................................................................. 11 ITS Carrillo Puerto Lenguajes Y Autómatas 2 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales INTRODUCCIÓN TEORÍA DE LENGUAJES FORMALES. 1.1 ALFABETO Se llama alfabeto a un conjunto finito, no vacío, cuyos elementos se denominan “letras” o “símbolos”. Se denomina palabra a toda secuencia finita de letras formada con los símbolos de un alfabeto. Se definen los alfabetos por la enumeración de los símbolos que contiene. Un "símbolo" es una entidad abstracta. Las letras y los dígitos son ejemplos de símbolos usados con frecuencia. Se utilizan meta–símbolos (tal como {, }, =, y la coma) para escribir sobre lo que hablamos. Desde el contexto siempre será claro, si se trata de un símbolo del alfabeto o si se trata de un meta–símbolo. Usamos subíndices para distinguir diferentes alfabetos. Usamos normalmente las minúsculas como alfabeto S = {a, . . . , z}, en los ejemplos normalmente letras desde el principio del alfabeto. Cardinalidad del alfabeto (número de elementos del alfabeto): |S| > 0, |S| < 8 1.1. CADENA Una cadena (o palabra) es una secuencia finita de símbolos yuxtapuestos. Por ejemplo a, b y c son símbolos y casa es una cadena. La longitud de una cadena w que se denota como |w|, es el número de símbolos que componen la cadena. Por ejemplo casa tiene una longitud 4. Habitualmente, se emplean las letras minúsculas del principio del alfabeto (o dígitos) para designar a los símbolos y las letras minúsculas del final del alfabeto, normalmente w, x, y y z, para designar cadenas. La cadena vacía, denotada por E es aquella que presenta cero apariciones de símbolos, es una cadena que puede construirse en cualquier alfabeto. ITS Carrillo Puerto Lenguajes Y Autómatas 3 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales La concatenación 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 concatenación de padre y madre es padremadre. La yuxtaposición se utiliza como el operador de concatenación. Esto es si w y x son cadenas, entonces wx es la concatenación de estas dos cadenas. La cadena vacía es la identidad para el operador de concatenación, es decir Ew=wE para cada cadena de w. 1.3 LENGUAJES Un lenguaje es un conjunto de cadenas, todas ellas seleccionadas de un subconjunto finito donde el conjunto es un determinado alfabeto. Es una forma de representar información basada en un conjunto finito de signos o símbolos. El conjunto vacío Ø y el conjunto formado por la cadena vacía { E } son lenguajes. El conjunto de palíndromos (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 palíndromos sobre una colección finita de símbolos no es, técnicamente hablando, un lenguaje, porque sus cadenas no se construyen colectivamente a partir de un alfabeto. 1.4 TIPOS DE LENGUAJES Lenguajes de bajo nivel Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se puede migrar o utilizar en otras máquinas. Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las características del mismo. Dentro de este grupo se encuentran:  El lenguaje maquina: este lenguaje ordena a la máquina las operaciones fundamentales para su funcionamiento. Consiste en la combinación de 0's y 1's para formar las ordenes entendibles por el hardware de la máquina. Este lenguaje es mucho más rápido que los lenguajes de alto nivel. ITS Carrillo Puerto Lenguajes Y Autómatas 4 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente enormes donde encontrar un fallo es casi imposible.  El lenguaje ensamblador es un derivado del lenguaje máquina y está formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener. Lenguajes de alto nivel Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de EDD's. Nota: EDD's son las abreviaturas de Estructuras Dinámicas de Datos, algo muy utilizado en todos los lenguajes de programación. Son estructuras que pueden cambiar de tamaño durante la ejecución del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa. Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo de problema. Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que entiendan el código fuente como las características de la máquina. Suelen usar tipos de datos para la programación y hay lenguajes de propósito general (cualquier tipo de aplicación) y de propósito específico (como FORTRAN para trabajos científicos). Lenguajes de Medio nivel Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel. Generaciones La evolución de los lenguajes de programación se puede dividir en 5 etapas o ITS Carrillo Puerto Lenguajes Y Autómatas 5 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales generaciones.  Primera generación: lenguaje máquina.  Segunda generación: se crearon los primeros lenguajes ensambladores.  Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol…  Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adobe.  Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP 1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES. Herramientas Desarrolladas En Programación De Sistemas  Editores de estructuras Un editor de estructuras toma como entrada una secuencia de órdenes para construir un programa fuente. El editor de estructuras no solo realiza las fuentes de creación y modificación de textos de un editor de textos ordinarios, sino que también analiza el texto del programa, imponiendo al programa fuente una estructura jerárquica apropiada. De esa manera el editor de estructuras puede realizar tareas adicionales útiles para la preparación de programas. Ejemplos: Editores de C, Pascal, Visual Studio (Fox Pro, Basic, etc.). Para desarrollar un programa en Fortran, el primer paso es obviamente, escribir el código fuente, utilizando un editor de texto disponible en la computadora y guardándolo en archivos texto de extensión .f, .f90, .f95, .for o de extensión que soporte el compilador y el sistema operativo de la computadora. En computadoras que funcionan bajo una versión de LINUX, lo usual que se utiliza, como editor de texto, es emacs. El Cornell Program Synthesizer (CPS). Es quizá el ejemplo más conocido y el más referenciado en la literatura. Ha servido de ejemplo para ITS Carrillo Puerto Lenguajes Y Autómatas 6 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales desarrollar otros. Permite programar en un subconjunto del lenguaje PL/I denominado PL/CS. Gandalf es un conjunto de varios subproyectos. Su objetivo principal fue crear un entorno completo de desarrollo de software, y no sólo un entorno de programación. Doxygen: Genera documentación de código C/C++ en forma de páginas web, incluyendo diversos índices, el código fuente coloreado e indexado, e incluso diagramas de dependencia entre módulos. Javadoc: Para lenguaje Java. Usa un formato prefijado de comentario para las descripciones, incluyendo marcas HTML embebidas y palabras clave introducidas con el símbolo @. Se generan documentos en forma de páginas web. AdaBrowse/AdaDoc/Ada2html: Son herramientas similares a las anteriores para código en lenguaje Ada. Igualmente generan páginas web. GVim es la versión para Windows del editor de Unix Vim, un editor para programadores altamente configurable. JEdit es un editor orientado a la programación. Komodo Edit es un editor para lenguajes dinámicos (Perl, PHP, Python, Ruby y TCL) y de páginas web (JavaScript, CSS, HTML y XML). Este programa es la versión libre de un programa comercial. Minimum Profit es un editor de texto para programadores. Notepad++ es un editor de código fuente para programadores basado en Scintilla para java y c.  Impresoras estéticas Una impresora estética analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo los comentarios pueden aparecer con un tipo de letra especial, y las proposiciones pueden aparecer con una indentación proporcional a la profundidad de su anidamiento en la organización jerárquica de las proposiciones. EJEMPLOS: Word, Excel, Power Point, Photoshop, etc.  Verificadores estáticos Un verificador estático lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte del análisis a menudo es similar a la que se encuentra en los compiladores de optimización así un verificador ITS Carrillo Puerto Lenguajes Y Autómatas 7 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales 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. Puede detectar errores de lógica, como intentar utilizar una variable real como apuntador, empleando las técnicas de verificación de tipos. Ejemplos: Editores de C y Pascal. Verificadores estáticos de sintaxis (como lint) permiten detectar muchos errores antes de la compilación. (Algo parecido a lo que se obtiene con la opción -fsyntax- only del compilador de GNU gcc).  Intérpretes: Un intérprete realiza las operaciones que implica el programa fuente. Para una proposición de asignación, por ejemplo, un intérprete podría construir un árbol y después efectuar las operaciones de los nodos con forme “recorre” el árbol. Muchas veces los intérpretes se usan para ejecutar lenguajes de órdenes, pues cada operador que se ejecuta en un lenguaje de órdenes suele ser una invocación de una rutina compleja, como un editor o un compilado Ejemplos: Los intérpretes (para lenguajes como Lisp o Basic, o para programas con sus propios lenguajes interpretados como Derive o Mathematica) Shells de sistemas operativos o de alguna aplicación como un SMBD. http://es.scribd.com/doc/159086023/Lenguajes-y-Automatas-i#download 1.6 ESTRUCTURA DE 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 (código fuente) a una de salida (código objeto). Un traductor se define como un programa que traduce o convierte desde un texto o programa escrito en un lenguaje fuente hasta un texto o programa equivalente escrito en un lenguaje destino produciendo, si cabe, mensajes de error. Los traductores engloban tanto a los compiladores (en los que el lenguaje destino suele ser código máquina) como a los intérpretes (en los que el lenguaje destino está constituido por las acciones atómicas que puede ejecutar ITS Carrillo Puerto Lenguajes Y Autómatas 8 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales el intérprete). La figura 1.1 muestra el esquema básico que compone a un compilador/intérprete. Tipos de traductores. Compiladores Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y como salida tiene un fichero ejecutable, es decir, realiza una traducción de un código de alto nivel a código máquina (también se entiende por compilador aquel programa que proporciona un fichero objeto en lugar del ejecutable final). Intérpretes Es como un compilador, solo que la salida es una ejecución. El programa de entrada se reconoce y ejecuta a la vez. No se produce un resultado físico (código máquina) sino lógico (una ejecución). Su principal ventaja es que permiten una fácil depuración. Entre los inconvenientes podemos citar, en primer lugar, la lentitud de ejecución, ya que al ejecutar a la vez que se traduce no puede aplicarse un alto grado de optimización. Otro inconveniente es que durante la ejecución, el intérprete debe residir en memoria, por lo que consumen más recursos. La figura 1.2 muestra los pasos a seguir en estos lenguajes para obtener una ejecución. ITS Carrillo Puerto Lenguajes Y Autómatas 9 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales En el proceso de traducción se identifican dos fases principales: Fase de Análisis Fase de Síntesis ITS Carrillo Puerto Lenguajes Y Autómatas 10 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales 1.7 FASES DE UN COMPILADOR. Definición de Compilador. Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, es decir programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (lenguaje máquina). Generando un programa equivalente a capaz de interpretar. FASES DE UN COMPILADOR. Análisis Léxico. En esta fase se lee los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos. A la secuencia ITS Carrillo Puerto Lenguajes Y Autómatas 11 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales de caracteres que representa un componente léxico se le llama lexema (o con su nombre en inglés token). Análisis Sintáctico. Los componentes léxicos se agrupan gramaticales que el compilador utiliza para sintetizar la salida. en frases Análisis Semántico. Intenta detectar instrucciones que tengan la estructura sintáctica correcta, pero que no tengan significado para la operación implicada. Generación de código Intermedio. Se puede considerar esta operación intermedia como un subprograma para una máquina abstracta, a esta representación debe tener dos propiedades importantes: debe ser fácil de producir y fácil de traducir al programa objeto. Optimización de Código. Se trata de mejorar el código intermedio, de modo que resulte un código de máquina más rápido de ejecutar. Generación de Código. Esta constituye la fase final de un compilador. Administrador de la tabla de símbolos. Se encarga de manejar los accesos a la tabla de símbolos, en cada una de las etapas de compilación de un programa. Manejador de errores. Es posible encontrar errores. 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.  Cada fase puede encontrar errores y debe tratarlo para continuar con la Compilación, permitiendo detectar más errores  Las fases de Análisis Sintáctico y Semántico manejan la mayoría de los errores  En el Análisis Semántico se detectan errores donde la estructura sintáctica es correcta pero no tiene significado la operación (Por. ej. sumar dos ID, donde uno es el nombre de una matriz y el otro un nombre de procedimiento). Programas Relacionados con un Compilador. Preprocesadores (producen la entrada para una computadora). Procesamiento de Macros Inclusión de archivos Preprocesadores “racionales” (estructura de control) Extensiones a lenguajes (bases de datos). Ensambladores Producen código ensamblador que se pasa a un ensamblador para su procesamiento (versión mnemotécnica del código de máquina: nombres de operaciones y nombres de direcciones de memoria). ITS Carrillo Puerto Lenguajes Y Autómatas 12 ISC-6B
  • Introducción a la Teoría de Lenguajes Formales ITS Carrillo Puerto Lenguajes Y Autómatas 13 ISC-6B