aboutsummaryrefslogtreecommitdiffstats
path: root/src/parse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse.cpp')
-rw-r--r--src/parse.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/parse.cpp b/src/parse.cpp
index 7482039..28279f9 100644
--- a/src/parse.cpp
+++ b/src/parse.cpp
@@ -170,13 +170,13 @@ void
initLang(PEnv& penv, TEnv& tenv)
{
// Types
- tenv.def(penv.sym("Nothing"), new AType(penv.sym("Nothing")));
- tenv.def(penv.sym("Bool"), new AType(penv.sym("Bool")));
- tenv.def(penv.sym("Int"), new AType(penv.sym("Int")));
- tenv.def(penv.sym("Float"), new AType(penv.sym("Float")));
- tenv.def(penv.sym("String"), new AType(penv.sym("String")));
- tenv.def(penv.sym("Lexeme"), new AType(penv.sym("Lexeme")));
- tenv.def(penv.sym("Quote"), new AType(penv.sym("Quote")));
+ tenv.def(penv.sym("Nothing"), new AType(penv.sym("Nothing"), AType::PRIM));
+ tenv.def(penv.sym("Bool"), new AType(penv.sym("Bool"), AType::PRIM));
+ tenv.def(penv.sym("Int"), new AType(penv.sym("Int"), AType::PRIM));
+ tenv.def(penv.sym("Float"), new AType(penv.sym("Float"), AType::PRIM));
+ tenv.def(penv.sym("String"), new AType(penv.sym("String"), AType::PRIM));
+ tenv.def(penv.sym("Lexeme"), new AType(penv.sym("Lexeme"), AType::PRIM));
+ tenv.def(penv.sym("Quote"), new AType(penv.sym("Quote"), AType::PRIM));
// Literals
static bool trueVal = true;
@@ -188,11 +188,13 @@ initLang(PEnv& penv, TEnv& tenv)
penv.defmac("def", macDef);
// Special forms
- penv.reg(true, "fn", PEnv::Handler(parseFn));
- penv.reg(true, "quote", PEnv::Handler(parseQuote));
- penv.reg(true, "if", PEnv::Handler(parseCall<AIf>));
- penv.reg(true, ".", PEnv::Handler(parseCall<ADot>));
- penv.reg(true, "def", PEnv::Handler(parseCall<ADef>));
+ penv.reg(true, "fn", PEnv::Handler(parseFn));
+ penv.reg(true, "quote", PEnv::Handler(parseQuote));
+ penv.reg(true, "if", PEnv::Handler(parseCall<AIf>));
+ penv.reg(true, ".", PEnv::Handler(parseCall<ADot>));
+ penv.reg(true, "def", PEnv::Handler(parseCall<ADef>));
+ penv.reg(true, "def-type", PEnv::Handler(parseCall<ADefType>));
+ penv.reg(true, "match", PEnv::Handler(parseCall<AMatch>));
// Numeric primitives
penv.reg(true, "+", PEnv::Handler(parseCall<APrimitive>));