You are on page 1of 8

Preguntas:

Lea los temas 1.1 a 1.3 del archivo A7.pdf proporcionado en el material del
curso
Preguntas:
1. Cul es el objetivo de un compilador?
R: bsicamente es traducir un programa (o texto) escrito en un lenguaje
fuente, que llamaremos programa fuente, en un equivalente en otro
lenguaje denominado objeto, al que llamaremos programa o cdigo
objeto.
2. Cuntas fases componen un compilador? Cules son?
R:
Analisis lxico
Analisis sintctico
Analisis semntico
Generacion de cdigo
Optimizacion de cdigo
Generalizacion de codigo
3. Cul es la funcin de cada una de ellas?
R:
Anlisis lxico La cadena de entrada se recibe como una sucesin de
caracteres. El anlisis lxico agrupa los caracteres en secuencias con
significado colectivo y mnimo en el lenguaje, llamadas componentes
lxicos (palabras o token), con ciertos atributos lxicos.
Anlisis sintctico Los componentes lxicos se agrupan para formar
frases. El valor lxico de los componentes es en este momento
irrelevante. Normalmente las frases se representan mediante una
estructura de rbol sintctico, siguiendo reglas que describen el
lenguaje.
Anlisis semntico En esta etapa se revisa el resultado del anlisis
sintctico, recopilando por ejemplo informacin de tipos y construyendo
una representacin an ms abstracta.

Generacin de cdigo intermedio Se genera en esta fase un cdigo


intermedio para una mquina abstracta, y es posible que explcitament .
Esta representacin debe ser fcil de producir y fcil de traducir al
programa objeto. Puede tener diversas formas.
Optimacin de cdigo Se trata en esta fase de mejorar el cdigo, en el
sentido de reducir la cantidad de resursos (tiempo y memoria)
necesarios.
Generacin de cdigo En esta fase final se genera por fin el cdigo
objeto, normalmente cdigo mquina relocalizable o ensamblador. Se
seleccionan entonces posiciones de memoria relativas o registros para
las variables y cada sentencia del cdigo intermedio se traduce a una
secuencia de instrucciones que ejecutan la tarea
4. En cuntas y cules son las subfases de cada una de ellas?
5. Cules son las funciones principales de cada una de ellas?
Anlisis lxico:
Consiste en agrupar caracteres para formar las unidades que ya tienen
significado por s mismas (tokens). NOTA. Token es la moneda de menor
valor. Nosotros diramos cntimo.
Anlisis sintctico:
Se analizan las sentencias, que estn compuestas de tokens, de
acuerdo con la sintaxis del lenguaje.
Anlisis semntico y Generador de cdigo intermedio son dos etapas
que se
representan juntas porque la generacin de cdigo intermedio utiliza el mis
mo rbol del anlisis semntico.
Optimizacin del cdigo:
Es una seccin optativa pero muy difundida y demandada
entre los compiladores profesionales. Por ello, Los constructores de compila
dores gastan
mucho dinero en ella. Trata de optimizar el cdigo en tamao y/o velocidad.
Generador de cdigo final:
Se encarga de generar el cdigo en el lenguaje objeto del compilador
6. Dibuje la estructura general de un compilador

7. Qu es el cdigo objeto?
Cdigo generado por un compilador o un ensamblador traducido por un
cdigo fuente de un programa.
Casi siempre este trmino se refiere al cdigo mquina que puede
ejecutarse directamente en la unidad central de proceso (CPU) del
sistema, pero tambin puede ser cdigo fuente de lenguaje ensamblador
o una variante de cdigo mquina.

Consulte en Internet el siguiente vnculo:


http://es.wikipedia.org/wiki/Estructuras_de_control#Tipos_de_estructura_de_co
ntrol
Preguntas:
8. Cuntos tipos de instrucciones existen en cualquier lenguaje?Cules
son?
Estos son los tipos de instrucciones:
instrucciones declarativas:
ejemplo:
include <iostream.h> > cin , cout..
#include <conio.h> > funcion getch()..
#include <string.h> > para manipular cadenas
#include <math.h> > para operaciones numericas
#include <time.h> > para usar la hora

#include <stdio.h> > para usar alternativas de entrda salida como printf , scanf
float vector [12];

> Declarando un arreglo tipo flotante ( decimal )

instrucciones de asignacion:
Ejemplo:
Sirven para dar valores a las variables, y llevan ste formato:
nombre_variable = expresin ;

instrucciones selectivas
Ejemplo:
if ( expresin a evaluar )
else > Pero si sa expresin era falsa, se ejecutarn las acciones 3 y 4.
switch ( expresion a evaluar )

> Esta es la expresion que vamos a evaluar.

{
case 1 : accion 1 ;
case 2 : accion 2 ;
case 3 : accion 3 ;
}

instrucciones repetitivas
Ejemplo:
While ( expresin )
Do
{
accin 1;

> Mientras esa expresin sea verdadera har las acciones 1 y 2.

accin 2;
} While ( expresin )

> Mientras esa expresin sea verdadera har las acciones 1 y 2.

for ( expresin inicial ; expresin final ; incremento / decremento )


{
accines; > Hasta que no llegue a la expresin final, se ejecur la accin una y otra vez.
}

instrucciones de entrada y salida de datos:


Ejemplo:
cin >> nombre_del_usuario ;
Para la salida de datos ( mostrar )
cout << nombre_del_usuario

instrucciones de bifurcacin:
Ejemplo:
Switch ( expresin que estamos evaluando )
{
case 1 : cout << Hola! ; break ;
case 2 : cout << amig@s ;
}

9. Elija uno de ellos y describa los componentes de esa instruccin


detallndolos lo mejor posible?

R:

float vector [12];

> Declarando un arreglo tipo flotante ( decimal )

Ese vector que se ha declarado arriba, al ser un arreglo quiere decir que hay 12 variables con el mismo
nombre
y son del mismo tipo, pero diferenciadas unicamente en su posicion, asi:
vector[0],vector[1],vector[2],vector[3],vector[4],vector[5],vector[6], .. ,vector[10],vector[11].

Nota: los arreglos siempre comienzan en la posicion cero ( 0 ) por eso llegan hasta una unidad menos, en
ste caso como declaramos un arreglo de 12 , su tope ser de 11; puesto a que desde cero ( 0 ) hasta once
( 11 ) hay doce ( 12 ) variables

10.Qu es la tabla de smbolos?

R: Tabla: conjunto de pares clave-valor, llamados elementos de la tabla.

La tabla de smbolos es una componente necesaria de un compilador. Al declarar


un identificador (normalmente una sola vez), ste es insertado en la tabla. Cada
vez que se utilice el identificador se realizar una bsqueda en la tabla para
obtener la informacin asociada (el valor).
11.Cules son los elementos que integran la tabla de smbolos?
Almacenamiento del nombre. Se puede hacer con o sin lmite.
El tipo tambin se almacena en la tabla
Direccin de memoria en que se guardar. Esta direccin es
necesaria, porque las instrucciones que referencian a una variable
deben saber dnde encontrar el valor de esa variable en tiempo
de ejecucin, tambin cuando se trata de variables globales.
El nmero de dimensiones de una variable array, o el de
parmetros de una funcin o procedimiento junto con el tipo de
cada uno de ellos es til para el chequeo semntico.
12.Cul es la utilidad de la tabla de smbolos?
Las tablas de smbolos se crean en las primeras fases del proceso,
durante el anlisis lxico y sintctico, permitiendo a las siguientes
asociar un contexto a cada uno de los smbolos que haga posible saber,
por ejemplo, si un identificador representa una variable o el nombre de
un procedimiento, cul es el tipo de dato de la variable o la lista de
argumentos que precisa ese procedimiento, cul es el mbito que les

corresponde en el caso de los lenguajes con estructura de bloques y


orientados a objetos, etc.
13.Cules son los tipos de datos que podemos encontrar en un lenguaje?
Tipos de datos para englobar a cualquier cosa que ocupa un espacio ... Esto es
una cuestin que atae a la concepcin del lenguaje de programacin. ...
Consulte en internet el siguiente vnculo:
http://www.giaa.inf.uc3m.es/docencia/ITIG/Semantico.pdf y responda las
siguientes preguntas

14. En qu consiste la comprobacin de flujo de control?


Que son instrucciones del tipo"si se cumple esta condicin, hazlo; si no se cumple,
haz esto otro". Tambin existen instrucciones del tipo "repite esto mientras se
cumpla esta condicin".
Si se utilizan estructuras de control de flujo, los programas dejan de ser una
sucesin lineal de instrucciones para convertirse en programas inteligentes que
pueden tomar decisiones en funcin del valor de las variables.
Ejemplo:
if(condicion) {
...
}

Si la condicin se cumple (es decir, si su valor es true) se ejecutan todas las


instrucciones que se encuentran dentro de {...}. Si la condicin no se cumple (es
decir, si su valor es false) no se ejecuta ninguna instruccin contenida en {...}y el
programa contina ejecutando el resto de instrucciones del script.

15. En qu consiste la comprobacin de unicidad? Comprobacin de unicidad


int a;
char a; //una sola vez
Comprobacin relacionadas con nombres: <Cmo se realiza la comprobacin de
unicidad? A travs de la tabla de smbolos.>
16.En qu consiste la comprobacin de emparejamiento?

Un compilador debe comprobar si el programa fuente sigue tanto las convenciones


sintcticas como las semnticas del lenguaje fuente. Esta comprobacin,
llamada comprobacin esttica (para distinguirla de la comprobacin
dinmica que se realiza durante la ejecucin del programa objeto), garantiza la
deteccin y comunicacin de algunas clases de errores de programacin.

17. Explique con su palabras los siguientes conceptos?


a) Semntica Operacional
Enfasis en explicar cmo se ejecuta en una mquina abstracta.
Especificacin de expresiones y comandos dirigidos por sintaxis.
Semntica Denotacional
Idea: El significado de un programa es la funcin denotada por el
programa. Semntica Axiomtica :
Enfasis en demostrar la correctitud de inicio a fin.
Significado de cada instruccin como una regla de lgica.
b) Gramticas con atributos
una gramtica independiente del contexto en la cual a sus
smbolos terminales y no terminales se les dota de unos atributos
y a sus producciones de unas funciones de evaluacin que hacen
que dichos atributos se propaguen a travs de la gramtica.
Cules son las diferencias entre ellas? Justifique su respuesta.

You might also like