Anda di halaman 1dari 7

Como surgen los compiladores

- En 1954: IBM desarrolla su modelo 704 (Fortran)


- Software de desarrollo excede el costo del hardware
- La programacin se realiza en ensamblador
- Programacin en forma de interpretadores.
- Cdigo veloz.
- Se ejecutan de 10 a20 veces ms rpido que el ensamblador.
- John Backus: Un programa que traduzca expresiones de alto nivel en un
cdigo nativo.
- 1954 1957 Proyecto dFORTRAN I
- Surge el Primer compilador
- Compiladores modernos conservan sus lneas bsicas


Compiladores, Intrpretes y Programas similares

- Qu es un compilador?

Es un programa que traduce un programa escrito en un lenguaje fuente (alto
nivel ) a un programa objeto escrito en lenguaje de bajo nivel (de mquina).



Lenguaje Fuente Compilador Lenguaje Objeto


Mensajes de error


- Qu es un Interpretador?

Es un programa que tiene por entrada un programa escrito en lenguaje fuente
(Alto nivel) y como salida ejecuta las acciones indicadas por el lenguaje fuente.

- Traductor

Recibe una entrada en un lenguaje y produce una salida en otro lenguaje.

- Programas similares

- Preprocesadores (Ej.: 4GLs, UILs)
- Extensiones a lenguajes. (Ej.: Lenguajes embebidos ESQL/C, Graficacin,
etc..)
- Convertidores de cdigo. (Traductores de lenguajes, Generadores de
cdigo).

- Aplicaciones que utilizan tcnicas de compiladores.
- Editores de texto
- Formateadores de texto
- Reconocimiento de patrones.


FASES DE UN COMPILADOR

























- Relacin entre fases:
- Cada frase toma una representacin y entrega otra relacionada en forma
lgica.

- Por que en frases?
- Por que se requieren por la necesidad de facilitar, verificar, optimizar y
ejecutar con eficiencia.




Anlisis
Lexicogrfico
Anlisis
Sinttico
Anlisis
Semntico
Generacin
de cdigo
Intermedio
Optimizacin
de Cdigo
Generacin
de Cdigo
Lenguaje
Fuente
Muestras Arbol de
anlisis
Arbol
Modificad
o
Cdigo
Intermedi
o
Cdigo
Intermedi
o
Programa
Objeto

Tablas de
Informacin

Manejador
de Errores
Anlisis Sntesis
ANALISIS LEXICOGRAFICO

- El primer paso para comprender una oracin es el reconocimiento
de palabras
- Son la unidad ms pequea despus de las letras.

- El entender palabras no es una labor trivial
Esta es una oracin.
Taes anu cionaro.

- La letra mayscula inicia la oracin
- El espacio en blanco es un separador.
- El punto indica la terminacin de la oracin.

- Explora en forma secuencial el programa fuente y lo separa los
caracteres en grupos para obtener los elementos bsicos o
muestras (Tokens):

- Palabras clave: DO, WHILE, IF, integer, etc.
- Identificadores: total, id, x40, prentj, etc.
- Smbolos Operadores: +,-,*,/,=,etc.
- Representacin grfica: Iconos, Figuras, etc.

- Salida:

- Cadena de muestras que pueden asociarse con smbolos utilizados por el
Anlisis sintctico.
- Informacin para la tabla de smbolos.

ANALISIS SINTACTICO

- Una vez que las palabras son comprendidas el segundo paso es entender la
estructura de la oracin.
Esta materia es una gran clase

- Verifica que las muestras obtenidas por el Analizador lxico se encuentren
dentro de la estructura sintctica del lenguaje.

- Identifica ciertas clases sintcticas definidas por la gramtica del lenguaje y
produce un rbol donde las clases son los nodos y las muestras las hojas.





Ejemplo: Lenguaje de programacin
















Gramtica: A,B,C=, +, declaracin, expresin, identificador.














- El rbol de anlisis sintctico se usa en etapas subsecuentes.
- Entendida la estructura de la oracin, el tercer paso es comprender el
significado.
- Verifica el significado de la oracin con respecto a las reglas semnticas del
lenguaje.
- Realiza una verificacin esttica del programa y genera una representacin
intermedia.
- Produce otro rbol y le aade significado.






Esta Materia es una gran clase
adjetivo sustantivo
verbo
artculo adjetivo sustantivo
predicado sujeto
oracin
declaracin
expresin
identificador
= expresin
identificador identificador
C
A B
+
ANLISIS SEMNTICO
- Los lenguajes de programacin definen reglas estrictas para evitar ambigedades.
- Ejemplo:
o Si A y B son de tipo real, entonces C debe ser de tipo real, o si el lenguaje lo
permite se truncarn los decimales.

GENERADOR DE CDIGO INTERMEDIO
- Utiliza la estructura generada por etapas anteriores para generar estructuras mas simples.
- Debe ser fcil de producir y fcil de traducir.
- Muchos compiladores ejecutan mas de una traduccin intermedia.
- El lenguaje intermedio es usado porque hace disponible caractersticas ocultas para los
niveles de alto nivel.
- La representacin mas popular es el cdigo de tres direcciones.

OPTIMIZADOR DE CDIGO
- Mejora el cdigo intermedio.
- Produce otro programa que realiza la misma funcin pero que permita:
o Generar programas ms rpidos.
o Usar menos memoria.
- Algunos de los mtodos ms conocidos son:
o Doblado de constantes.
o Reconocimiento de subexpresiones iguales.
o Optimizacin de ciclos.

GENERACIN DE CDIGO
- Fase final del compilador.
- Produce el cdigo objeto (ensamblador generalmente).
- Asignacin de memoria por dato.
- Referencias a bibliotecas.
- Asigna variables a registros.

TABLAS DE INFORMACIN
- Tablas de smbolos.
- Tablas de anlisis sintctico.
- Instrucciones del significado de muestras.
- Referencias a variables, tipos, procedimientos, funciones, etc.
- Tabla de representacin intermedia (temporales).
- Tabla de literales.
- Tabla de ciclos iterativos.

MANEJADOR DE ERRORES
- Deteccin y reportes de errores.
- Debe permitir continuar el anlisis a la siguiente fase.
- En las primeras fases (lxico y sintctico) se detecta la mayor cantidad de errores.





FASES DE UN COMPILADOR

















































pos = inicio + factor * 0.5
Analizador Lexicogrfico
id1 = id2 + id3 * 0.5
Analizador Sintctico
Analizador Semntico
Generador de Cdigo Intermedio
temp1 = id3 + 0.5
temp2 = id2 + temp1
id1 = temp2
Optimizador de ciclo de Cdigo
Generador de Cdigo
temp1 = id3 + 0.5
id1 = id2 + temp1
MOVE id3, R2
MUL 0.5 * R2
MOVE id2, R1
ADD R2, R1
MOVE R1,id1

II. GRAMTICAS Y LENGUAJES

II.1. Lenguajes.
II.2. Gramtica.
II.3. Derivaciones y rboles.
II.4. Ambigedad.
II.5. Clasificacin de gramticas.


LENGUAJES
- Conjunto de oraciones con estructura bien definida.
- Un metalenguaje es un lenguaje que sirve para definir otros lenguajes y se utiliza para
definir las reglas que definen un lenguaje.
o Ejemplo: verbo, predicado, sujeto, etc. son partes del metalenguaje del lenguaje
espaol.

ELEMENTOS DE UN LENGUAJE
- Alfabeto:
o Un alfabeto T es un conjunto, finito de smbolos.
o Smbolos terminales del lenguaje.
o T
*
se designa para todas las posibles concatenaciones de los componentes de un
alfabeto.
o Por lo tanto un lenguaje L c T
*

o Ejemplo: cdigo de mquina basado en el alfabeto binario (0 ,1).
- Cadena:
o Secuencia finita de elementos del alfabeto.
o |x| longitud de la cadena x.
o Ejemplo: la cadena w=01010 y |01010|=5
o |e|=0 cadena vaca.
o xy concatenacin de las cadenas x y y.
o Ejemplo: x=01, y=11, xy=0111; xe=ex=x.
- Smbolos No-Terminales:
o Conjunto N de smbolos que no estn en T.
o Representan clases sintcticas o estructuras sintcticas.
o Smbolos que forman parte del metalenguaje.
o NT=C
- Vocabulario:
o V=NT
o V
*
conjunto de todas las cadenas en V.
- Produccin:
o Regla para la sustitucin de cadenas por la clase sintctica que representan.
o Tiene la forma o| donde: o es un smbolo No-Terminal y | es una cadena de
smbolos. Significa se define como.

Anda mungkin juga menyukai