-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | An implementation of Neil D. Jones' While language -- -- An implementation of Neil D. Jones' While language. Developed in -- collaboration with Dr. Bernhard Reus (University of Sussex, UK) for -- use in the Limits of Computing module. @package hwhile @version 0.1.1.0 module Lexer newtype Token Token :: (FilePath, TokenType, AlexPosn) -> Token data TokenType TkDot :: TokenType TkOpenBrc :: TokenType TkClosBrc :: TokenType TkOpenCur :: TokenType TkClosCur :: TokenType TkOpenSqu :: TokenType TkClosSqu :: TokenType TkOpenAng :: TokenType TkClosAng :: TokenType TkComma :: TokenType TkColon :: TokenType TkIsEq :: TokenType TkAssign :: TokenType TkNil :: TokenType TkSemiCo :: TokenType TkCons :: TokenType TkHd :: TokenType TkTl :: TokenType TkWhile :: TokenType TkSwitch :: TokenType TkCase :: TokenType TkDefault :: TokenType TkIf :: TokenType TkElse :: TokenType TkRead :: TokenType TkWrite :: TokenType TkTrue :: TokenType TkFalse :: TokenType TkAtomAsgn :: TokenType TkAtomDoAsgn :: TokenType TkAtomWhile :: TokenType TkAtomDoWhile :: TokenType TkAtomIf :: TokenType TkAtomDoIf :: TokenType TkAtomVar :: TokenType TkAtomQuote :: TokenType TkAtomHd :: TokenType TkAtomDoHd :: TokenType TkAtomTl :: TokenType TkAtomDoTl :: TokenType TkAtomCons :: TokenType TkAtomDoCons :: TokenType ITkVar :: String -> TokenType ITkInt :: Int -> TokenType ITkErr :: String -> TokenType tkLineNo :: Token -> Int tkCharNo :: Token -> Int tkPath :: Token -> FilePath tkVarName :: Token -> String scan :: String -> FilePath -> [Token] prettyPrintToken :: Token -> String instance GHC.Show.Show Lexer.Token instance GHC.Classes.Eq Lexer.TokenType instance GHC.Show.Show Lexer.TokenType instance GHC.Show.Show Lexer.AlexPosn instance GHC.Classes.Eq Lexer.AlexPosn instance GHC.Classes.Eq Lexer.Token module PureSyntax newtype Name Name :: (FilePath, String) -> Name nameName :: Name -> String namePath :: Name -> FilePath data Program Program :: Name -> Name -> Block -> Name -> Program [progName] :: Program -> Name [readVar] :: Program -> Name [block] :: Program -> Block [writeVar] :: Program -> Name type Block = [Command] data Command Assign :: Name -> Expression -> Command While :: Expression -> Block -> Command IfElse :: Expression -> Block -> Block -> Command data Expression Var :: Name -> Expression Lit :: ETree -> Expression Cons :: Expression -> Expression -> Expression Hd :: Expression -> Expression Tl :: Expression -> Expression IsEq :: Expression -> Expression -> Expression data ETree ECons :: ETree -> ETree -> ETree ENil :: ETree showBlock :: Int -> Block -> String showC :: Int -> Command -> String tabs :: Int -> String data Atom AtomAsgn :: Atom AtomDoAsgn :: Atom AtomWhile :: Atom AtomDoWhile :: Atom AtomIf :: Atom AtomDoIf :: Atom AtomVar :: Atom AtomQuote :: Atom AtomHd :: Atom AtomDoHd :: Atom AtomTl :: Atom AtomDoTl :: Atom AtomCons :: Atom AtomDoCons :: Atom namesProg :: Program -> Set Name namesBlock :: Block -> Set Name namesComm :: Command -> Set Name namesExpr :: Expression -> Set Name atomToInt :: Atom -> Int atomToTree :: Atom -> ETree treeToAtom :: ETree -> Maybe Atom intToAtom :: Int -> Maybe Atom showIntTree :: Bool -> ETree -> String showIntListTree :: Bool -> ETree -> String showNestedIntListTree :: ETree -> String showNestedAtomIntListTree :: ETree -> String showProgramTree :: ETree -> Maybe String showBlockTree :: Int -> ETree -> Maybe String showCommandTree :: Int -> ETree -> Maybe String showExpressionTree :: ETree -> Maybe String parseInt :: ETree -> Maybe Int intToTree :: Int -> ETree toHaskellList :: ETree -> [ETree] showListOf :: (ETree -> String) -> [ETree] -> String showStringsAsList :: [String] -> String showStringsAsListFmt :: Int -> [String] -> String expFromHaskellList :: [Expression] -> Expression treeFromHaskellList :: [ETree] -> ETree instance GHC.Classes.Ord PureSyntax.Atom instance GHC.Classes.Eq PureSyntax.Atom instance GHC.Classes.Ord PureSyntax.Program instance GHC.Classes.Eq PureSyntax.Program instance GHC.Classes.Ord PureSyntax.Command instance GHC.Classes.Eq PureSyntax.Command instance GHC.Classes.Ord PureSyntax.Expression instance GHC.Classes.Eq PureSyntax.Expression instance GHC.Classes.Ord PureSyntax.ETree instance GHC.Classes.Eq PureSyntax.ETree instance GHC.Classes.Ord PureSyntax.Name instance GHC.Classes.Eq PureSyntax.Name instance GHC.Show.Show PureSyntax.Atom instance GHC.Show.Show PureSyntax.Program instance GHC.Show.Show PureSyntax.Command instance GHC.Show.Show PureSyntax.Expression instance GHC.Show.Show PureSyntax.ETree instance GHC.Show.Show PureSyntax.Name module PureInterpreter type Store = Map Name ETree evalProg :: ETree -> Program -> ETree evalBlock :: Store -> Block -> Store evalComm :: Store -> Command -> Store evalExpr :: Store -> Expression -> ETree module LoggingInterpreter evalProg :: (ETree -> String) -> ETree -> Program -> IO ETree evalBlock :: (ETree -> String) -> Store -> Block -> IO Store evalComm :: (ETree -> String) -> Store -> Command -> IO Store displayAssignment :: (ETree -> String) -> Name -> ETree -> String module SugarSyntax data SuProgram SuProgram :: Name -> Name -> SuBlock -> Name -> SuProgram type SuBlock = [SuCommand] newtype Info Info :: (FilePath, Int) -> Info data SuCommand SuAssign :: Info -> Name -> Expression -> SuCommand SuWhile :: Info -> Expression -> SuBlock -> SuCommand SuIfElse :: Info -> Expression -> SuBlock -> SuBlock -> SuCommand Macro :: Info -> Name -> FilePath -> Expression -> SuCommand Switch :: Info -> Expression -> [(Expression, SuBlock)] -> SuBlock -> SuCommand namesSuProg :: SuProgram -> Set Name namesSuBlock :: SuBlock -> Set Name namesSuComm :: SuCommand -> Set Name instance GHC.Classes.Eq SugarSyntax.SuProgram instance GHC.Classes.Ord SugarSyntax.SuCommand instance GHC.Classes.Eq SugarSyntax.SuCommand instance GHC.Show.Show SugarSyntax.SuCommand instance GHC.Classes.Ord SugarSyntax.Info instance GHC.Classes.Eq SugarSyntax.Info instance GHC.Show.Show SugarSyntax.Info module SourceParser newtype HappyAbsSyn HappyAbsSyn :: HappyAny -> HappyAbsSyn type HappyAny = Any happyIn7 :: (SuProgram) -> (HappyAbsSyn) happyOut7 :: (HappyAbsSyn) -> (SuProgram) happyIn8 :: (Name) -> (HappyAbsSyn) happyOut8 :: (HappyAbsSyn) -> (Name) happyIn9 :: (Expression) -> (HappyAbsSyn) happyOut9 :: (HappyAbsSyn) -> (Expression) happyIn10 :: (ETree) -> (HappyAbsSyn) happyOut10 :: (HappyAbsSyn) -> (ETree) happyIn11 :: ([Expression]) -> (HappyAbsSyn) happyOut11 :: (HappyAbsSyn) -> ([Expression]) happyIn12 :: ([Expression]) -> (HappyAbsSyn) happyOut12 :: (HappyAbsSyn) -> ([Expression]) happyIn13 :: (SuCommand) -> (HappyAbsSyn) happyOut13 :: (HappyAbsSyn) -> (SuCommand) happyIn14 :: (SuBlock) -> (HappyAbsSyn) happyOut14 :: (HappyAbsSyn) -> (SuBlock) happyIn15 :: (SuBlock) -> (HappyAbsSyn) happyOut15 :: (HappyAbsSyn) -> (SuBlock) happyIn16 :: (([(Expression, SuBlock)], SuBlock)) -> (HappyAbsSyn) happyOut16 :: (HappyAbsSyn) -> (([(Expression, SuBlock)], SuBlock)) happyIn17 :: (ETree) -> (HappyAbsSyn) happyOut17 :: (HappyAbsSyn) -> (ETree) happyIn18 :: (ETree) -> (HappyAbsSyn) happyOut18 :: (HappyAbsSyn) -> (ETree) happyIn19 :: ([ETree]) -> (HappyAbsSyn) happyOut19 :: (HappyAbsSyn) -> ([ETree]) happyIn20 :: ([ETree]) -> (HappyAbsSyn) happyOut20 :: (HappyAbsSyn) -> ([ETree]) happyInTok :: (Token) -> (HappyAbsSyn) happyOutTok :: (HappyAbsSyn) -> (Token) happyExpList :: HappyAddr happyExpListPerState :: Int -> [[Char]] happyActOffsets :: HappyAddr happyGotoOffsets :: HappyAddr happyAdjustOffset :: Int# -> Int# happyDefActions :: HappyAddr happyCheck :: HappyAddr happyTable :: HappyAddr happyReduceArr :: Array Int (Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn) happy_n_terms :: Int happy_n_nonterms :: Int happyReduce_4 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_4 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_5 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_5 :: HappyAbsSyn -> HappyAbsSyn happyReduce_6 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_6 :: () => HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn happyReduce_7 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_7 :: HappyAbsSyn -> HappyAbsSyn happyReduce_8 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_8 :: () => p1 -> HappyAbsSyn -> p2 -> HappyAbsSyn happyReduce_9 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_9 :: () => HappyAbsSyn -> p -> HappyAbsSyn happyReduce_10 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_10 :: () => HappyAbsSyn -> p -> HappyAbsSyn happyReduce_11 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_11 :: () => HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn happyReduce_12 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_12 :: HappyAbsSyn -> HappyAbsSyn happyReduce_13 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_13 :: HappyAbsSyn -> HappyAbsSyn happyReduce_14 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_14 :: () => p -> HappyAbsSyn happyReduce_15 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_15 :: () => p -> HappyAbsSyn happyReduce_16 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_16 :: () => p -> HappyAbsSyn happyReduce_17 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_17 :: () => p -> HappyAbsSyn happyReduce_18 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_18 :: () => p -> HappyAbsSyn happyReduce_19 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_19 :: () => p -> HappyAbsSyn happyReduce_20 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_20 :: () => p -> HappyAbsSyn happyReduce_21 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_21 :: () => p -> HappyAbsSyn happyReduce_22 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_22 :: () => p -> HappyAbsSyn happyReduce_23 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_23 :: () => p -> HappyAbsSyn happyReduce_24 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_24 :: () => p -> HappyAbsSyn happyReduce_25 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_25 :: () => p -> HappyAbsSyn happyReduce_26 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_26 :: () => p -> HappyAbsSyn happyReduce_27 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_27 :: () => p -> HappyAbsSyn happyReduce_28 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_28 :: () => p1 -> p2 -> HappyAbsSyn happyReduce_29 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_29 :: () => HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn happyReduce_30 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_30 :: () => HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn happyReduce_31 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_31 :: () => p -> HappyAbsSyn happyReduce_32 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_32 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyReduce_33 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_33 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_34 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_34 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyReduce_35 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_35 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_36 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_36 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyReduce_37 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_37 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_38 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_38 :: () => p1 -> p2 -> HappyAbsSyn happyReduce_39 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_39 :: () => p1 -> HappyAbsSyn -> p2 -> HappyAbsSyn happyReduce_40 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_40 :: () => HappyAbsSyn -> p -> HappyAbsSyn -> HappyAbsSyn happyReduce_41 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_41 :: HappyAbsSyn -> HappyAbsSyn happyReduce_42 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_42 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_43 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_43 :: () => p -> HappyAbsSyn happyReduce_44 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_44 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_45 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_45 :: () => p -> HappyAbsSyn happyReduce_46 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_46 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_47 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_47 :: HappyAbsSyn -> HappyAbsSyn happyReduce_48 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_48 :: () => p -> HappyAbsSyn happyReduce_49 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_49 :: () => p -> HappyAbsSyn happyReduce_50 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_50 :: HappyAbsSyn -> HappyAbsSyn happyReduce_51 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_51 :: () => p -> HappyAbsSyn happyReduce_52 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_52 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_53 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_53 :: HappyAbsSyn -> HappyAbsSyn happyReduce_54 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_54 :: () => p -> HappyAbsSyn happyReduce_55 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_55 :: () => p -> HappyAbsSyn happyReduce_56 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_56 :: HappyAbsSyn -> HappyAbsSyn happyReduce_57 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_57 :: HappyAbsSyn -> HappyAbsSyn happyReduce_58 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_58 :: () => p1 -> p2 -> HappyAbsSyn happyReduce_59 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_59 :: () => HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn happyReduce_60 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_60 :: () => HappyAbsSyn -> HappyAbsSyn -> p -> HappyAbsSyn happyReduce_61 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduction_61 :: () => p -> HappyAbsSyn happyNewToken :: Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyError_ :: () => [String] -> Int# -> Token -> [Token] -> ExceptT String IO a happyThen :: () => ExceptT String IO a -> (a -> ExceptT String IO b) -> ExceptT String IO b happyReturn :: () => a -> ExceptT String IO a happyThen1 :: Monad m => m t1 -> (t1 -> t2 -> m b) -> t2 -> m b happyReturn1 :: () => a -> b -> ExceptT String IO a happyError' :: () => ([(Token)], [String]) -> ExceptT String IO a parseProg :: [Token] -> ExceptT String IO SuProgram parseExpr :: [Token] -> ExceptT String IO Expression parseComm :: [Token] -> ExceptT String IO SuCommand parseLVal :: [Token] -> ExceptT String IO ETree happySeq :: () => a -> b -> b parseError :: [Token] -> ExceptT String IO a data Happy_IntList HappyCons :: Int# -> Happy_IntList -> Happy_IntList data HappyStk a HappyStk :: a -> (HappyStk a) -> HappyStk a happyParse :: Int# -> [Token] -> ExceptT String IO HappyAbsSyn happyAccept :: () => Int# -> p1 -> Int# -> p2 -> HappyStk a -> b -> ExceptT String IO a happyDoAction :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn indexShortOffAddr :: HappyAddr -> Int# -> Int# happyLt :: Int# -> Int# -> Bool readArrayBit :: HappyAddr -> Int -> Bool data HappyAddr HappyA# :: Addr# -> HappyAddr happyShift :: Int# -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happySpecReduce_0 :: Int# -> HappyAbsSyn -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happySpecReduce_1 :: Int# -> (HappyAbsSyn -> HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happySpecReduce_2 :: Int# -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happySpecReduce_3 :: Int# -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyReduce :: Int# -> Int# -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyMonadReduce :: Int# -> Int# -> (HappyStk HappyAbsSyn -> Token -> ExceptT String IO HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyMonad2Reduce :: Int# -> Int# -> (HappyStk HappyAbsSyn -> Token -> ExceptT String IO HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyDrop :: Int# -> Happy_IntList -> Happy_IntList happyDropStk :: () => Int# -> HappyStk a -> HappyStk a happyGoto :: Int# -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn happyFail :: [[Char]] -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> ExceptT String IO HappyAbsSyn notHappyAtAll :: a happyTcHack :: Int# -> a -> a happyDoSeq :: a -> b -> b happyDontSeq :: a -> b -> b module InterSyntax data InProgram InProgram :: Name -> Name -> InBlock -> Name -> InProgram [inProgName] :: InProgram -> Name [inReadVar] :: InProgram -> Name [inBlock] :: InProgram -> InBlock [inWriteVar] :: InProgram -> Name type InBlock = [InCommand] data InCommand InAssign :: Info -> Name -> Expression -> InCommand InWhile :: Info -> Expression -> InBlock -> InCommand InIfElse :: Info -> Expression -> InBlock -> InBlock -> InCommand InSwitch :: Info -> Expression -> [(Expression, InBlock)] -> InBlock -> InCommand info :: InCommand -> Info namesInProg :: InProgram -> Set Name namesInBlock :: InBlock -> Set Name namesInComm :: InCommand -> Set Name instance GHC.Classes.Ord InterSyntax.InProgram instance GHC.Classes.Eq InterSyntax.InProgram instance GHC.Classes.Ord InterSyntax.InCommand instance GHC.Classes.Eq InterSyntax.InCommand instance GHC.Show.Show InterSyntax.InCommand module DesugarIP desugarProg :: InProgram -> Program module DesugarSI loadProg :: FilePath -> FilePath -> [FilePath] -> ExceptT String IO InProgram desugarProg :: FilePath -> [FilePath] -> SuProgram -> ExceptT String IO InProgram desugarBlock :: FilePath -> [FilePath] -> SuBlock -> ExceptT String IO InBlock desugarComm :: FilePath -> [FilePath] -> SuCommand -> ExceptT String IO InBlock module REPL type REPL a = HaskelineT (StateT REPLState IO) a runREPL :: StateT REPLState IO () emptyREPLState :: REPLState instance GHC.Classes.Ord REPL.DebugOp instance GHC.Classes.Eq REPL.DebugOp instance GHC.Show.Show REPL.DebugOp module Unparser unparse :: Program -> ETree