From 1e7f1bdee91324613a1675642775d6ed32d7e94d Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Mon, 15 Apr 2024 18:39:37 +0630 Subject: Changed %const format in preprocesser now Instead of %const() ... %end it will now be %const ... %end i.e. the first symbol after %const will be considered the name of the constant similar to %use. --- asm/lexer.cpp | 4 ++-- asm/preprocesser.cpp | 16 ++-------------- 2 files changed, 4 insertions(+), 16 deletions(-) (limited to 'asm') diff --git a/asm/lexer.cpp b/asm/lexer.cpp index caa1327..991e551 100644 --- a/asm/lexer.cpp +++ b/asm/lexer.cpp @@ -25,7 +25,7 @@ static_assert(NUMBER_OF_OPCODES == 98, "ERROR: Lexer is out of date"); using std::string, std::string_view, std::pair, std::make_pair; const auto VALID_SYMBOL = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV" - "WXYZ0123456789-_.:()%#$", + "WXYZ0123456789-_.:%#$", VALID_DIGIT = "0123456789", VALID_HEX = "0123456789abcdefABCDEF"; bool is_char_in_s(char c, const char *s) @@ -52,7 +52,7 @@ pair tokenise_symbol(string_view &source, size_t &column, if (initial_match(sym, "%CONST")) { - t = token_t(token_type_t::PP_CONST, sym.substr(6)); + t.type = token_type_t::PP_CONST; } else if (sym == "%USE") { diff --git a/asm/preprocesser.cpp b/asm/preprocesser.cpp index 434a340..d68992c 100644 --- a/asm/preprocesser.cpp +++ b/asm/preprocesser.cpp @@ -81,20 +81,9 @@ pp_err_t preprocess_const_blocks(const vector &tokens, if (t->type == token_type_t::PP_CONST) { string_view capture; - if (t->content == "" && (i == tokens.size() - 1 || - tokens[i + 1]->type != token_type_t::SYMBOL)) - return ERR(pp_err_t{pp_err_type_t::EXPECTED_NAME}); - else if (t->content != "") - capture = t->content; - else + if (i + 1 >= tokens.size() || tokens[i + 1]->type != token_type_t::SYMBOL) capture = tokens[++i]->content; - // Check for brackets - auto start = capture.find('('); - auto end = capture.find(')'); - if (start == string::npos || end == string::npos) - return ERR(pp_err_t{pp_err_type_t::EXPECTED_NAME}); - ++i; size_t block_start = i, block_end = 0; for (; i < tokens.size() && tokens[i]->type != token_type_t::PP_END; ++i) @@ -105,8 +94,7 @@ pp_err_t preprocess_const_blocks(const vector &tokens, block_end = i; - blocks[capture.substr(start + 1, end - 1)] = - const_t{block_start, block_end}; + blocks[capture] = const_t{block_start, block_end}; } } -- cgit v1.2.3-13-gbd6f