aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/main.c b/src/main.c
index 8c4bfec..8baaa94 100644
--- a/src/main.c
+++ b/src/main.c
@@ -811,7 +811,10 @@ static int toklist_expr(struct tctx *tctx, struct toklist **toklist)
if(TOKEN(tctx)->type == TOKEN_LP) depth++;
else if(TOKEN(tctx)->type == TOKEN_RP) depth--;
-
+
+ // printf("%zu\n", depth);
+ // print_token(TOKEN(tctx));
+
if(toklist)
token_clone(&tokens[tokens_len++], TOKEN(tctx));
@@ -823,10 +826,6 @@ static int toklist_expr(struct tctx *tctx, struct toklist **toklist)
}
return 0;
-
-// fail:
- // for(size_t i = 0; i < tokens_len; i++) token_dealloc(&tokens[i]);
- // return 1;
}
#define SET_TOKEN_TYPE(t, ttype) (t)->type = (ttype)
@@ -842,6 +841,15 @@ static struct toklist *value_to_toklist(value_t value)
if(strcmp(value->value.atom, "lambda") == 0) {
SET_TOKEN_TYPE(&token, TOKEN_LAMBDA);
break;
+ } else if(strcmp(value->value.atom, "if") == 0) {
+ SET_TOKEN_TYPE(&token, TOKEN_IF);
+ break;
+ } else if(strcmp(value->value.atom, "quote") == 0) {
+ SET_TOKEN_TYPE(&token, TOKEN_QUOTE_FORM);
+ break;
+ } else if(strcmp(value->value.atom, "'") == 0) {
+ SET_TOKEN_TYPE(&token, TOKEN_QUOTE);
+ break;
}
SET_TOKEN_TYPE(&token, TOKEN_ID);