From eac8cbf1dab16ea3f2e066e142c6d6da39bdfea0 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sat, 28 Oct 2023 18:20:15 +0100 Subject: asm/parser supports all opcodes, introduced parse errors Introduced some functions to parse differing types of opcodes. Use the same style of a.b.c... for namespacing or type specification for certain opcodes. Bit hacky and not tested, but does work. Parse errors can be reported with an exact location using the token column, line. --- asm/parser.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'asm/parser.h') diff --git a/asm/parser.h b/asm/parser.h index 09a11d4..9da1117 100644 --- a/asm/parser.h +++ b/asm/parser.h @@ -17,7 +17,20 @@ #include -inst_t parse_next_inst(token_stream_t *); -inst_t *parse_stream(token_stream_t *, size_t *); +typedef enum +{ + PERR_OK = 0, + PERR_INTEGER_OVERFLOW, + PERR_NOT_A_NUMBER, + PERR_EXPECTED_TYPE, + PERR_EXPECTED_SYMBOL, + PERR_EXPECTED_OPERAND, + PERR_UNKNOWN_OPERATOR, +} perr_t; + +const char *perr_as_cstr(perr_t); + +perr_t parse_next_inst(token_stream_t *, inst_t *); +perr_t parse_stream(token_stream_t *, inst_t **, size_t *); #endif -- cgit v1.2.3-13-gbd6f