wip: working on analyzer
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user