ref: split parser into separate files

This commit is contained in:
samsonium
2026-10-29 00:08:44 +03:00
parent 62b0030e4a
commit 8c90d54782
27 changed files with 1444 additions and 1307 deletions
+27
View File
@@ -0,0 +1,27 @@
#include <compiler/fzl_parser.h>
#include <compiler/internals/parser.h>
#include <stdio.h>
// Object construct parsing
fzl_node_t *pa_new(fzl_parser_t *parser)
{
if (!is(parser, FZL_TOKTYPE_NEW))
return pa_or(parser);
fzl_token_t *new = consume(parser);
fzl_node_t *objname = pa_or(parser);
if (!objname || (objname->type != FZL_NODETYPE_IDENTIFIER &&
objname->type != FZL_NODETYPE_FIELD))
{
fzl_freeast(objname);
snprintf(plast_err, sizeof(plast_err),
"'%s': expected class name after 'new' keyword at %ld:%ld",
last_known_tok->filename, last_known_tok->ln, last_known_tok->cn);
return NULL;
}
fzl_node_t *node = fzl_mknode(FZL_NODETYPE_CONSTRUCT, new);
node->construct.name = objname;
return node;
}