diff options
-rw-r--r-- | src/bootstrap/parser.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/bootstrap/parser.c b/src/bootstrap/parser.c index c84c6c6..c4fcbb8 100644 --- a/src/bootstrap/parser.c +++ b/src/bootstrap/parser.c | |||
@@ -39,12 +39,6 @@ Object * | |||
39 | parse_list(Visitor *vs) { | 39 | parse_list(Visitor *vs) { |
40 | Token tok = peek_token(vs); | 40 | Token tok = peek_token(vs); |
41 | if (tok.type == TOKEN_EOF) { | 41 | if (tok.type == TOKEN_EOF) { |
42 | error_push((Error){ | ||
43 | .type = ERR_TYPE_PARSER, | ||
44 | .value = ERR_UNBALANCED_PAREN, | ||
45 | .line = tok.line, | ||
46 | .col = tok.column, | ||
47 | }); | ||
48 | return obj_err; | 42 | return obj_err; |
49 | } | 43 | } |
50 | Object *next_obj = parse_tree(vs); | 44 | Object *next_obj = parse_tree(vs); |
@@ -60,12 +54,6 @@ parse_list(Visitor *vs) { | |||
60 | break; | 54 | break; |
61 | } | 55 | } |
62 | if (tok.type == TOKEN_EOF) { | 56 | if (tok.type == TOKEN_EOF) { |
63 | error_push((Error){ | ||
64 | .type = ERR_TYPE_PARSER, | ||
65 | .value = ERR_UNBALANCED_PAREN, | ||
66 | .line = tok.line, | ||
67 | .col = tok.column, | ||
68 | }); | ||
69 | free_objects(root); | 57 | free_objects(root); |
70 | return obj_err; | 58 | return obj_err; |
71 | } | 59 | } |
@@ -113,7 +101,16 @@ parse_tree(Visitor *vs) { | |||
113 | return obj_err; | 101 | return obj_err; |
114 | } break; | 102 | } break; |
115 | case TOKEN_LPAREN: { | 103 | case TOKEN_LPAREN: { |
116 | return parse_list(vs); | 104 | Object *obj = parse_list(vs); |
105 | if (obj == obj_err) { | ||
106 | error_push((Error){ | ||
107 | .type = ERR_TYPE_PARSER, | ||
108 | .value = ERR_UNBALANCED_PAREN, | ||
109 | .line = tok.line, | ||
110 | .col = tok.column, | ||
111 | }); | ||
112 | } | ||
113 | return obj; | ||
117 | } break; | 114 | } break; |
118 | case TOKEN_STRING: { | 115 | case TOKEN_STRING: { |
119 | Object *obj = make_string(); | 116 | Object *obj = make_string(); |