You are on page 1of 12

INTRODUCCIN

En esta investigacin; formalmente en matemticas, lgica, y las ciencias computacionales, un lenguaje formal es un conjunto de palabras (cadenas de caracteres) de longitud finita formadas a partir de un alfabeto (conjunto de caracteres) finito. Informalmente, en este trmino lenguaje formal se utiliza en muchos contextos (en las ciencias, en derecho, etc.) para referirse a un modo de expresin ms cuidadoso y preciso que el habla cotidiana. Es hasta finales de la dcada de 1990, el consenso general era que un lenguaje formal, en el sentido que trata este artculo, era en cierto modo la versin lmite de este uso antes mencionado: un lenguaje tan formalizado que poda ser usado en forma escrita para describir mtodos computacionales. Sin embargo, hoy en da, el punto de vista de que la naturaleza esencial de los lenguajes naturales (sin importar su grado de formalidad en el sentido informal antes descrito) difiere de manera importante de aquella de los verdaderos lenguajes formales (en el sentido estricto de este artculo) gana cada vez ms adeptos. La Computacin Simblica, es el manejo (satisfactorio, adecuado), de smbolos que representan descripciones (modelos) que hacen referencias a otros objetos (semntica), mediante procedimientos explcitos (objetivos) finitos o algoritmos. En el consentimiento de la interaccin humana, los smbolos adquieren su carcter perceptible y referencial (semntico) constituyendo una base para fundar acciones recurrentes satisfactorias de las personas. En general, se entiende que el lenguaje se caracteriza como una forma de hablar o describir algo. Dentro de ellos, los lenguajes formales son aquellos que estn basados en reglas bien descritas as que definen con exactitud la pertenencia o no de palabras dadas. Formalmente un lenguaje no es ms que "el conjunto de todas las palabras que pertenecen a l" (normalmente una cantidad infinita). As, por ejemplo, el lenguaje castellano, es el conjunto de todas las palabras, frases o discursos, correctamente formadas con smbolos del alfabeto castellano. Todo ello, sin importar el significado que alguien les pueda asociar.

ALFABETO
Se llama alfabeto a un conjunto finito, no vaco, cuyos elementos se denominan letras o smbolos. Se definen los alfabetos por la enumeracin de los smbolos que contiene. Ejemplos : A1={A, B, C, D, E, F , G, ..., Z} A2={0,1} A3={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} A4={(, )} Alfabeto El alfabeto es la agrupacin de smbolos con un orden determinado utilizado en el lenguaje escrito que sirve como sistema de comunicacin. La palabra alfabeto se deriva del nombre de las dos primeras letras griegas alfa () y beta (). Un Alfabeto es cualquier conjunto finito, no vaco. Ejemplo 1 Sea _ = {0, 1, 2, 3, . . . , 9} donde 0 2 _

CADENAS
Las cadenas de caracteres, tambin llamadas palabras, son la piedra angular en la Ciencia de la Computacin. El alfabeto sobre el cual las cadenas o palabras se definen puede variar con respecto a la aplicacin que se est tratando. Para nuestros propsitos definiremos un alfabeto como un conjunto finito de smbolos que denotaremos usualmente por letras griegas maysculas como _ o . Ejemplo 1. _1 = {0, 1}. _2 = {a, b, c, d, e, f, g, h, i, j, k, l,m, n, o, p, q, r, s, t, u, v,w, x, y, z}. = {0, 1, x, y, z}. Ntese que, puesto que un alfabeto es simplemente un conjunto finito no vaco,

Dados dos alfabetos _1 y _2 se tiene: 1. _1 _2 = {a | a _1 o a _2} es un alfabeto. 2. _1 _2 = {a | a _1 y a _2} es un alfabeto si es distinto del conjunto vacio. 3. _1 \ _2 = {a | a _1 y a / _2} es un alfabeto si es distinto del conjunto vacio. 4. _2 \ _1 = {a | a _2 y a / _1} es un alfabeto si es distinto del conjunto vacio. Una cadena o palabra sobre un alfabeto es una sucesin finita de smbolos sobre ese alfabeto, usualmente escritos uno al lado de otros sin ningn tipo de separacin. Si consideramos 01001 esta es una cadena para los alfabetos _1 y . Del mismo modo abracadabra es una cadena del alfabeto _2.

Si w es una cadena en el alfabeto, _ la longitud de w que denotamos por |w| es el Numero de smbolos que contiene. La cadena de longitud 0 es llamada la cadena vaca y se denota por. La cadena vaca hace el papel del cero en el sistema numrico. Ejemplo 2. Si w = 121 es una palabra sobre el alfabeto _ = {1, 2, 3} entonces |w| = 3. Ejemplo 3. |"| = 0. Si w tiene longitud n entonces podemos escribir w = w1w2 wn donde cada wi _ para i = 1, 2, . . . , n. El inverso de w, que denotaremos por wR, es la cadena obtenida escribiendo w en el orden inverso, esto es, wR = wnwn1 w1. Ejemplo 4. Si w = abracadabra entonces wR = arbadacarba. Ejemplo 5. Si w = 1221 entonces wR = 1221 = w, cuando una cadena o palabra cumple que wR = w se le llama palndromo. La cadena z es una subcadena si aparece incluida en w. Ejemplo 6. La cadena cad es una subcadena de abracadabra. Si tenemos una cadena x = x1x2 xm de longitud my una cadena y = y1y2 yn de longitud n, la concatenacin de x e y, que escribiremos como xy es la cadena obtenida aadiendo y al final de x, esto es, xy = x1x2 xmy1y2 yn.

LENGUAJES
Un lenguaje L sobre un alfabeto _ es un subconjunto de, es decir L Sea L = ;, es el lenguaje vaco. Sea L = {_} lenguaje con la cadena vaca. ; 6= {_} L = __ Observacin Todo lenguaje L satisface; _ L _ __ y puede ser finito e infinito. Las lenguas son sistemas ms o menos complejos, que asocian contenidos de Pensamiento y significacin a manifestaciones simblicas tanto orales como escritas. Aunque en sentido estricto, el lenguaje sera la capacidad humana para comunicarse Mediante lenguas, se suele usar para denotar los mecanismos de comunicacin no Humanos (el lenguaje de las abejas o el de los delfines), o los creados por los hombres con fines especficos (los lenguajes de programacin, los lenguajes de la lgica, los lenguajes de la aritmtica...). Nosotros, vamos a definir el lenguaje como un conjunto de palabras. Cada lenguaje est compuesto por secuencias de smbolos tomados de alguna coleccin finita. En el caso de cualquier lengua natural (castellano, ingls, francs...), la coleccin finita es el conjunto de las letras del alfabeto junto con los smbolos que se usan para construir palabras (tales como el guin, el apstrofe en el caso del ingls...). De forma similar, la representacin de enteros, son secuencias de caracteres del conjunto de los dgitos {0,1,2,3,4,5,6,7,8,9}. Un conjunto no vaco y finito de smbolos se conoce como alfabeto. Si es un alfabeto, y denota que es un smbolo de. Por tanto, si ={0,1,2,3,4,5,6,7,8,9}, podemos decir que 0. Obsrvese, que puesto que un alfabeto es simplemente un conjunto finito no vaco, dados 1 y 2 alfabetos, se tiene que 12 tambin lo es. Es ms, 12, 12 y 21, tambin son alfabetos.

Una secuencia finita de smbolos de un determinado alfabeto, se conoce como palabra sobre dicho alfabeto. Nuestra experiencia, nos lleva a identificar el trmino palabra con las palabras de cualquier lenguaje natural, por esta razn, a menudo se usa el trmino cadena en lugar de palabra, con el fin de evitar esta idea preconcebida. Se tratarn igual los trminos cadena y palabra. Cada smbolo de un alfabeto, es una cadena sobre dicho alfabeto. La cadena vaca, es una palabra sobre cualquier alfabeto. La palabra vaca, es una secuencia vaca de smbolos, tomados de cualquiera que sea el alfabeto en cuestin. Los lenguajes, pueden ser bastante grandes, como lo es el caso de todas las palabras "correctas" que se pueden formar en castellano sobre el alfabeto castellano. Dado que un lenguaje es un conjunto de cadenas, se puede tener el lenguaje compuesto por ninguna cadena, el lenguaje vaco. ste, no es el mismo lenguaje que el que consta de la cadena vaca.

TIPOS DE LENGUAJES
Chomsky clasificar los lenguajes formales de acuerdo a una jerarqua de cuatro niveles, conteniendo cada uno de todos los siguientes. El lenguaje ms general ser, pues, de tipo 0, y no posee restriccin alguna. Este conjunto engloba el conjunto de todos los lenguajes posibles. En el segundo nivel aparecen los lenguajes de tipo1, tambin llamados lenguajes sensibles al contexto, al permitir que el papel de las palabras dependa de la posicionen que aparezcan(es decir, del contexto).La mayor parte de los lenguajes de ordenador pertenecen a este tipo. En tercer lugar aparecen los lenguajes de tipo 2, o lenguajes independientes del contexto. En ellas el significado de una palabra es independiente del lugar que ocupa en la frase. Finalmente, los lenguajes de tipo 3,o lenguajes regulares ,son los que presentan una estructura ms sencilla. Resulta curioso observar como paralelamente a la jerarqua de lenguajes aparece otra de mquinas abstractas equivalentes, como se observa en el esquema siguiente:

Cada uno de estos tipos de mquinas es capaz de resolver problemas cada vez ms complicados, hasta llegar a las mquinas de Turing. Como descubri Turing, existen una serie de problemas que no son computacionalmente abordables y que reciben el nombre de problemas no enumerables.

La relacin estrecha entre la Teora de Lenguajes Formales y la Teora de Autmatas se pone de manifiesto en este tema. Se establece un isomorfismo entre ambas, estableciendo una conexin entre la clase de lenguajes generados por ciertos tipos de gramticas y la clase de lenguajes reconocibles por ciertas mquinas. los lenguajes del tipo 0 con los lenguajes reconocidos por una mquina de Turing, los lenguajes de tipo 1 con los Autmatas Linealmente Acotados, los lenguajes de tipo 2 con los Autmatas a Pila los lenguajes de tipo 3 con los Autmatas Finitos, los Autmatas Probabilsticos y los Autmatas de Clulas de McCulloch-Pitts. Cada uno de estos tipos/mquinas aade restricciones al tipo/ mquina del nivel superior.

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

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 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.

Conclusin

You might also like