diff --git a/src/directive.c b/src/directive.c index 4e531ec..2f002b1 100644 --- a/src/directive.c +++ b/src/directive.c @@ -76,7 +76,7 @@ static AsmError push_data(char *input, size_t len, ByteVec *out, Token *tok, } out->len += tok->num; } else { - return ErrUnexpectedToken; + return ErrNeedsDataLiteral; } *tok = token(input, len, tok->start + tok->len); if (tok->kind == TokNewline || tok->kind == TokEOF) { @@ -85,7 +85,7 @@ static AsmError push_data(char *input, size_t len, ByteVec *out, Token *tok, if (tok->kind == TokComma) { continue; } - return ErrInvalidToken; + return ErrNeedCommaOrNewline; } } diff --git a/src/error.h b/src/error.h index 6dd2760..5c3ed13 100644 --- a/src/error.h +++ b/src/error.h @@ -26,6 +26,8 @@ typedef enum AsmError_e { ErrStringDataNotByte, ErrAlignNeedsNumber, ErrAlignNeedsPow2, + ErrNeedCommaOrNewline, + ErrNeedsDataLiteral, } AsmError; char *ERRORS[] = { "Success", @@ -55,4 +57,6 @@ char *ERRORS[] = { "String literals can be used only in .db directive", ".align requires a number", ".align requires a power of two as an argument", + "Need comma or newline after data literal", + "Data literal expects a number or a string", };