Sei sulla pagina 1di 7

Instituto tecnolgico de Hermosillo

Ramn Gabriel burruel Valenzuela

LENGUAJES Y AUTOMATAS I

Ensayo de la Teora de Lenguajes Formales

02 de marzo de 2013

Teora de lenguajes formales Un lenguaje formal es un lenguaje en el cual sus reglas y smbolos esta especificados formalmente. Conceptos bsicos de los lenguajes formales *Alfabeto es el conjunto de smbolos de un lenguaje. Usamos normalmente las minsculas como alfabeto ={a, . . . , z} Gramtica formal o sintaxis es el conjunto de reglas de un lenguaje. Tipos de gramticas: Tipo 0: es la cual que incluye a todas las gramticas formales. Tipo 1: genera los lenguajes sensibles al contexto. Tipo 2: genera los lenguajes independientes al contexto. Lenguaje es una cadena de smbolos formados a partir de la gramtica. Ejemplo: Un conjunto de todas las palabras sobre {a,b}. *Cadena es una secuencia de smbolos formados por el alfabeto. *Cadena vaca es una es una cadena que no tiene smbolos.

*Longitud de una cadena es el nmero de smbolos que contiene una cadena. Trminos asociados a las cadenas Se a=cadena *prefijo de s : se aplica eliminando 0 o ms smbolos desde la derecha de s. *sufijo de s: se aplica eliminado 0 o ms smbolos desde la izquierda de s. *subcadena de s: se aplica eliminado un prefijo y un sufijo de s. *subsecuencia de s: se elimina un 0 o ms smbolos de s no necesariamente contiguos.

*Universo es el conjunto de palabras que se pueden formar sobre el alfabeto. Principales autores e iniciadores Friedrich Ludwig Gottlob Frege: Nacido en Wismar (Alemania) en 1848, Fue un Profesor en la Universidad de Jena, en 1879 public Conceptografa (Begriffsschrift), Desarrollo de la lgica de primer orden (operadores and, or, not, implicacin, para todo, existe), La notacin que utilizaba era bastante complicada. *Bertrand Russell: Publico Principia Mathematica en 1910. *Alfred North Whitehead: Fue profesor de Russell y escribi con l los Principia Mathematica. *David Hilbert: Trabajos en anlisis funcional, geometra, fundamentos de fsica cuntica y de relatividad general, lgica, etc. *Kurt Gdel: Publica en 1931 el artculo Sobre proposiciones formalmente indecidibles de Principia Mathematica y sistemas relacionados. Alan Mathinson Turing: Publica en 1936 el artculo Los nmeros computables, con una aplicacin al Entscheidungsproblem, inventa las mquinas de Turing. Lnea de tiempo *En 1879 Friedrich Ludwig Gottlob Frege Publico Conceptografa (Begriffsschrift). *En 1900 David hilbert propone el problema de la decisin. *en 1910 Bertrand Russell Publica Principia Mathematica. *en 1928 David Hilbert publica principios lgica terica. *En 1931 Kurt Gdel Publica en 1931 el artculo Sobre proposiciones formalmente indecidibles de Principia Mathematica y sistemas relacionados. *En 1936 Alan Mathinson Turing publica el artculo Los nmeros computables, con una aplicacin al Entscheidungsproblem. *En 1937 Alan mathinson turing publica un artculo desarrollado en teorema de godel. En 1938 Claus Elwood Shannon publica un articulo a symbolic analysis of realy and switching circuits. En 1950 Avran noom chowsky publica un articulo teora de la gramtica transformacionales.

*En 1956, Noam Chomsky cre la Jerarqua de Chomsky para organizar los distintos tipos de lenguaje formal. Operaciones de lenguajes *Unin (L1|L2) consiste en todas aquellas palabras o lenguajes que estn unidos *concatenacin (L1L2) consiste en que todas aquellas palabras de la forma vw donde v es una palabra L1 y w es una palabra L2. *La interseccin (L1&L2) consiste en todas aquellas palabras que estn contenidas tanto en L1 como en L2. *el complemento L1 consiste en todas aquellas palabras producibles sobre el alfabeto de L1 que no estn ya contenidas en L1. *El cociente L1/L2 consiste en que todas aquellas palabras v para las cuales existe una palabra w en L2 tales que vw se encuentra en L1. *La estrella L1* consiste en que todas aquellas palabras que pueden ser escritas de la forma W1W2...Wn donde todo Wi se encuentra en L1 y n 0. (Ntese que esta definicin incluye a en cualquier L*). *La intercalacin L1*L2 consiste de todas aquellas palabras que pueden ser escritas de la forma v1w1v2w2...vnwn; son palabras tales que la concatenacin v1...vn est en L1, y la concatenacin w1...wn est en L2. Intrprete, traductor y compilador Interprete Un intrprete es un programa informtico capaz de analizar y ejecutar otros programas escritos en un lenguaje de alto nivel. Para mejorar el desempeo, algunas implementaciones de programacin de lenguajes de programacin pueden interpretar o compilar el cdigo fuente original en una ms compacta forma intermedia y despus traducir eso al cdigo de mquina ejemplos: Perl, Python, MATLAB, y Ruby. Algunos aceptan los archivos fuente guardados en esta representacin intermedia ejemplos Python, UCSD Pascal y Java.

Ejemplos de lenguajes interpretados:


Perl PHP Javascript Logo ASP (hasta la versin 3) Python Tcl Ruby J# ASP

Un traductor es un programa que traduce o convierte desde un texto o programa escrito en lenguaje fuente hasta un texto o programa escrito en un lenguaje destino produciendo si cabe en caso que no produce un mensaje de error. Tipos de traductores *traductores de idiomas: como su mismo lo dije son lenguajes los cuales permiten traducir un lenguaje a otro ejemplo: espaol a ingles o ingles a espaol *compiladores: Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y salida como un fichero ejecutable. Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Tambin se puede decir que un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel Partes y fases de un compilador: *anlisis: Se trata de la parte de la comprobacin correcta del programa fuente e incluye las fases: - Anlisis lxico que consiste en la descomposicin del programa fuente en componentes lxicos - sintctico: agrupacin de los componentes lxicos en frases gramaticales -Anlisis semntico: comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico).

Estas fases comprende la fase de anlisis *sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases: - Generacin de Cdigo: normalmente se trata de cdigo intermedio o de cdigo objeto. -Optimizacin de Cdigo: en las que se busca obtener un cdigo lo ms eficiente posible. Estas fases comprende la fase de sntesis *front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte est compuesta por las fases comprendidas entre el: -Anlisis Lxico. - la Generacin de Cdigo Intermedio. *back-end: la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End. Diferencia entre intrprete, traductor y compilador: Los programas interpretados suelen ser ms lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexibles como entornos de programacin y depuracin y permiten ofrecer al programa interpretado un entorno no dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete esto es lo que se conoce como maquina virtual. Un intrprete se deferencia de los traductores en que mientras un traductor se traduce un programa desde su descripcin en un lenguaje de programacion al cdigo maquina del sistema, los intrpretes solo realizan la traduccin en el mientras se est analizando el cdigo o medida que se necesita, instruccin por instruccin y no guarda el resultado de la traduccin. Intrpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los intrpretes slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin por instruccin, y normalmente no guardan el resultado de dicha traduccin

Conclusin AL terminar este ensayo comprend que los lenguajes formales es el tema principal que es necesario comprender para poder crear o entender un lenguaje de programacion como tambin la creacin de programas que ayudan a los programadores a realizar la compilacin del cdigo de los lenguajes de programacion como logre tener ms conocimientos como estn constituidos los programacion utilizados para la creacin de programas. Adems pude comprender que siempre hay que recordar y darles su reconocimiento a las personas que estuvieron antes de nosotros que se esforzaron para poder tener todo lo que tenemos actualmente.