You are on page 1of 7

Compiladores e Interpretes

EPCI - UNPRG

COMPILADORES E INTERPRETES
Anlisis semnt ico: Estudia el significado de la sentencia Procesadores de lenguaje: Convier te un programa fuente hecho en un lenguaje fuente a un programa objeto hecho en un lenguaje objeto. En consecuencia, es un programa que esta hecho en maquina virtual y es transformado a un programa que entienda la maquina real. Observe el esquema: El lenguaje objeto es creado por el compilador, el cual debe estar preparado para el sistema operativo en el que ser ejecutado y a la arquitectura respectiva del hardware. Por ejemplo, existen compiladores que a un programa fuente lo transforman a ejecutable para Windows (arquitectura CISC) o para MacOS (arquitectura RISC).
Compilador Program a fuente (hecho en Pascal) (hecho en lenguaje C++) Maquina Virtual (Generado por SO) para Programa fuente (hecho en Leng. Fuente)

CONVERTIR para

Maquina Real

Programa objeto (hecho en Leng. Objeto) Instrucciones mquina

Firmware (microprograma ubicado en la ROM) Especie de caja negra (no perceptible por el usuario)

(o para un SO Windows - CISC) Program a objeto (o para un SO MacOS - RISC)

Lenguaje fuente

Lenguaje de implementacin

Lenguaje objeto

Un SO de arquitectura propietaria son aquellas que restringen el desarrollo de aplicaciones slo a esa misma familia de SO, por ejemplo, Windows: sus aplicaciones no pueden ser ejecutadas por otros SO tal como MacOS o LINUX
Interprete Java (utiliza bytecode) Lenguaje de implementacin C++ Sistema Computacional
P or eso se dice que el Java es el sucesor del C ++

Un SO de arquitectura abierta es aquel en que sus aplicaciones pueden ser ejecutadas en cualquier otro SO, como por ejemplo LINUX puede ser instalado en cualquier arquitectura como CISC o RISC, es decir se puede instalar en una PC o una Mac (Apple) respectivamente. Existen decompiladores que transforman un exe a cdigo fuente. Pero, debe saberse de antemano cual fue el lenguaje que lo origin.

Ing. Luis Reyes Lescano

Compiladores e Interpretes

EPCI - UNPRG

Tipos de procesadores de lenguaje Traductores


P rograma F uente (Len g. de alto niv el o medio niv el) P rograma objeto (Len g. objeto o mquina) P rograma F uente (Len g. de ensamble) P rograma objeto (Len g. objeto o mquina)

Compilador

Ensamblador

Funcionalidad: Toma todo el programa fuente y genera las instrucciones mquina (Prog.objeto), inclusive genera el exe que es igual al Prog.objeto+cargadores (rutinas de ejecusin del SO). Interpretes
P rograma F uente (Len g. de alto niv el) P rograma objeto (Len g. objeto o mquina)

Interprete

Funcionalidad: Toma el programa fuente y genera instr ucciones mquina necesarias sentencia por sentencia (fuente) sobre la marcha. Muchas veces no genera el ejecutable y para esto nec esita del software de apoyo (linker). Estructura de un compilador

Etapa de Anlisis

Anlisis Lxico Anlisis Sintctico Anlisis Semntico Tabla de smbolos uniformes

Etapa de Sntesis

Generacin cdigo interno Optimizador Generacin cdigo final

Tabla de manejo de errores

PROG. FUENTE

PROG. OBJETO

ANALISIS LEXICO Es un anlisis lineal Se da de izquierda a derecha Necesita de un analizador lxico o scaner

Ing. Luis Reyes Lescano

Compiladores e Interpretes

EPCI - UNPRG

Funcionalidad: Se encarga de disponer el programa fuente en unidades sintcticas, es decir, palabras con significado propio, denominados componentes lxicos o tokens. Por ejemplo: palabras reservadas, identificadores, constantes, operadores aritmticos, operadores relacionales, operadores lgicos, smbolos de asignacin, smbolos de puntuacin o caracteres especiales del lenguaje, etc. Elimina los caracteres en forma de espacios en blanco, ejemplo: espacio en blanco, tabulaciones y saltos de lnea. Elimina los comentarios. Actualiza la tabla de smbolos uniformes, que es la contenedora de todos los tokens del programa fuente actual. Conceptos bsicos: Palabra reservada: Es aquella palabra del propio lenguaje de programacin que no se puede usar como identificador de variables ni como funciones de usuario. Mayormente todas las palabras clave son reservadas, pero algunas palabras reser vadas no siempre son palabras clave. Ejemplo de palabras claves: main, if, else, switch, while, do, etc. Ejemplo de palabras reservadas: printf(), scanf(), getch(), putpixel() , gotoxy(), etc. Estas ltimas palabras son reservadas, pero no son palabras clave ya que pueden ser creadas por el usuario como funciones pr opias, siempre y cuando no se usen las libreras del C++.
token

printf ( %d , dato);
Identificador de funcin

int a =1; float suma ( a , b );

Identificador de variable

Tabla de smbolos unifor mes: Se basa en: Tabla de terminales (palabras reservadas) Tabla de identificadores (variables) Tabla de literales (constantes)

ANALISIS SINTA CTICO Es un anlisis de tipo jerrquico. Necesita de un analizador sintctico o mdulo denominado Parser Funcionalidad: Verifica en forma permanente la correcta escritura de las sentencias, teniendo como parmetros un conjunto de reglas denominada gramtica. Una gramtica se representa formalmente o matemticamente en base a un cudr uple de la forma: G = ( P, T, N, S), donde: P = Producciones o reglas T = Conjunto de terminales N = Conjunto de no terminales S = Axioma, smbolo distinguido o metanocin

Ing. Luis Reyes Lescano

Compiladores e Interpretes

EPCI - UNPRG

Sigue la forma BNF (Backus Naur Form) que coincide con la gramtica de libre contexto de Chomsky. Ejemplo: Reglas para el reconocimiento de una sentencia de asignacin: 1. Un identificador es una expresin. 2. Un nmer o es una expresin. 3. Pueden darse los siguientes casos: expresin + expresin expresin - expresin expresin * expresin expresin / expresin Todas ellas son expresiones 4. Identificador = expresin es una proposicin. Transformando estas reglas a BNF, sera:
exp id exp num exp exp + exp exp exp - exp exp exp * exp exp exp / exp prop id = exp exp id | num | exp + exp | exp - exp | exp * exp | exp / exp prop id = exp

O SE PUEDE REPRESENTAR

Ahora planteemos estas reglas o producciones a una sentencia de asignacin: X=A +3* C-5 prop = P: {exp id | num | exp + exp | exp - exp | id = exp exp * exp | exp / exp X * prop id = exp } X exp * exp + T: {X,=,A,+,3,*,C,-,5} N: {id,exp,num} exp + exp exp - exp A 3 C 5 S: {prop} id num id num
rbol aritmtico

forma gramatical

parser

Ing. Luis Reyes Lescano

Compiladores e Interpretes

EPCI - UNPRG

EJERCICIOS I. Desarrollar el parser para el reconocimiento de las siguientes sentencias de asignacin: a. X = A * B / C / 2 + 3 * (4 + 5 / 2) prop id X exp exp / exp exp * exp id A id B id C / = exp exp num 2 num 3 exp + exp exp * exp num 4 exp + exp

exp / exp num 5 num 2

b. X = 4 + 5 * 3 4 + 1 / 2 / 4 * 6 + (3 * 5) prop id X exp exp exp num 4 + exp num 5 exp * exp num 3 exp num 4 exp num 1 exp / + exp exp / * exp exp num 6 = exp exp + exp exp num 3 * exp num 5

exp num num 2 4

Ing. Luis Reyes Lescano

Compiladores e Interpretes

EPCI - UNPRG

c. X = ((A + 3) + 5 * 4 + (6 / 3 * 4)) / 2 + 4 * 3 prop id X exp exp exp exp id A + exp num 3 + exp exp num 5 * exp exp + exp exp / * exp / = exp exp num 2 exp + exp exp num 4 * exp num 3

exp num num 3 4

num num 4 6

d. X = (A + (3 * 5 + (6 * 4 / 3 / 2)) + 4 5 * 4) / 5 / 2 prop id X exp exp exp exp id A + exp exp * exp num 3 num 5 exp + exp exp / exp / exp + exp num 4 exp num 2 = exp / exp exp * exp num 5 num 4 exp / exp num 5 exp num 2

exp * exp num num 6 num 4 3

Ing. Luis Reyes Lescano

Compiladores e Interpretes

EPCI - UNPRG

II. Desarrollar las gramticas para el reconocimiento de: a. Sentencia condicional if()

prop_cond if (exp) then {prop} | if (exp) then {prop} else {prop} dig 0 9 num dig | dig num letra a z | A Z comp letra | dig | _ | ( letra | dig | _ ) comp id letra | letra (comp) op_arit + | - | * | / op_rel < | > | <= | >= | <> exp_arit exp op_arit exp exp_rel exp op_rel exp exp_log exp AND exp | exp OR exp | NOT exp exp id | num | exp_arit | exp_rel | exp_log prop_asig id = exp prop_var id++ | id prop_declar tipo prop_asig | tipo id prop prop_asig | prop_var | prop_declar | prop_cond | (prop_asig | prop_var | prop_declar | prop_cond) prop

Definicin de reglas que sern utilizadas para la constru ccin de la gramtica de las sentencias sig uientes.

A xioma de la gramtica que ir incrementndose

b. Sentencia repetitiva for()

prop_rep for (inicia; evalua; var) {prop} inicia prop_asig | prop_declar | (prop_asig | prop_declar), inicia evalua exp_rel | exp_log var prop_var | prop_asig | (prop_var | prop_asig), var prop prop_asig | prop_var | prop_declar | prop_cond | prop_rep | (prop_asig | prop_var | prop_declar | prop_cond | prop_rep) prop

c. Sentencia de control while()

prop_ctrl while (evalua) {prop} | do {prop} while (evalua) prop prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl | (prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl) prop

d. Sentencia de seleccin mltiple switch()

prop_selec switch (id) {enuncia | defa} enuncia case valores: prop; break; | case valores: prop; break; enuncia valores num | letra | num, valores | letra, valores defa enuncia default: prop; break; prop prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl | prop_selec | (prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl | prop_selec ) prop

e. Sentencia de escritura pr intf()

prop_esc printf (cuerpo) | printf (cuerpo, var_esc) cuerpo cad | format | (cad | format) cuerpo cad letra | dig | car_esp | delim | (letra | dig | car_esp | delim) cad format %d | %f | %c | %s car_esp ! | | | ? | < | > | | #| $ | % | & | @ | / | ) | ( | ; | : | , | . | ... delim eb | TAB | space var_esc id | exp_arit | ( id | exp_arit ), var_esc prop prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl | prop_selec | prop_esc | (prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl | prop_selec | prop_esc) prop

f. Sentencia de lectura scanf()

prop_lect scanf (format, var_lect) var_lect id | &id | (id | &id) var_lect prop prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl | prop_selec | prop_esc | prop_lect | (prop_asig | prop_var | prop_declar | prop_cond | prop_rep | prop_ctrl | prop_selec | prop_esc | prop_lect ) prop

Ing. Luis Reyes Lescano

You might also like