aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.h
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-30 08:51:46 +0200
committerBad Diode <bd@badd10de.dev>2021-10-30 08:51:46 +0200
commitc0520617a974abd27c413fb21ecd64ca2d11d135 (patch)
treec284b450c7532303c1eb138bcf6fb45a8540603f /src/parser.h
parentf17b11003fe384b49a7bf844824f23167b6095e0 (diff)
downloadbdl-c0520617a974abd27c413fb21ecd64ca2d11d135.tar.gz
bdl-c0520617a974abd27c413fb21ecd64ca2d11d135.zip
Add parsing for def/set! expressions
Diffstat (limited to 'src/parser.h')
-rwxr-xr-xsrc/parser.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/parser.h b/src/parser.h
index b2b07c8..14d9df5 100755
--- a/src/parser.h
+++ b/src/parser.h
@@ -13,6 +13,8 @@ typedef enum ObjectType {
13 OBJ_TYPE_PAIR, 13 OBJ_TYPE_PAIR,
14 OBJ_TYPE_LAMBDA, 14 OBJ_TYPE_LAMBDA,
15 OBJ_TYPE_IF, 15 OBJ_TYPE_IF,
16 OBJ_TYPE_DEF,
17 OBJ_TYPE_SET,
16} ObjectType; 18} ObjectType;
17 19
18typedef struct Object { 20typedef struct Object {
@@ -43,6 +45,13 @@ typedef struct Object {
43 struct Object *expr_true; 45 struct Object *expr_true;
44 struct Object *expr_false; 46 struct Object *expr_false;
45 }; 47 };
48
49 // OBJ_TYPE_DEF
50 // OBJ_TYPE_SET
51 struct {
52 struct Object *var_name;
53 struct Object *var_expr;
54 };
46 }; 55 };
47 56
48 size_t line; 57 size_t line;
@@ -71,6 +80,8 @@ Object * parse_bool(Token tok);
71Object * parse_fixnum(Token tok); 80Object * parse_fixnum(Token tok);
72Object * parse_list(Parser *parser, Errors *errors); 81Object * parse_list(Parser *parser, Errors *errors);
73Object * parse_lambda(Parser *parser, Errors *errors); 82Object * parse_lambda(Parser *parser, Errors *errors);
83Object * parse_if(Parser *parser, Errors *errors);
84Object * parse_var(Parser *parser, Errors *errors);
74Root * parse(Token *tokens, Errors *errors); 85Root * parse(Token *tokens, Errors *errors);
75 86
76// Object operations. 87// Object operations.