Herramientas de usuario

Herramientas del sitio


compiladores:programas_de_ejemplo

¡Esta es una revisión vieja del documento!


Programas de ejemplos para probar el intérprete

Exponenciación Factorial División División (con falla)
 
?x;
?y;
r:=1;
while y>0 do
	r:=r*x;
	y:=y-1
od;
!r
 
y:=1;
f:=1;
?x;
while x>=y do 
     f:=f*y;
     y:=y+1 
od;
!f 
 
q:=0;
?x;
?y;
r:=x;
while r>=y do 
     q:=q+1;
     r:=r-y 
od;
!r;
!q
q:=0;
?x;
?y;
if y=0 
then fail DivZero 
else 
	r:=x;
	while r>=y do 
     		q:=q+1;
	     	r:=r-y 
	od;
	!q;
	!r
fi
Exponenciación (mejorado) Fibonnaci de un número Fibonnaci desde 1 hasta un número
 
catch ExpNeg in
?x;
?y;
if y<0 then 
	fail ExpNeg
else
	r:=1;
	while y>0 do
		r:=r*x;
		y:=y-1
	od;
	!r
fi
{fail CanNotDealWithReals}
n1:=0;
n2:=1;
?x;
y:=0;
for i:=1 to x do
	newvar t:=n1+n2 {
		n1:=n2;
		n2:=t 
	};
	i:=i+1
od;
!n2 
n1:=0;
n2:=1;
?x;
y:=0;
for i:=1 to x do
	newvar t:=n1+n2 {
		n1:=n2;
		n2:=t 
	};
        !n2;
	i:=i+1
od
Primo o compuesto (muy ineficiente)
 
?x;
i:=2;
while i<x do
	if x rem i=0 then break
                      else i:=i+1
	fi
od;
if i<x then fail NotPrime
       else fail Prime
fi

Interfaz gráfica para el intérprete

Si quieren probar la interfaz gráfica para el intérprete del proyecto pueden usar como punto de partida los siguientes archivos.

Algunas apostillas para facilitarles la investigación:

  • De acuerdo a como tengan definido sus tipos de datos (especialmente Omega), deberán hacer los cambios correspondientes.
  • La interfaz de consola es una función
    run :: Omega Int -> IO ()
  • La interfaz gráfica es una función
    runGtk :: Omega Int -> IO ()
  • Por otro lado tengo una función
    execStrGen :: (Omega Int -> IO ()) -> (String -> IO ()) -> String -> IO ()

    donde el primer argumento es la función para ejecutar el código (el tercer argumento) y el segundo argumento es una función que sabe que hacer en caso de error durante el parseo.

  • Si ustedes tienen definida una función parecida a execStrGen, entonces lo “único” que tienen que hacer es pasarle como argumento a esa función la función runGtk.
compiladores/programas_de_ejemplo.1147300393.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)