From: pimjager Date: Mon, 29 Feb 2016 12:45:20 +0000 (+0100) Subject: Merged branch master X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=e4603fe257568bbc124d95dd88ea3b85dcccfa00;hp=-c;p=cc1516.git Merged branch master --- e4603fe257568bbc124d95dd88ea3b85dcccfa00 diff --combined src/main.prj index f2d50f9,177aab2..7ba18dc --- a/src/main.prj +++ b/src/main.prj @@@ -31,7 -31,6 +31,6 @@@ Globa Link LinkMethod: Static GenerateRelocations: False - GenerateSymbolTable: False GenerateLinkMap: False LinkResources: False ResourceSource: @@@ -422,7 -421,7 +421,7 @@@ OtherModule Fusion: False Module Name: Control.Applicative - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -436,7 -435,7 +435,7 @@@ Fusion: False Module Name: Control.Monad - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -450,7 -449,7 +449,7 @@@ Fusion: False Module Name: Data.Either - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -464,7 -463,7 +463,7 @@@ Fusion: False Module Name: Data.Foldable - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -478,7 -477,7 +477,7 @@@ Fusion: False Module Name: Data.Func - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -492,7 -491,7 +491,7 @@@ Fusion: False Module Name: Data.Functor - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -506,7 -505,7 +505,7 @@@ Fusion: False Module Name: Data.List - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -520,7 -519,7 +519,7 @@@ Fusion: False Module Name: Data.Map - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -534,7 -533,7 +533,7 @@@ Fusion: False Module Name: Data.Maybe - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -548,7 -547,7 +547,7 @@@ Fusion: False Module Name: Data.Monoid - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -562,7 -561,7 +561,7 @@@ Fusion: False Module Name: Data.Set - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -576,7 -575,7 +575,7 @@@ Fusion: False Module Name: Data.Traversable - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -590,7 -589,7 +589,7 @@@ Fusion: False Module Name: Data.Void - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -604,7 -603,7 +603,7 @@@ Fusion: False Module Name: System.CommandLine - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -618,7 -617,7 +617,7 @@@ Fusion: False Module Name: System.IO - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -632,7 -631,7 +631,7 @@@ Fusion: False Module Name: System._Pointer - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -646,7 -645,7 +645,7 @@@ Fusion: False Module Name: Text - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -660,7 -659,7 +659,7 @@@ Fusion: False Module Name: Text.JSON - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -674,7 -673,7 +673,7 @@@ Fusion: False Module Name: Text.PPrint - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Independent Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -686,23 -685,9 +685,23 @@@ ReadableABC: False ReuseUniqueNodes: True Fusion: False + Module + Name: StdMaybe + Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Independent/Deprecated/StdLib + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False Module Name: System.OS - Dir: {Application}/lib/iTasks-SDK/Dependencies/clean-platform/src/libraries/OS-Mac + Dir: {Application}/lib/iTasks-SDK/Dependencies/Platform/OS-Linux-64 Compiler NeverMemoryProfile: False NeverTimeProfile: False @@@ -742,20 -727,6 +741,20 @@@ ReadableABC: False ReuseUniqueNodes: True Fusion: False + Module + Name: GenPrint + Dir: {Application}/lib/iTasks-SDK/Patches/Generics + Compiler + NeverMemoryProfile: False + NeverTimeProfile: False + StrictnessAnalysis: True + ListTypes: StrictExportTypes + ListAttributes: True + Warnings: True + Verbose: True + ReadableABC: False + ReuseUniqueNodes: True + Fusion: False Module Name: StdGeneric Dir: {Application}/lib/iTasks-SDK/Patches/StdEnv diff --combined src/parse.icl index f5cb0c8,0f0f42c..9fa1377 --- a/src/parse.icl +++ b/src/parse.icl @@@ -12,7 -12,6 +12,7 @@@ import Control.Applicativ import Data.Func from Data.List import intercalate, replicate, instance Functor [] from Text import class Text(concat), instance Text String +import GenPrint import yard import lex @@@ -54,8 -53,8 +54,8 @@@ parseStmt = parseIfStmt <|> parseWhileS parseIfStmt = liftM3 IfStmt (satTok IfToken *> parseBBraces parseExpr) (parseBlock <|> parseOneLine) - (optional (satTok ElseToken *> (parseBlock <|> parseOneLine) - ) >>= pure o fromMaybe []) + (liftM (fromMaybe []) + (optional (satTok ElseToken *> (parseBlock<|> parseOneLine)))) parseWhileStmt :: Parser Token Stmt parseWhileStmt = satTok WhileToken *> @@@ -74,39 -73,39 +74,39 @@@ parseBBraces p = satTok BraceOpenToken parseBCBraces :: (Parser Token a) -> Parser Token a parseBCBraces p = satTok CBraceOpenToken *> p <* satTok CBraceCloseToken + parseBSqBraces :: (Parser Token a) -> Parser Token a + parseBSqBraces p = satTok SquareOpenToken *> p <* satTok SquareCloseToken + parseFunType :: Parser Token FunType - parseFunType = satTok DoubleColonToken *> - (parseInOutType <|> (parseVoidOrType >>= \t->pure $ FunType [] t)) + parseFunType = satTok DoubleColonToken *> + (parseInOutType <|> (liftM (FunType []) parseVoidOrType)) where parseInOutType :: Parser Token FunType - parseInOutType = some parseType <* satTok ArrowToken - >>= \intypes-> parseVoidOrType - >>= \outtypes->pure $ FunType intypes outtypes + parseInOutType = liftM2 FunType + (some parseType <* satTok ArrowToken) parseVoidOrType parseVoidOrType :: Parser Token (Maybe Type) parseVoidOrType = (satTok VoidToken *> pure Nothing) <|> - (parseType >>= \type->pure $ Just type) + (liftM Just parseType) parseVarDecl :: Parser Token VarDecl - parseVarDecl = + parseVarDecl = liftM3 VarDecl (parseType <|> trans1 VarToken VarType ) - >>= \t->parseIdent <* satTok AssignmentToken - >>= \i->parseExpr <* satTok SColonToken - >>= \e->pure $ VarDecl i t e + (parseIdent <* satTok AssignmentToken) + (parseExpr <* satTok SColonToken) parseType :: Parser Token Type parseType = trans1 IntTypeToken IntType <|> trans1 CharTypeToken CharType <|> trans1 BoolTypeToken BoolType <|> - (satTok SquareOpenToken *> parseType <* satTok SquareCloseToken - >>= \t.pure $ ListType t) <|> - (satTok BraceOpenToken *> parseType <* satTok CommaToken - >>= \t1->parseType <* satTok BraceCloseToken - >>= \t2->pure $ TupleType t1 t2) <|> - (parseIdent >>= \e.pure $ IdType e) <|> - empty + (liftM ListType (parseBSqBraces parseType)) <|> + (liftM2 TupleType + (satTok BraceOpenToken *> parseType <* satTok CommaToken) + (parseType <* satTok BraceCloseToken)) <|> + (liftM IdType parseIdent) + //TODO hieronder omzetten naar liftm notatie parseExpr :: Parser Token Expr parseExpr = //Operators in order of binding strength parseOpR (trans1 ColonToken BiCons) $ @@@ -173,9 -172,14 +173,15 @@@ trans2 t f = satTok t >>= \(_, r).pure 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 (t === tok) (return tok) (fail (printToString t, pos)) -satTok t = satisfy $ eq t ++satTok t = top >>= \tok=:(pos, tv) -> if (eq t tok) (return tok) (fail (printToString t, pos)) + where + eq (IdentToken _) (_, IdentToken _) = True + eq (NumberToken _) (_, NumberToken _) = True + eq (CharToken _) (_, CharToken _) = True + eq x (_, y) = gEq {|*|} x y parseSepList :: TokenValue (Parser Token a) -> Parser Token [a] parseSepList sep p = @@@ -220,7 -224,7 +226,7 @@@ printStatements [s:ss] i = (case s o printCodeBlock [] _ = ["{}"] printCodeBlock [x] i = ["\n":printStatements [x] (i+1)] printCodeBlock x i = - ["{\n":printStatements x (i+1)] ++ indent i ["}"] + ["{\n":printStatements x (i+1)] ++ indent i ["}\n"] indent :: Int [String] -> [String] indent i rest = replicate i "\t" ++ rest @@@ -230,7 -234,7 +236,7 @@@ instance print FunType wher [if (isEmpty at) "" "->":maybe ["Void"] print rt] instance print VarDecl where - print (VarDecl i t e) = print t ++ [" ":i:"=":print e] ++ [";"] + print (VarDecl t i e) = print t ++ [" ":i:"=":print e] ++ [";"] instance print Type where print (TupleType t1 t2) = ["(":print t1] ++ [",":print t2] ++ [")"]