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:
- Usa Gtk2Hs el binding de Haskell para Gtk2.
- 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ónrunGtk
. - Si quieren tener el coloreado de sintáxis en el editor tienen que copiar el archivo
imp.lang
en$HOME/.gnome2/gtksourceview-1.0/language-specs/
.
- Para obtener un archivo LaTeX con los comentarios y el codigo “pretty-printed” uso Lhs2TeX.
compiladores/programas_de_ejemplo.1147301071.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)