Cleaned up logs in assembler/parser
This commit is contained in:
@@ -47,7 +47,8 @@ int main(int argc, char *argv[])
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
#if VERBOSE >= 1
|
#if VERBOSE >= 1
|
||||||
printf("[%sASSEMBLER%s]: Read `%s`\n", TERM_YELLOW, TERM_RESET, source_file);
|
printf("[%sASSEMBLER%s]: Read `%s` -> %lu bytes\n", TERM_YELLOW, TERM_RESET,
|
||||||
|
source_file, buffer.available);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
token_stream_t tokens = {0};
|
token_stream_t tokens = {0};
|
||||||
@@ -73,7 +74,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
#if VERBOSE >= 1
|
#if VERBOSE >= 1
|
||||||
printf("[%sTOKENISER%s]: %lu bytes -> %lu tokens\n", TERM_GREEN, TERM_RESET,
|
printf("[%sTOKENISER%s]: %lu bytes -> %lu tokens\n", TERM_GREEN, TERM_RESET,
|
||||||
buffer.used, tokens.available);
|
buffer.available, tokens.available);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if VERBOSE >= 2
|
#if VERBOSE >= 2
|
||||||
|
|||||||
76
asm/parser.c
76
asm/parser.c
@@ -752,37 +752,6 @@ perr_t parse_next(token_stream_t *stream, presult_t *ret)
|
|||||||
perr_t process_presults(presult_t *results, size_t res_count,
|
perr_t process_presults(presult_t *results, size_t res_count,
|
||||||
size_t *result_reached, prog_t **program_ptr)
|
size_t *result_reached, prog_t **program_ptr)
|
||||||
{
|
{
|
||||||
#if VERBOSE >= 2
|
|
||||||
printf("[%sprocess_presults%s]: Results found\n", TERM_YELLOW, TERM_RESET);
|
|
||||||
for (size_t i = 0; i < res_count; ++i)
|
|
||||||
{
|
|
||||||
presult_t pres = results[i];
|
|
||||||
switch (pres.type)
|
|
||||||
{
|
|
||||||
case PRES_LABEL:
|
|
||||||
printf("\tLABEL: label=%s\n", pres.label.name);
|
|
||||||
break;
|
|
||||||
case PRES_LABEL_ADDRESS:
|
|
||||||
printf("\tLABEL_CALL: label=%s, inst=", pres.label.name);
|
|
||||||
inst_print(pres.instruction, stdout);
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
case PRES_RELATIVE_ADDRESS:
|
|
||||||
printf("\tRELATIVE_CALL: addr=%ld, inst=", pres.address);
|
|
||||||
inst_print(pres.instruction, stdout);
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
case PRES_GLOBAL_LABEL:
|
|
||||||
printf("\tSET_GLOBAL_START: name=%s\n", pres.label.name);
|
|
||||||
break;
|
|
||||||
case PRES_COMPLETE_RESULT:
|
|
||||||
printf("\tCOMPLETE: inst=");
|
|
||||||
inst_print(pres.instruction, stdout);
|
|
||||||
printf("\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
assert(result_reached && "process_presults: result_reached is NULL?!");
|
assert(result_reached && "process_presults: result_reached is NULL?!");
|
||||||
*result_reached = 0;
|
*result_reached = 0;
|
||||||
label_t start_label = {0};
|
label_t start_label = {0};
|
||||||
@@ -916,16 +885,51 @@ perr_t parse_stream(token_stream_t *stream, prog_t **program_ptr)
|
|||||||
++stream->used;
|
++stream->used;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
presults.available = presults.used / sizeof(presult_t);
|
||||||
|
presults.used = 0;
|
||||||
|
|
||||||
|
#if VERBOSE >= 2
|
||||||
|
printf("[%sPARSER%s]: %lu tokens -> %lu parse units\n", TERM_YELLOW,
|
||||||
|
TERM_RESET, stream->available, presults.available);
|
||||||
|
for (size_t i = 0; i < presults.available; ++i)
|
||||||
|
{
|
||||||
|
presult_t pres = DARR_AT(presult_t, presults.data, i);
|
||||||
|
switch (pres.type)
|
||||||
|
{
|
||||||
|
case PRES_LABEL:
|
||||||
|
printf("\tLABEL: label=%s\n", pres.label.name);
|
||||||
|
break;
|
||||||
|
case PRES_LABEL_ADDRESS:
|
||||||
|
printf("\tLABEL_CALL: label=%s, inst=", pres.label.name);
|
||||||
|
inst_print(pres.instruction, stdout);
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
|
case PRES_RELATIVE_ADDRESS:
|
||||||
|
printf("\tRELATIVE_CALL: addr=%ld, inst=", pres.address);
|
||||||
|
inst_print(pres.instruction, stdout);
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
|
case PRES_GLOBAL_LABEL:
|
||||||
|
printf("\tSET_GLOBAL_START: name=%s\n", pres.label.name);
|
||||||
|
break;
|
||||||
|
case PRES_COMPLETE_RESULT:
|
||||||
|
printf("\tCOMPLETE: inst=");
|
||||||
|
inst_print(pres.instruction, stdout);
|
||||||
|
printf("\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
size_t results_processed = 0;
|
size_t results_processed = 0;
|
||||||
perr = process_presults((presult_t *)presults.data,
|
perr = process_presults((presult_t *)presults.data, presults.available,
|
||||||
presults.used / sizeof(presult_t), &results_processed,
|
&results_processed, program_ptr);
|
||||||
program_ptr);
|
if (results_processed != presults.available)
|
||||||
if (results_processed != presults.used / sizeof(presult_t))
|
|
||||||
{
|
{
|
||||||
presult_t pres = DARR_AT(presult_t, presults.data, results_processed);
|
presult_t pres = DARR_AT(presult_t, presults.data, results_processed);
|
||||||
stream->used = pres.stream_index;
|
stream->used = pres.stream_index;
|
||||||
}
|
}
|
||||||
presults_free((presult_t *)presults.data, presults.used / sizeof(presult_t));
|
presults_free((presult_t *)presults.data, presults.available);
|
||||||
free(presults.data);
|
free(presults.data);
|
||||||
return perr;
|
return perr;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user