COMPILADORES Y JAVA SECCION II
TALLERES
Taller No. 1
Respuestas
1)
que una realiza frase a frase y la
otra texto completo
2)
Que uno los agrupa para formar
frases gramaticales y el otro revisa el análisis sintáctico.
3)
Área=base*altura/2
.bmp)
Taller No. 2
1)
- Análisis Léxico: Es una cadena de suseción de caracteres que construye un programa fuente
- Análisis Sintáctico: son lo que se agrupan y forman frases gramaticales
- Análisis semántico: Es el que revisa el resultado y compila el análisis sintáctico.
2)
¿La detección de errores se
considera una fase de compilador? R:
Si es una fase cuando encontramos un error trata de poder continuar a la
compilación permitiendo identificar más errores en el programa fuente.
3)
¿Qué función tiene la tabla de
símbolos en un compilador? R: es
el que detecta nuevos identificadores mediante constante ID como dígitos o
letras y empiezan a mostrar en la tabla de símbolos.
4)
Fase de análisis semántico
correctamente y que verifica el que revisa el programa fuente
5)
Las reglas de estructura se denomina
sintaxis del lenguaje.
6)
¿Qué significa código intermedio? R:
Es un algoritmo que genera el código intermedio para las construcciones
típicas del lenguaje de programación.
7)
¿Cuáles son las propiedades de una
representación intermedia?
·
Hay tres direcciones, tiene un
operador además de la asignación cuando se genera el compilador dirige el orden
de las operaciones.
·
Tiene un nombre temporal que
guarda los valores acumulados por las instrucciones.
Las tres direcciones tienen menos de tres
operandos, calcula la expresión, maneja las construcciones de flujo, control y
procedimiento
TALLER 3
1.Cual es el objetivo de un compilador
Rta. El objetivo es traducir un programa
2. que se
entiende por interpretación
Rta: que es aquel que traduce frase a frase
3. que es la compilación
Rta: la compilación es cuando la traducción se hace
con el texto completo
5. en un árbol sintáctico el nodo es una operación y los hijos son argumentos de dicha operación
6. que es un componente léxico o lexema
Rta: son palabras o “ tokens”
7. que es el código intermedio
Rta: es un programa para una maquina abstracta. Esta
representación intermedia debe tener dos propiedades importantes; debe ser
fácil de producir y fácil de traducir al programa objeto.
8. defina los siguientes términos
a. preprocesador : los preprocesadores producen la
entrada para un compilador y pueden hacer diferentes funciones
- procesamiento de macros
- inclusión de archivos
- procesadores racionales
- extensiones a lenguajes
B. compilador: Un compilador es un programa que permite traducir el código
fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un
programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una
computadora.
c. ensamblador: un ensamblador es una versión
mnemotécnica del código de maquina donde se unan nombres en cambio de códigos
binarios para expresiones y también se usan nombre para las direcciones de
memoria.
d. editor de carga : consiste en tomar el código
maquina relocalizable modificar las
direcciones relocalizables y ubicar las instrucciones y los datos
modificados en las posiciones de la
memoria
e. linker (enlace) : permite formar un solo programa
a partir de varios archivos de código maquina relocalizable. Estos archivos
pueden ser el resultado de varias compilaciones incluso algunos pueden ser
bibliotecas de rutinas proporcionadas por el sistema y disponibles para
cualquier programa que las requiera.
9.investigar la teoría de los autómatas y los
lenguajes formales
Rta: La teoría
de autómatas es una rama de
las ciencias
de la computación que estudia las máquinas abstractas y los
problemas que éstas son capaces de resolver. La teoría de autómatas está
estrechamente relacionada con la teoría del lenguaje formal ya que los
autómatas son clasificados a menudo por la clase de lenguajes formales que son
capaces de reconocer.
Un autómata es un modelo matemático para una máquina de estado finita (FSM sus siglas en inglés). Una FSM es una
máquina que, dada una entrada de símbolos, "salta" a través de una
serie de estados de acuerdo a una función de transición (que puede ser
expresada como una tabla). En la variedad común "Mealy" de FSMs, esta
función de transición dice al autómata a qué estado cambiar dados unos
determinados estado y símbolo.
La entrada es leída símbolo por símbolo, hasta que es
"consumida" completamente (piense en ésta como una cinta con una
palabra escrita en ella, que es leída por una cabeza lectora del autómata; la
cabeza se mueve a lo largo de la cinta, leyendo un símbolo a la vez) una vez la
entrada se ha agotado, el autómata se detiene.
Dependiendo del estado en el que el autómata finaliza se dice que
este ha aceptado o rechazado la entrada. Si éste termina en el estado
"acepta", el autómata acepta la palabra. Si lo hace en el estado
"rechaza", el autómata rechazó la palabra, el conjunto de todas las
palabras aceptadas por el autómata constituyen el lenguaje aceptado por el
mismo.
package Operacionesmatematicas;
import java.util.Scanner;
import javax.swing.*;
public class Operacionesmatematicas {
public static void
main (String [] args)
{
int clave = 0;
int suma,
resta, multiplicacion, divicion,opcion;
String
sopcion;
do
{
sopcion = JOptionPane.showInputDialog("Elija una opcion:
suma(1)//resta(2)//multiplicacion(3)//divicion(4)//salir()");
opcion = Integer.parseInt (sopcion);
//Scanner sc = new Scaner (System.in);
//System.out.println ("Ingrese la opcion:");
//int operacion = sc.nextInt();
Scanner SC=new
Scanner (System.in);
System.out.println("Ingrese un numero ");
int n = SC.nextInt();
System.out.println("Ingrese segundo numero");
int m = SC.nextInt();
switch (opcion) {
case 1:
suma=n+m;
System.out.printf("El resultado de suma es:"+suma);
System.out.printf("\n");break;
case 2:
resta=n-m;
System.out.printf("El resultado de suma es:"+resta);
System.out.printf("\n");break;
case 3:
multiplicacion=n*m;
System.out.printf("El resultado de suma es:"+multiplicacion);
System.out.printf("\n");break;
case 4:
divicion=n/m;
System.out.printf("El resultado de suma es:"+divicion);
System.out.printf("\n");break;
default: JOptionPane.showMessageDialog (null, "el numero no
pertenece al rango chao, pues:");
clave = 10; break; }
}while
(clave == 0);
}







