From 721e0f851a5a7ad0483dda35a958e52deb74e80c Mon Sep 17 00:00:00 2001 From: Max Wash Date: Tue, 12 May 2026 22:47:16 +0100 Subject: [PATCH] parse: lex: add a range of new symbol tokens --- bshell/parse/lex/arithmetic.c | 1 + bshell/parse/lex/lex.c | 1 + bshell/parse/token.c | 9 ++++++++- bshell/parse/token.h | 7 +++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/bshell/parse/lex/arithmetic.c b/bshell/parse/lex/arithmetic.c index be8c9f2..2a4d40c 100644 --- a/bshell/parse/lex/arithmetic.c +++ b/bshell/parse/lex/arithmetic.c @@ -184,6 +184,7 @@ static const unsigned int operators[] = { }; static const unsigned int symbols[] = { + SYM_BANG, SYM_PLUS, SYM_HYPHEN, SYM_FORWARD_SLASH, diff --git a/bshell/parse/lex/lex.c b/bshell/parse/lex/lex.c index 1e87f4f..c07b9d0 100644 --- a/bshell/parse/lex/lex.c +++ b/bshell/parse/lex/lex.c @@ -68,6 +68,7 @@ static struct lex_token_def operators[] = { static const size_t nr_operators = sizeof operators / sizeof operators[0]; static struct lex_token_def symbols[] = { + SYMBOL_DEF(SYM_BANG, "!", LEX_TOKEN_UNARY_ARITHMETIC), SYMBOL_DEF(SYM_PLUS, "+", LEX_TOKEN_UNARY_ARITHMETIC), SYMBOL_DEF(SYM_HYPHEN, "-", LEX_TOKEN_UNARY_ARITHMETIC), SYMBOL_DEF(SYM_FORWARD_SLASH, "/", 0), diff --git a/bshell/parse/token.c b/bshell/parse/token.c index 197822a..8d2c831 100644 --- a/bshell/parse/token.c +++ b/bshell/parse/token.c @@ -141,12 +141,17 @@ const char *token_symbol_to_string(enum token_symbol sym) ENUM_STR(SYM_SQUOTE); ENUM_STR(SYM_DQUOTE); ENUM_STR(SYM_HASH); + ENUM_STR(SYM_COLON_COLON); ENUM_STR(SYM_SEMICOLON); ENUM_STR(SYM_COMMA); ENUM_STR(SYM_DOLLAR); ENUM_STR(SYM_DOLLAR_LEFT_PAREN); + ENUM_STR(SYM_DOLLAR_LEFT_BRACE); + ENUM_STR(SYM_DOT); + ENUM_STR(SYM_DOT_DOT); ENUM_STR(SYM_PIPE); ENUM_STR(SYM_AT); + ENUM_STR(SYM_AT_LEFT_PAREN); ENUM_STR(SYM_AT_LEFT_BRACE); ENUM_STR(SYM_LEFT_BRACE); ENUM_STR(SYM_RIGHT_BRACE); @@ -157,9 +162,11 @@ const char *token_symbol_to_string(enum token_symbol sym) ENUM_STR(SYM_EQUAL); ENUM_STR(SYM_PLUS_EQUAL); ENUM_STR(SYM_HYPHEN_EQUAL); - ENUM_STR(SYM_FORWARD_SLASH_EQUAL); ENUM_STR(SYM_ASTERISK_EQUAL); + ENUM_STR(SYM_FORWARD_SLASH_EQUAL); ENUM_STR(SYM_PERCENT_EQUAL); + ENUM_STR(SYM_QUESTION_DOT); + ENUM_STR(SYM_QUESTION_LEFT_BRACKET); default: return ""; } diff --git a/bshell/parse/token.h b/bshell/parse/token.h index c1898ea..ca5e28d 100644 --- a/bshell/parse/token.h +++ b/bshell/parse/token.h @@ -77,6 +77,7 @@ enum token_operator { enum token_symbol { SYM_NONE = 0, __SYM_INDEX_BASE = 400, + SYM_BANG, SYM_PLUS, SYM_HYPHEN, SYM_FORWARD_SLASH, @@ -86,13 +87,17 @@ enum token_symbol { SYM_SQUOTE, SYM_DQUOTE, SYM_HASH, + SYM_COLON_COLON, SYM_SEMICOLON, SYM_COMMA, SYM_DOLLAR, SYM_DOLLAR_LEFT_PAREN, SYM_DOLLAR_LEFT_BRACE, + SYM_DOT, + SYM_DOT_DOT, SYM_PIPE, SYM_AT, + SYM_AT_LEFT_PAREN, SYM_AT_LEFT_BRACE, SYM_LEFT_BRACE, SYM_RIGHT_BRACE, @@ -106,6 +111,8 @@ enum token_symbol { SYM_ASTERISK_EQUAL, SYM_FORWARD_SLASH_EQUAL, SYM_PERCENT_EQUAL, + SYM_QUESTION_DOT, + SYM_QUESTION_LEFT_BRACKET, __SYM_INDEX_LIMIT, };