You are on page 1of 15

Introduccin

En 1946 se desarroll el primer ordenador digital. En un principio,


estas mquinas ejecutaban instrucciones consistentes en cdigos numricos que
sealan a los circuitos de la mquina los estados correspondientes a cada operacin.
Esta expresin mediante cdigos numricos se llam Lenguaje Mquina, interpretado
por un secuenciador cableado o por un microprograma. Pero los cdigos numricos de
las mquinas son engorrosos. Pronto los primeros usuarios de estos ordenadores
descubrieron la ventaja de escribir sus programas mediante claves ms fciles de
recordar que esos cdigos numricos; al final, todas esas claves juntas se traducan
manualmente a Lenguaje Mquina. Estas claves constituyen los llamados lenguajes
ensambladores, que se generalizaron en cuanto se dio el paso decisivo de hacer que
las propias mquinas realizaran el proceso mecnico de la traduccin. A
este trabajo se le llama ensamblar el programa.

Dada su correspondencia estrecha con las operaciones elementales de las mquinas,


las instrucciones de los lenguajes ensambladores obligan a programar
cualquier funcin de una manera minuciosa e iterativa. De hecho, normalmente,
cuanto menor es el nivel de expresin de un lenguaje de programacin, mayor
rendimiento se obtiene en el uso de los recursos fsicos (hardware). A pesar de
todo, el HYPERLINK "http://www.monografias.com/trabajos16/desarrollo-del-
lenguaje/desarrollo-del-lenguaje.shtml"lenguaje HYPERLINK
"http://www.monografias.com/trabajos14/lenguaje-ensamblador/lenguaje-
ensamblador.shtml"ensamblador segua siendo el de una mquina, pero ms fcil de
manejar. Los trabajos de investigacin se orientaron entonces hacia la creacin de un
lenguaje que expresara las distintas acciones a realizar de una manera lo ms sencilla
posible para el hombre. As, en 1950, John Backus dirigi una investigacin en I.B.M.
en un lenguaje algebraico. En 1954 se empez a desarrollar un lenguaje que permita
escribir frmulas matemticas de manera traducible por un ordenador. Le llamaron
FORTRAN (FORmulae TRANslator). Fue el primer lenguaje considerado de alto nivel.
Se introdujo en 1957 para el uso de la HYPERLINK
"http://www.monografias.com/trabajos15/computadoras/computadoras.shtml"computad
ora IBM modelo 704. Permita una programacin ms cmoda y breve que lo existente
hasta ese momento, lo que supona un considerable ahorro de trabajo. Surgi as por
primera vez el concepto de un traductor, como un programa que traduca un lenguaje
a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de
alto nivel y el lenguaje traducido de bajo nivel, se emplea el trmino compilador.
Resea Histrica
En 1946 se desarroll la primera computadora digital. En un principio, estas
mquinas ejecutaban instrucciones consistentes en cdigos numricos que
sealaban a los circuitos de la mquina los estados correspondientes a cada
operacin, lo que se denomin lenguaje de mquina. El primer compilador fue
escrito por Grace Hopper, en 1952 para el lenguaje de programacin A-0. En
1950 JOHN BACKUS dirigi una investigacin en IBM sobre un lenguaje
algebraico. En 1954 se empez a desarrollar un lenguaje que permita escribir
frmulas matemticas de manera traducible por un ordenador; le llamaron
FORTRAN (FORmulae TRANslator). Fue el primer lenguaje de alto nivel y se
introdujo en 1957 para el uso de computadora IBM modelo 704.
rboles de anlisis Gramatical

Qu es Gramtica:

Gramtica es la parte de la Lingstica que estudia el conjunto de normas y


principios que rige una lengua. Gramtica proviene del latn grammatca, y este
a su vez del griego (grammatiqu), que deriva de
(grmma), que significa letra, escrito.

Que es abstracto
La palabra abstracto en trminos genricos se refiere a algo no especfico, que
no cuenta con una realidad propia, es por eso, que al pensamiento humano se
le considera abstracto, porque de las cosas que una persona puede observar,
solo podr extraer ciertas caractersticas generales y obtener ideas de ellas.
rboles de anlisis Gramatical

Una derivacin proporciona un mtodo de construir una cadena particular de


terminales a partir de no terminal inicial.
Existen muchas derivaciones para la misma cadena, por ejemplo
usando la gramtica de operaciones matemticas para obtener la
cadena de tokens:
( nmero nmero ) * nmero

Tenemos:

Para intentar aclarar entonces la ambigedad proveniente de las derivaciones,


necesitamos una representacin para la estructura de una cadena de terminales
que abstraiga las caractersticas esenciales.
Esta representacin se hace con una estructura de rbol y se conoce como
rbol de anlisis gramatical.

Un rbol de anlisis gramatical correspondiente a una derivacin es un rbol


etiquetado en el cual los nodos interiores estn etiquetados por no terminales,
los nodos hoja estn etiquetados por terminales y los hijos de cada nodo interno
representan el reemplazo del no terminal asociado en un paso de la derivacin.

Por ejemplo la derivacin:

Corresponde al rbol de anlisis gramatical:

En el ejemplo el primer paso en la derivacin corresponde a los tres hijos del


nodo raz.
El segundo paso al hijo nmero de exp en el extremo izquierdo debajo
de la raz y de manera similar para los nodos restantes.
Podemos enumerar entonces los nodos internos del rbol gramatical
mediante el nmero de paso en el cual se reemplaza su no terminal asociado
en una derivacin correspondiente, quedando as:

El mismo rbol de anlisis gramatical tambin corresponde a otras derivaciones,


si tomamos el ejemplo anterior, correspondera tambin a:
Pero se aplicaran diferentes numeraciones a los nodos internos, por ejemplo la
primera de las otras derivaciones corresponde a:

En general un rbol gramatical corresponde a muchas derivaciones, que en


conjunto representan la misma estructura bsica para la cadena de terminales
analizada gramaticalmente. Pero se pueden distinguir derivaciones
particulares que estn asociadas de manera nica con el rbol de anlisis
gramatical.

Una derivacin por la izquierda es aquella en la cual se reemplaza el no


terminal ms a la izquierda en cada paso de la derivacin. Y corresponde a la
numeracin preorden de los nodos internos del rbol de anlisis grammatical.

Por consiguiente una derivacin por la derecha es aquella en la cual el no


terminal ms a la derecha se reemplaza en cada paso de la derivacin. Y
corresponde a la numeracin postorden inversa de los nodos internos del rbol
de anlisis grammatical.

Como un ejemplo mas complejo veamos el rbol de la derivacion de


(34-3)*42
Siendo esta una derivacin por la derecha,
y la numeracin correspondiente al rbol
de anlisis gramatical es una
numeracin postorden inversa.

Pero Cmo quedara entonces


la numeracin preorden de la
derivacin por la izquierda?
Derivaciones por la Izquierda y Derecha

Derivacin recursive por la izquierda: AAx|y


yxx:
Derivacin recursive por la derecha: AxA|y
xxy:

Arboles sintcticos abstractos


Un rbol de anlisis gramatical es una representacin til de la estructura de
una cadena de testigos o tokens, ya que estos aparecen como las hojas del
rbol y los nodos internos representan una derivacin en algn orden.
Sin embargo, un rbol de anlisis gramatical contiene mucha informacin,
mucho ms de lo que es absolutamente necesario para que un compilador
produzca cdigo ejecutable.

Para ver mediante un ejemplo lo anterior, veamos el rbol de anlisis gramatical


la expression simple 3+4:

El principio de la traduccin dirigida por sintaxis establece que el


significado, o semntica de la cadena 3+4 debera relacionarse directamente
con su estructura sintctica como se representa mediante el rbol de anlisis
gramatical.
Esto significa que el rbol debera dar a suponer que el valor de 3 y 4 se van a
sumar. En realidad se observa que esto se da a entender de la siguiente
manera: la raz representa la operacin de suma de los valores de los dos
subrboles exp hijos. Sin embargo existe una manera ms simple de
representar esta misma informacin, a saber, mediante el rbol:
De hecho podemos representar de manera similar la expresin

(34-3)*42

En este rbol los testigos o tokens de parntesis han desaparecido, aunque


todava representan precisamente el contenido semntico de restar 3 de 34,
para despus multiplicarlo por 42.

Los rboles sintcticos abstractos poseen ciertas caractersticas que se deben


conocer:

Representan abstracciones de secuencias de testigos o tokens del cdigo


fuente real, y las secuencias de testigos no se pueden recuperar a partir de
ellas, a diferencia de los rboles de anlisis gramatical.

Contienen toda la informacin necesaria para traducir de una forma ms


eficiente que los rboles de anlisis gramatical. Por lo que corresponde a la
verdadera estructura interna producida por un analizador sintctico (parser, en
ingles).

Los rboles sintcticos abstractos poseen ciertas caractersticas que se deben


conocer:

Un analizador recorrer normalmente todos los pasos representados por un


rbol de anlisis gramatical, pero por lo regular solo construir el rbol
sintctico abstracto o su equivalente.

Los rboles sintcticos abstractos pueden imaginarse como una representacin


de rbol de una notacin abreviada denominada sintaxis abstracta.
UTILIZACION FODA

ANLISIS FODA
FORTALEZAS OPORTUNIDADES
-Representar un dato -Almacenar un dato de tal
jerrquicamente. modo que su bsqueda sea
-Representar listas ordenadas eficiente.
de datos. -Como un flujo de trabajo para
-Gran cantidad y rpidos de la composicin de imgenes
manipulacin de datos digitales.
-Estructura recursiva. -Algoritmos de
encaminamiento.
-Un rbol puede ser
implementado fcil mente en
una computadora.
DEBILIDADES AMENAZAS
-Se puede llegar a formar un -Los grafos son ms utilizados
rbol sesgado o ladeado. ante problemas mas
-Cuando el rbol tiene muchos complejos.
nodos la bsqueda no es
optima

ANALISIS SITUACIONAL

En ciencias de la computacin y en informtica, un rbol es un


tipo abstracto de datos (TAD) ampliamente usado que imita la
estructura jerrquica de un rbol, con un valor en la raz y
subrboles con un nodo padre, representado como un
conjunto de nodos enlazados.
Su utilidad es muy amplia debido a la gran cantidad de
operaciones que se pueden realizar con los arboles, solo para
destacar algunos tenemos:
Enumerar todos los elementos
Enumerar la seccin de un rbol
Buscar un elemento
Aadir un nuevo elemento en una determinada
posicin del rbol
Borrar un elemento
Podar: Borrar una seccin entera de un rbol
Injertar: Aadir una seccin entera a un rbol
Buscar la raz de algn nodo
Representar cada nodo como una variable en el
montculo con punteros.
Representar el rbol con un vector
Y teniendo en cuenta un uso exclusivo para el compilador
tenemos al arbol de sintaxis abstracta.
Que es una estructura de datos usada extensamente en
compiladores, debido a su propiedad de representar la
estructura del cdigo de un programa. Un AST es usualmente
el resultado del analizador sintctico en la fase de un
compilador. A menudo sirve como un intermediario de la
representacin del programa a travs de etapas que requiere el
compilador, y tiene un impacto fuerte en la salida final del
compilador.

" La gramtica es un ente formal para especificar, de una


manera finita, el conjunto de cadenas de smbolos que
constituyen un lenguaje" . La gramtica genera o describe un
lenguaje.

La palabra abstracto en trminos genricos se refiere a algo no especfico, que


no cuenta con una realidad propia, es por eso, que al pensamiento humano se
le considera abstracto, porque de las cosas que una persona puede observar,
solo podr extraer ciertas caractersticas generales y obtener ideas de ellas.