Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c7cce94119 | ||
|
|
673a28fbc7 | ||
|
|
160c6c6488 |
+1
-1
@@ -46,7 +46,7 @@ foreach (TEST_FILE IN LISTS TEST_PROGS)
|
||||
|
||||
add_test(
|
||||
NAME "progs_compile_${TEST_NAME}"
|
||||
COMMAND fzc -o "p_${CMAKE_CURRENT_BINARY_DIR}/${TEST_NAME}.fzb" "${CMAKE_CURRENT_SOURCE_DIR}/${TEST_FILE}"
|
||||
COMMAND fzc -o "${CMAKE_CURRENT_BINARY_DIR}/p_${TEST_NAME}.fzb" "${CMAKE_CURRENT_SOURCE_DIR}/${TEST_FILE}"
|
||||
)
|
||||
add_test(
|
||||
NAME "progs_runtime_${TEST_NAME}"
|
||||
|
||||
@@ -30,10 +30,7 @@ fzl_token_t this_tok = {.type = FZL_TOKTYPE_NAME,
|
||||
fzl_parser_t *fzl_mkparser(fzl_reader_ll_t *first)
|
||||
{
|
||||
if (!first)
|
||||
{
|
||||
snprintf(plast_err, sizeof(plast_err), "token is null");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fzl_parser_t *parser = malloc(sizeof(fzl_parser_t));
|
||||
if (!parser)
|
||||
@@ -962,7 +959,7 @@ fzl_node_t *parse_block(fzl_parser_t *parser)
|
||||
stmts[count++] = node;
|
||||
}
|
||||
fzl_token_t *rbrace = consume(parser);
|
||||
if (rbrace && rbrace->type != FZL_TOKTYPE_RBRACE)
|
||||
if (!rbrace || rbrace->type != FZL_TOKTYPE_RBRACE)
|
||||
{
|
||||
snprintf(plast_err, sizeof(plast_err),
|
||||
"'%s': missing '}' after block at %ld:%ld", rbrace->filename,
|
||||
|
||||
@@ -96,11 +96,21 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
fzl_parser_t *parser = fzl_mkparser(rd->first);
|
||||
if (!parser)
|
||||
{
|
||||
printf("%sError%s: failed to allocate writer\n", FZL_CERROR, FZL_CRST);
|
||||
fzl_freeoptions(opts);
|
||||
fzl_freereader(rd);
|
||||
fzl_freelinked(linked);
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = fzl_parse(parser);
|
||||
if (result != 0)
|
||||
{
|
||||
printf("%sError%s: %s\n", FZL_CERROR, FZL_CRST, fzl_parser_geterror());
|
||||
fzl_freeoptions(opts);
|
||||
fzl_freeast(parser->root);
|
||||
fzl_freeparser(parser);
|
||||
fzl_freereader(rd);
|
||||
fzl_freelinked(linked);
|
||||
@@ -116,12 +126,24 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
fzl_walker_t *walker = fzl_mkwalker(parser->root);
|
||||
if (!walker)
|
||||
{
|
||||
printf("%sError%s: failed to allocate writer\n", FZL_CERROR, FZL_CRST);
|
||||
fzl_freeoptions(opts);
|
||||
fzl_freeast(parser->root);
|
||||
fzl_freeparser(parser);
|
||||
fzl_freereader(rd);
|
||||
fzl_freelinked(linked);
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = fzl_walk(walker);
|
||||
if (result != 0)
|
||||
{
|
||||
printf("%sError%s: %s\n", FZL_CERROR, FZL_CRST, fzl_walker_geterror());
|
||||
fzl_freeoptions(opts);
|
||||
fzl_freewalker(walker);
|
||||
fzl_freeast(parser->root);
|
||||
fzl_freeparser(parser);
|
||||
fzl_freereader(rd);
|
||||
fzl_freelinked(linked);
|
||||
@@ -162,6 +184,18 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
fzl_writer_t *writer = fzl_mkwriter(outpath);
|
||||
if (!writer)
|
||||
{
|
||||
printf("%sError%s: failed to allocate writer\n", FZL_CERROR, FZL_CRST);
|
||||
fzl_freeoptions(opts);
|
||||
fzl_freewalker(walker);
|
||||
fzl_freeast(parser->root);
|
||||
fzl_freeparser(parser);
|
||||
fzl_freereader(rd);
|
||||
fzl_freelinked(linked);
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = fzl_write(writer, walker);
|
||||
if (result != 0)
|
||||
{
|
||||
@@ -169,6 +203,7 @@ int main(int argc, char **argv)
|
||||
fzl_freeoptions(opts);
|
||||
fzl_freewriter(writer);
|
||||
fzl_freewalker(walker);
|
||||
fzl_freeast(parser->root);
|
||||
fzl_freeparser(parser);
|
||||
fzl_freereader(rd);
|
||||
fzl_freelinked(linked);
|
||||
|
||||
Reference in New Issue
Block a user