c0parser 0.1.0.1 → 0.2
raw patch · 3 files changed
+8/−15 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Language.C0.Parser.C0Parser: pMinus :: CharParser [String] (Maybe Sign)
- Language.C0.Parser.C0Parser: pPlus :: CharParser [String] (Maybe Sign)
- Language.C0.Types.C0Types: Minus :: Sign
- Language.C0.Types.C0Types: Plus :: Sign
- Language.C0.Types.C0Types: data Sign
- Language.C0.Types.C0Types: instance Eq Sign
- Language.C0.Types.C0Types: instance Show Sign
+ Language.C0.Parser.C0Parser: pYesNo :: ParsecT [Char] [Ident] Identity Bool
+ Language.C0.Parser.C0Parser: trace :: t -> t1 -> t1
- Language.C0.Types.C0Types: Simple :: (Maybe Sign) -> Term -> [(OpAddSub, Term)] -> SimpleExpression
+ Language.C0.Types.C0Types: Simple :: Term -> [(OpAddSub, Term)] -> SimpleExpression
Files
c0parser.cabal view
@@ -1,8 +1,8 @@ Name: c0parser-Version: 0.1.0.1+Version: 0.2 Synopsis: Simple C0 Parser Description: 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.+ The C0-language is introduced in the basic programming course \"Algorithmisches Denken und imperative Programmierung\" (WS 2012/13 and later) at the University of Bonn. License: GPL Author: Daniel Seidel Maintainer: ds@iai.uni-bonn.de
src/Language/C0/Parser/C0Parser.hs view
@@ -17,7 +17,7 @@ , "default", "do", "double", "else", "enum", "extern" , "float", "for", "goto", "if", "int", "long" , "register", "return", "short", "signed", "sizeof", "static"- , "struct", "switch", "typdef", "union", "unsigned", "void"+ , "struct", "switch", "typedef", "union", "unsigned", "void" , "volatile", "while"] yesNo :: String -> Bool@@ -238,21 +238,14 @@ pSimpleExpression :: CharParser [String] SimpleExpression pSimpleExpression = (do wsOrCmts- mSign <- trace "Entered simple expression ... \n" (pPlus <|> pMinus <|> return Nothing) (State s _ u) <- getParserState- term <- trace ("DEBUG: try to read term at parser state:\n" ++ s ++ "\nwith user state: " ++ show u ++ " and sign = " ++ show mSign ++ "\n") pTerm+ term <- trace ("DEBUG: try to read term at parser state:\n" ++ s ++ "\nwith user state: " ++ show u ++ "\n") pTerm terms <- trace "DEBUG: try to read more terms\n" pMoreTerms- return $ Simple mSign term terms) <|> + return $ Simple term terms) <|> (do (State s _ u) <- getParserState trace ("DEBUG: Simple Expression failed at ParserState:\n" ++ show s ++ "\n") fail "failed") -pPlus :: CharParser [String] (Maybe Sign)-pPlus = wsOrCmts >> char '+' >> return (Just Plus)--pMinus :: CharParser [String] (Maybe Sign)-pMinus = wsOrCmts >> char '-' >> return (Just Minus)- pTerm :: CharParser [String] Term pTerm = (do trace "entered pTerm\n" (return ())@@ -260,7 +253,8 @@ fac <- trace ("DEBUG: try to read factor at ParserState:\n" ++ s ++ "\n") pFactor facs <- trace ("DEBUG: try to read more factors ...") pMoreFactors trace ("read Term " ++ show (T fac facs) ++ "\n") return ()- (return $ T fac facs)) <|> trace "DEBUG: pTerm failed" (return (T (FI "x") []))+ (return $ T fac facs))+ <|> trace "DEBUG: pTerm failed" fail "failed" pMoreTerms :: CharParser [String] [(OpAddSub, Term)] pMoreTerms = many $ try (pOpAddSub >>= (\op->pTerm >>= (\t -> return (op,t))))
src/Language/C0/Types/C0Types.hs view
@@ -16,10 +16,9 @@ data WhileStatement = W BoolExpression Statement deriving (Eq, Show) data BoolExpression = Bool SimpleExpression Relation SimpleExpression deriving (Eq, Show) data Relation = EQ | NE | LT | GT | LE | GE deriving (Eq, Show)-data SimpleExpression = Simple (Maybe Sign) Term [(OpAddSub, Term)] deriving (Eq, Show)+data SimpleExpression = Simple Term [(OpAddSub, Term)] deriving (Eq, Show) data OpAddSub = Add | Sub deriving (Eq, Show) data OpMulDivMod = Mul | Div | Mod deriving (Eq, Show)-data Sign = Plus | Minus deriving (Eq, Show) data Term = T Factor [(OpMulDivMod, Factor)] deriving (Eq, Show) data Factor = FI Ident | FN Number