====== Interfaz gráfica para el intérprete ====== Si quieren probar la interfaz gráfica para el intérprete del proyecto pueden usar la que está en {{:compiladores:imp.tar|Imp}}. Algunas apostillas para facilitarles la investigación: * Usa [[http://haskell.org/gtk2hs/| 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ón ''runGtk''. * 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 [[http://www.iai.uni-bonn.de/~loeh/lhs2tex/|Lhs2TeX]]. El {{:compiladores:imp.tar|tar con los archivos}} contiene: * Gui.lhs: el código para manejar la interfaz gráfica, * Makefile: para compilar (tiene un pequeño error de dependencias, pero es fácil de solucionar) * imp.lang: para tener coloreado de sintáxis * Ui.glade: la definición de la interfaz gráfica con Glade2. Así se ve: {{:compiladores:gtk2hs3.png|Screenshot}}