diff options
-rw-r--r-- | assembler.c | 11 | ||||
-rw-r--r-- | lex.c | 7 | ||||
-rw-r--r-- | test/emul/001-empty.asm | 0 | ||||
-rw-r--r-- | test/full-pipeline/010-empty.asm | 0 |
4 files changed, 18 insertions, 0 deletions
diff --git a/assembler.c b/assembler.c index 9ffdb85..7ae699d 100644 --- a/assembler.c +++ b/assembler.c @@ -7,6 +7,9 @@ #include "instruction.h" #include "output/output_bin.h" +//#define DEBUG +#include "debug.h" + void print_help(const char *argv0) { fprintf(stderr, "Syntax: %s <in.asm> <out.bin>\n", argv0); @@ -45,12 +48,14 @@ int main(int argc, char **argv) perror("fopen"); return error_ret; } + debug("Opened fin\n"); if ((fout = fopen(path_out, "wb")) == NULL) { fprintf(stderr, "Error opening %s: ", path_out); perror("fopen"); return error_ret; } + debug("Opened fout\n"); /****/ struct token *tokens = NULL; size_t tok_count = 0; @@ -58,6 +63,8 @@ int main(int argc, char **argv) if ((tokens = lex(path_in, fin, &tok_count)) == NULL) return error_ret; + debug("Lexed.\n"); + /* FIXME package these things into `tok_result`, `parse_result` etc */ struct instruction *insts; size_t insts_count; @@ -66,6 +73,8 @@ int main(int argc, char **argv) if ((ret = parse(path_in, fin, &labels, &labels_count, tokens, tok_count, &insts, &insts_count))) return error_ret && ret; + debug("Parsed.\n"); + /* FIXME insert pass for sanity checking identifiers, sizes of values */ /* FIXME insert optional pass for optimisation */ @@ -73,5 +82,7 @@ int main(int argc, char **argv) if ((ret = output_bin(fout, labels, labels_count, insts, insts_count))) return error_ret && ret; + debug("Output.\n"); + return 0; } @@ -406,6 +406,13 @@ struct token* lex(const char *filename_local, FILE *fin, size_t *len) return NULL; } + /* no tokens? just an EOL then */ + if (tokens_count == 0) { + struct token eol = {0}; + lex_eol(&eol); + add_token(eol); + } + *len = tokens_count; return tokens; } diff --git a/test/emul/001-empty.asm b/test/emul/001-empty.asm new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/emul/001-empty.asm diff --git a/test/full-pipeline/010-empty.asm b/test/full-pipeline/010-empty.asm new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/full-pipeline/010-empty.asm |