Merge branch 'master' of github.com:dopefishh/cc1516
authorMart Lubbers <mart@martlubbers.net>
Mon, 29 Feb 2016 14:01:58 +0000 (15:01 +0100)
committerMart Lubbers <mart@martlubbers.net>
Mon, 29 Feb 2016 14:01:58 +0000 (15:01 +0100)
1  2 
src/parse.icl

diff --combined src/parse.icl
@@@ -53,10 -53,11 +53,11 @@@ parseStmt = parseIfStmt <|> parseWhileS
  
                parseIfStmt :: Parser Token Stmt
                parseIfStmt = liftM3 IfStmt
-                       (satTok IfToken *> parseBBraces parseExpr)
-                       (parseBlock <|> parseOneLine)
-                       (liftM (fromMaybe []) 
-                               (optional (satTok ElseToken *> (parseBlock<|> parseOneLine))))
+             (satTok IfToken *> parseBBraces parseExpr)
+             (parseBlock <|> parseOneLine)
+             (liftM (fromMaybe []) 
+                 (optional (satTok ElseToken *> (parseBlock<|> parseOneLine))))
  
                parseWhileStmt :: Parser Token Stmt
                parseWhileStmt = satTok WhileToken *> 
@@@ -150,7 -151,8 +151,7 @@@ parseVarDef = liftM2 VarDe
                (parseIdent >>= \i.if (i == "snd") (pure FieldSnd) empty))))
  
  parseOp1 :: Parser Token Op1
 -parseOp1 = trans1 DashToken UnMinus <|> 
 -      trans1 ExclamationToken UnNegation
 +parseOp1 = trans1 DashToken UnMinus <|> trans1 ExclamationToken UnNegation
  
  parseBBraces :: (Parser Token a) -> Parser Token a
  parseBBraces p = satTok BraceOpenToken *> p <* satTok BraceCloseToken
@@@ -167,7 -169,7 +168,7 @@@ parseTuple p = satTok BraceOpenToken *
        <* satTok BraceCloseToken
  
  trans2 :: TokenValue (TokenValue -> a) -> Parser Token a
 -trans2 t f = satTok t >>= \(_, r).pure (f r)
 +trans2 t f = liftM (f o snd) $ satTok t
  
  trans1 :: TokenValue a -> Parser Token a
  trans1 t r = trans2 t $ const r
  derive gPrint TokenValue
  derive gEq TokenValue
  satTok :: TokenValue -> Parser Token Token
- satTok t = top >>= \tok=:(pos, tv) -> if (eq t tok) (return tok) (fail <?> (printToString tv, pos))
+ satTok t = top >>= \tok=:(pos, tv) -> if (eq t tok) 
+                                             (return tok) 
+                                             (fail <?> (printToString tv+++printToString t, pos))
        where
                eq (IdentToken _) (_, IdentToken _) = True
                eq (NumberToken _) (_, NumberToken _) = True