more sample programs, added strings, added desugar for strings

This commit is contained in:
sebastianselander 2023-05-08 20:22:57 +02:00
parent 2226a6ad33
commit 2fab7f2bdf
4 changed files with 52 additions and 4 deletions

View file

@ -71,10 +71,14 @@ desugarExp = \case
EAnn e t -> EAnn (desugarExp e) (desugarType t)
EVarS (VSymbol (Symbol symb)) -> EVar (LIdent $ fixName symb)
EVarS (VIdent (LIdent ident)) -> EVar $ LIdent $ fixName ident
EVar i -> EVar i
EVar (LIdent i) -> EVar (LIdent $ fixName i)
ELit (LString str) -> toList str
ELit l -> ELit l
EInj i -> EInj i
toList :: String -> Exp
toList = foldr (EApp . EApp (EInj (UIdent "Cons")) . ELit . LChar) (EInj (UIdent "Nil"))
desugarBranch :: Branch -> Branch
desugarBranch (Branch p e) = Branch (desugarPattern p) (desugarExp e)
@ -89,6 +93,7 @@ desugarPattern = \case
desugarLit :: Lit -> Lit
desugarLit (LInt i) = LInt i
desugarLit (LChar c) = LChar c
desugarLit (LString c) = LString c
fixName :: String -> String
fixName = concatMap mapSymbols

View file

@ -69,7 +69,7 @@ initOpts =
, debug = False
, gc = True
, typechecker = Nothing
, preludeOpt = True
, preludeOpt = False
}
enableHelp :: Options -> Options
@ -97,7 +97,7 @@ data Options = Options
, debug :: Bool
, gc :: Bool
, typechecker :: Maybe TypeChecker
, preludeOpt :: Bool
, preludeOpt :: Bool
}
main' :: Options -> String -> IO ()
@ -110,7 +110,8 @@ main' opts s =
file <- readFile s
printToErr "-- Parse Tree -- "
parsed <- fromErr . pProgram . resolveLayout True $ myLexer (file ++ prelude)
let file' = if opts.preludeOpt then file else file ++ prelude
parsed <- fromErr . pProgram . resolveLayout True $ myLexer file'
log parsed
printToErr "-- Desugar --"