more sample programs, added strings, added desugar for strings
This commit is contained in:
parent
2226a6ad33
commit
2fab7f2bdf
4 changed files with 52 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 --"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue