INTRODUCION, CONCEPTOS, CARACTERISTICAS Y COMPONENTES DE LOS COMPILADORES
CLASIFICACI
ON DE LOS LENGUAJES DE PROGRAMACION
La programación de computadoras se realiza en los llamados lenguajes de programación, éstos posibilitan la comunicación entre el programador y la computadora, a través de un conjunto de instrucciones u órdenes especificadas por el lenguaje. Un lenguaje de programación puede definirse como: “Notación formal para describir algoritmos o funciones que serán ejecutados por una computadora”, o bien, un lenguaje para comunicar instrucciones al computador.Diferentes puntos de vista para clasificar los lenguajes de programación:
1. Su grado de independencia con la máquina.
a) Lenguaje máquina (representación binaria o hexadecimal.): El lenguaje de máquina de una computadora consta de cadenas de números binarios (ceros y unos) y es el único que "entienden" directamente los procesadores.
b) Lenguaje ensamblador o de bajo nivel (versión simbólica de un lenguaje máquina): La comunicación en lenguaje de máquina es particular de cada procesador que se usa, y programar en este lenguaje es muy difícil y tedioso, por lo que se empezó a buscar mejores medios de comunicación con ésta.
c) Lenguaje de medio nivel (lenguaje C).
d) Lenguaje de alto nivel (FORTRAN, COBOL, Pascal): Los primeros programas ensambladores producían sólo una instrucción en lenguaje de máquina por cada instrucción del programa fuente. Para agilizar la codificación, se desarrollaron programas ensambladores que podían producir una cantidad variable de instrucciones en lenguaje de máquina por cada instrucción del programa fuente. Dicho de otra manera, una sola macroinstrucción podía producir varias líneas de código en lenguaje de máquina.
2. La forma de sus instrucciones y la forma de procesar el código fuente:
A) Lenguajes imperativos o procedimentales.
B)Lenguajes declarativos, funcionales o aplicativos.
C)Lenguajes orientados a objetos.
3. Por generaciones:
Traductores (translators): Un traductor es un programa que procesa un texto fuente destino.
Compiladores (compilers): Un traductor que transforma textos fuente de lenguajes de alto nivel a lenguajes de bajo nivel se le denomina compilador.
Ensambladores (assemblers).
Interpretes (interpreters): Los intérpretes son programasque simplemente ejecutan las instrucciones que encuentran en el texto fuente. En muchos casos coexisten en memoria el programa fuente y el programa intérprete.
Editores (editors).
ARQUITECTURA DE LA COMPUTADORA
En la disciplina de los procesadores de lenguajes, los compiladores son los más utilizados por los
programadores para el desarrollo de aplicaciones. En el caso particular del desarrollo de compiladores,
hay que tener bien definida la arquitectura de la computadora.
¿Cómo se pueden ejecutar las aplicaciones desarrolladas para otras arquitecturas de
computadoras en la nueva arquitectura?
El problema planteado anteriormente no sólo es aplicable a la construcción de nuevas arquitecturas,
sino también cuando es necesaria la compatibilidad de aplicaciones entre diferentes sistemas operativos
y arquitecturas de computadoras.
Un intérprete software o emulador de software es un programa en código binario que lee una a una
las instrucciones binarias de la arquitectura antigua de las computadoras, que se encuentran en un
fichero ejecutable, y las interpreta. Los intérpretes no son muy rápidos, pero pueden construir y adaptar
a distintas arquitecturas sin excesivos costos de desarrollo.
Un emulador hardware trabaja de forma similar a un intérprete de software, pero está implementado en
HW de forma que decodifica las instrucciones de la arquitectura antigua y las traduce a la nueva
arquitectura.
Un traductor entre códigos binarios o ensambladores son conjuntos de instrucciones de la nueva
arquitectura que reproducen el comportamiento de un programa en la arquitectura antigua (la
información de la máquina antigua se almacena en registros de la nueva máquina).
Un compilador nativo es aquél que toma un programa fuente antiguo y lo vuelve a compilar (recompilar)
con compiladores desarrollados para la nueva arquitectura.
GRAMATICAS DE LOS LENGUAJES DE PROGRAMACION
FASES DE LOS COMPILADORES
Fase de Análisis:
En el llamado análisis lexicográfico o léxico, el compilador revisa y controla que las "palabras"
estén bien escritas y pertenezcan a algún tipo de token (cadena) definido dentro del lenguaje,
como por ejemplo que sea algún tipo de palabra reservada, o si es el nombre de una variable
que este escrita de acuerdo a las pautas de definición del lenguaje.
En el análisis sintáctico como su nombre lo indica se encarga de revisar que los tokens estén
ubicados y agrupados de acuerdo a la definición del lenguaje. Dicho de otra manera, que los
tokens pertenezcan a frases gramaticales validas, que el compilador utiliza para sintetizar la
salida.
El análisis semántico se encarga de revisar que cada agrupación o conjunto de token tenga
sentido, y no sea un absurdo.
Fase de Síntesis:
Etapa de generación de código intermedio, aunque algunos compiladores no la tienen, es
bueno saber de su existencia, en esta etapa se lleva el código del programa fuente a un
código interno para poder trabajar más fácilmente sobre él.
En la etapa de optimización de código, se busca obtener el código más corto y rápido
posible, utilizando distintos algoritmos de optimización.
Etapa de generación de código, se lleva el código intermedio final a código maquina o
código objeto, que por lo general consiste en un código maquina re localizable o código
ensamblador.
La tabla de símbolos no es una etapa del proceso de compilación, sino que una tarea, una
función que debe realizar el proceso de compilación.
No hay comentarios:
Publicar un comentario