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 | 
