-- |A simplified embedded version of original BASIC. -- Some things work, some things just give utterly mysterious type errors. -- -- Beware, this is just a fun weekend hack. module Language.BASIC(module Language.BASIC.Parser, module Language.BASIC.Types, runBASIC, runBASIC') where import System.TimeIt import Language.BASIC.Parser hiding (Expr) import Language.BASIC.Types(Expr(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z, SIN, COS, TAN, ATN, EXP, LOG, SQR, ABS, RND, INT, SGN)) import Language.BASIC.Interp import Language.BASIC.Translate -- |Run a BASIC program with an interpreter. runBASIC :: BASIC -> IO () runBASIC x = do let cmds = getBASIC x -- putStrLn $ unlines $ map show cmds timeIt $ executeBASIC cmds -- |Run a BASIC program with a compiler. runBASIC' :: BASIC -> IO () runBASIC' x = do let cmds = getBASIC x -- putStrLn $ unlines $ map show cmds -- executeBASIC cmds func <- translateBASIC cmds timeIt func