fix(parser)

parser used to work depending on opening parenthesis and therefore
parsed e.g. `(if 0 (list 1 2 3) 1)` as two seperate expressions, thus
the example would print:
1
(1 2 3)

Now fixed by using a stack for parenthesis
This commit is contained in:
2026-07-21 20:12:15 +02:00
parent 8ec82a66e0
commit 09b552ed8c
4 changed files with 62 additions and 28 deletions
+2 -2
View File
@@ -78,10 +78,10 @@ void build_scopes(Scopes *scopes);
void tokenize(Nob_String_View content, Tokens *tokens);
int parse_one(Tokens *tokens, Node *node);
void parse(Tokens *tokens, Nodes *nodes);
int parse(Tokens *tokens, Nodes *nodes);
int eval_one(Node input, Scopes *scopes, Node *result);
int eval(Nodes *inputs, Scopes *scopes, Nodes *results);
int eval(Nodes inputs, Scopes *scopes, Nodes *results);
// builtins
int lisp_function_add(Nodes *args, Scopes *scopes, Node *result);