wip: working on analyzer

This commit is contained in:
samsonium
2026-10-25 19:24:02 +03:00
parent 562b1b2e0a
commit 4904f40037
4 changed files with 131 additions and 7 deletions
+62
View File
@@ -0,0 +1,62 @@
#include <compiler/fzl_analyzer.h>
#include <compiler/fzl_parser.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
fzl_analyzer_t *fzl_mkanalyzer(fzl_node_t *node)
{
if (!node)
return NULL;
fzl_analyzer_t *analyzer = malloc(sizeof(fzl_analyzer_t));
if (!analyzer)
return NULL;
analyzer->root = node;
analyzer->warnings_top = 0;
analyzer->errors_top = 0;
memset(analyzer->errors, 0, sizeof(analyzer->errors));
memset(analyzer->warnings, 0, sizeof(analyzer->warnings));
return analyzer;
}
// Push error to errors list
bool push_error(fzl_analyzer_t *analyzer, char *error)
{
if (analyzer->errors_top >= 256)
return false;
analyzer->errors[analyzer->errors_top++] = error;
return true;
}
// Push warning to warnings list
bool push_warning(fzl_analyzer_t *analyzer, char *error)
{
if (analyzer->warnings_top >= 256)
return false;
analyzer->warnings[analyzer->warnings_top++] = error;
return true;
}
void fzl_analyze(fzl_analyzer_t *analyzer)
{
if (!analyzer)
return;
//
}
void fzl_freeanalyzer(fzl_analyzer_t *analyzer)
{
if (!analyzer)
return;
memset(analyzer->errors, 0, sizeof(analyzer->errors));
memset(analyzer->warnings, 0, sizeof(analyzer->warnings));
free(analyzer);
}