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