Está en la página 1de 5

I

Introduccin.
Los lenguajes de programacin son las herramientas principals con las que los
programadores trabajan con el sistema, es decir, un lenguaje de programacin es la
comunicacin entre el usuario y la mquina.
Inicialmente en la programacin de sistemas se utilizaban los llamados lenguajes de
primera generacin, estos lenguajes operan a nivel de codigo binario o mquina, de
modo que la programacin era difcil probarla por lo que se decide dar un pequeo
pasoen la programacin con la creacin de cdigo octal y hexadecimal.
El cdigo mquina fu reemplazado por lenguajes de segunda generacin o
ensambladores; stos permiten utilizer abreviaturas mnemnicas, como nombres
simblicos, y la abstraccin cambi de nivel flipflopa nivel registro.
Para substitur a los lenguajes ensambladores se crearon los lenguajes de tercera
generacin o lenguajes de alto nivel; con los cuales se pueden utilizer estructuras de
control basadas en objetos de datos lgicos, variables de tipo especfico y ofrecen un
nivel de abstraccin que permite la especificacin de datos, funciones o procesos, y
su control en forma independiente de la mquina.
Entre los lenguajes de tercera generacin tenemos: C, Java, C#, VB, COBOL, Pascal.
Para que una mquina pueda ejecutar un lenguaje de alto nivel debe ser trducido al
lenguaje mquina. A ste proceso se le denomina compilacin y la herramienta
correspondiente se denomina compilador.
La entrada del compilador es el cdigo fuente, es decir, el programa escrito en
lenguaje de alto nivel. El compilador lleva acabo la revision, anlisis y sntesis de la
entrada para que sea presentado en la salida el cdigo objeto, es decir, las
instrucciones en cdigo mquina.
1 Gen. -> 1010001110
2 Gen. -> Ax, B, C, ADD, SUB
3 Gen. -> Java, C#, COBOL
Tipos de Sistemas de Compilacin.
Por lo general los sistemas de compilacin traducen algn tipo de cdigo fuente o
cdigo objeto, de acuerdo a los diferentes tipos de cdigo y diversas formas de
funcionamiento; podemos distinguir diversos sistemas de compilacin.
-Ensamblador: Traducen programas escritos en lenguaje
ensamblador. Caracterizado por el uso de mnemnicos a cdigo
mquina.
-Compilador: Traducen programas escritos en lenguaje de alto nivel a
cdigo intermedio o a cdigo de mquina, el cual puede ser un
lenguaje ensamblador o alguna otra forma de representacin
intermedia. En terminus generals, un compilador est diseado para
generar cdigo de mquina eficiente pero no necesariamente ptimo.

-Intrprete: No genera cdigo objeto, solo analiza y ejecuta


directamente cada proporcin del cdigo fuente. Al no generarse
cdigo mquina de cierta forma, los intrpretes son independientes
de la mquina y por lo general se debe recompilar un intrprete para
que pueda ejecutarse en otro hardware distinto.
Ambientes de Compilacin.
Los compiladores producen a menudo como resultado del anlisis semntico una
forma de representacin intermedia del cdigo fuente, es como encontrar que en un
ambiente de red todos los compiladores de los distintos lenguajes generen el mismo
cdigo intermedio, el cual despus por un generador de cdigo es transformado en
cdigo objeto, esto tiene la ventaja de que si se cambia el sistema operativo o se
utiliza otro hardware, solo se debe reemplazar el generador de cdigo y no todo el
compilador.
Los generadores de cdigo intermedio aumentan la transportacin de cdigo, ya que
no es necesario cambiar todas las partes de la mquina para un hardware distinto.
Finalmente habr que combiner los cdigos de diferentes Fuentes para formar un
solo objeto ejecutable. A ste proceso se le denomina enlazado y la herrameinta
correspondiente se llama enlazador.
A continuacin se muestran los principals elementos que transforman un cdigo
fuente en un programa ejecutable.
Cdigo fuente
Tabla de Smbolos ->

Compilador
Analizador Lxico
Analizador Semntico
A.S. Cdigo Intermedio
Generador de Cdigo
Cdigo Objeto

}<- Manejo de Errores

<- Librera

Anlisis de Sntesis.
La compilacin de un programa consiste en analizar y sistetizar dicho programa, es
decir, determiner la estructura y el signififcado del cdigo fuente y traducer ese
cdigo fuente a un cdigo objeto equivalente.
Las tareas o fases principals de un compilador son:
-Anlisis Lxico.
-Anlisis Sintctico.
-Anlisis Semntico.
-Generacin de Cdigo.
Anlisis Lxico.
Podemos considerer a un programa como un flujo de carcteres que sirve como
entrada para el analizador lxico. La tarea del analizador lxico consiste en
reconocer los componenetes lxicos dentro de ese flujo de carcteres, es decir,
transformer un grupo de carcteres en un flujo de componenetes lxicos y con ello
poder distinguir entre palabrar reservadas y las variables.
El nmero de palabras determina el tamao del vocabulario mientras que el nmero
de components lxicos determina la longitd del programa.
Los identificadores, nombres o variables reconocidos se orgsanizan en una tabla de
smbolos, que es una estructura de datos que contiene un registro con campos de
nombre y atributos. El contenido de la tabla de smbolos, se complete con la tabla de
anlisis lxico y sintctico, y se utilizar para el anlisis semntico y la generacin de
cdigo.
Anlisis Sintctico.
Otro termino utilizado para el A.Sin. es el Anlisis Jerrquico. La palabra sintaxis
significa la estructura del orden de las palabras en una frase, la tarea del A.Sin. es
revisar si los smbolos aparecen en el orden correcto, es decir, revisar si el programa
fuente fu diseado con la sintaxis del lenguaje de programacin y combiner los
smbolos del cdigo fuente para formar unidades gramaticales.
h+x=x+y-x*y
En la instruccin anterios se detectan errors de sintaxis, dado que una de las reglas
de produccin dice: No se permiten operadores en el lado izquierdo de la
asignacin.

En general, las frases gramaticales se analizan y representan con los rboles de


anlisis sintctico o rboles sintcticos. En la siguiente figura se muestra el rbol
sintctico de la proposicin:
h=x+y-x*y
Identificador

Asignacin
Id

Expresin

Expresin

Id
H

Id

Expresin
Id

Anlisis Semntico.
El anlisis semntico necesariamente debe considerer el significado grammatical, es
decir, se debe interpretar. sto se puede lograr traduciendo la entrada a una forma
de representacin intermedia.
En el ejemplo anterior, si nunca hubieramos definido a la variable H del rbol
sintctico, la preposicin no tendrila sentido, En forma semejante la asignacin de
una variable real a una variable booleana tampoco tendrila sentido, ste tipo de
inconsistencias seran reconocidas por el analizador semntico.
Generacin de Cdigo.
El cdigo objeto se genera en la ltima fase de la compilacin. En sta fase, el cdigo
intermedio se transforma en cdigo de mquina y la memoria necesaria quedar
determinada. Esto es la ltima fase que depende del hardware, ya que por los
general los conjuntos de instrucciones varan de una mquina a otra.
II
Anlisis Lxico.
A continuacin se muestra la interrelacin entre el analizador lxico y el analizador
sintctico. En ste caso suponemos que el analizador lxico acta como servidor del
analizador sintctico. El analizador lxico lee carcteres de entrada (el cdigo
fuente) y produce secuencias de smbolos y valores de smbolos que sern
analizados por el analizador sintctico. Por lo tanto el porceso de anlisis lxico o de
reconocimiento puede entenderse como la transformacin de un flujo de carcteres
en un flujo de smbolos reconocidos y reducido. En ste caso el trmino reducido
significa que la entrada es filtrada para eliminar aquellos elementos del texto del
programa que solo servirn para hacer legible el programa.

CdigoFuente -> A.Lxico <-> A.Sintctico


^
^
| tabla de smbolos |
Salto de Separadores.
Los espacios, tabulaciones, comentarios y saltos de lnea se denominan separadores
y pueden ser muchos en un cdigo fuente, por lo tanto el analizador lxico los debe
detector y eliminar.
Reconocimeinto de Operadores.
Es fcil reconocer smbolos como +,-,*,/ porque cada uno de ellos tiene un solo
character que no comienza antes de cualquier otro smbolo, sin embargo smbolos
como <,>,<=,>= comienzan con el ultimo carcter. En estos casos el A.L. tiene que
analizar o examiner un character por adelantado (preanlisis) para analizar el
character en forma correcta. As podemos considerer que ya se ha ledo el primer
character del siguiente smbolo. Esto tambin sucede cuando se analiza un nmero,
una variable, un identificador, un smbolo de palabra o palabras reservadas.
El reconocimeinto de identificadoreso variables y palabras clave o reservada es una
tarea sencilla, lo difcil que tiene que afectar al A.L., es distinguir entre
identificadores y palabras reservadas, lo cual ha de hacerser con la tabla de
smbolos o con una estructura de datos que contenga todas las palabras reservadas.
Nmeros
El A.L. debe transformar un character numeric por su smbolo en su valor
correspondiente.
Tabla de Smbolos.
Es una estructura de informacin para manipular los nombres o identificadores y
palabras reservadas del cdigo fuente. Se utiliza durante la comprobacin
semnticao dependiente del contexto. Adems del proceso de generacin de cdigo.
La informacin almacenada en la table ser acompletada durante la etapa de anlisis
y luego se emplear en la generacin de cdigo.
En general una table de smbolos contiene diversos campos ente los que estn
incluidos Nombre y atributo.
La informacin almacenada en la table de smbolos vara de un compilador a otro, es
decir, la informacin que se encuentra en la table de smbolos depende dl lenguaje y
del diseador del compilador.

También podría gustarte