-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple C0 Parser -- -- The package contains a parser for C0 programs. The C0-language is -- introduced in the basic programming course "Algorithmisches Denken und -- imperative Programmierung" (WS 2011/12 and later) at the University of -- Bonn. @package c0parser @version 0.1 module Language.C0.Types.C0Types newtype Program P :: Block -> Program data Block B :: VariableDeclaration -> StatementSequence -> Block newtype VariableDeclaration V :: [Ident] -> VariableDeclaration newtype StatementSequence S :: [Statement] -> StatementSequence data Statement SS :: Ident -> Statement SP :: Ident -> Statement SA :: Assignment -> Statement SI :: IfStatement -> Statement SW :: WhileStatement -> Statement SSS :: StatementSequence -> Statement data Assignment A :: Ident -> SimpleExpression -> Assignment data IfStatement I :: BoolExpression -> Statement -> (Maybe Statement) -> IfStatement data WhileStatement W :: BoolExpression -> Statement -> WhileStatement data BoolExpression Bool :: SimpleExpression -> Relation -> SimpleExpression -> BoolExpression data Relation EQ :: Relation NE :: Relation LT :: Relation GT :: Relation LE :: Relation GE :: Relation data SimpleExpression Simple :: (Maybe Sign) -> Term -> [(OpAddSub, Term)] -> SimpleExpression data OpAddSub Add :: OpAddSub Sub :: OpAddSub data OpMulDivMod Mul :: OpMulDivMod Div :: OpMulDivMod Mod :: OpMulDivMod data Sign Plus :: Sign Minus :: Sign data Term T :: Factor -> [(OpMulDivMod, Factor)] -> Term data Factor FI :: Ident -> Factor FN :: Number -> Factor FS :: SimpleExpression -> Factor type Ident = String type Number = Int instance Eq Relation instance Show Relation instance Eq OpAddSub instance Show OpAddSub instance Eq OpMulDivMod instance Show OpMulDivMod instance Eq Sign instance Show Sign instance Eq VariableDeclaration instance Show VariableDeclaration instance Eq Factor instance Show Factor instance Eq SimpleExpression instance Show SimpleExpression instance Eq Term instance Show Term instance Eq BoolExpression instance Show BoolExpression instance Eq Assignment instance Show Assignment instance Eq Statement instance Show Statement instance Eq WhileStatement instance Show WhileStatement instance Eq IfStatement instance Show IfStatement instance Eq StatementSequence instance Show StatementSequence instance Eq Block instance Show Block instance Eq Program instance Show Program module Language.C0.Parser.C0Parser keywords :: [String] yesNo :: String -> Bool wsOrCmts :: CharParser [String] () parseProg :: String -> (Either ParseError Program) pProgram :: CharParser [Ident] Program pBlock :: CharParser [String] Block pVariableDeclaration :: CharParser [String] VariableDeclaration isKeyword :: String -> Bool pIdent :: CharParser [String] String checkIdent :: String -> CharParser [String] () pStatementSequence :: CharParser [String] StatementSequence pStatement :: CharParser [String] Statement pScanf :: CharParser [String] Statement pPrintf :: CharParser [String] Statement pAssignment :: CharParser [String] Statement pIfStatement :: CharParser [String] Statement pWhileStatement :: CharParser [String] Statement pBoolExpression :: CharParser [String] BoolExpression pRelation :: CharParser [String] Relation pSimpleExpression :: CharParser [String] SimpleExpression pPlus :: CharParser [String] (Maybe Sign) pMinus :: CharParser [String] (Maybe Sign) pTerm :: CharParser [String] Term pMoreTerms :: CharParser [String] [(OpAddSub, Term)] pOpAddSub :: CharParser [String] OpAddSub pFactor :: CharParser [String] Factor pMoreFactors :: CharParser [String] [(OpMulDivMod, Factor)] pOpMulDivMod :: CharParser [String] OpMulDivMod pNumber :: CharParser [String] Int