lang: lex: add missing symbol and keyword definitions

This commit is contained in:
2024-11-19 15:57:31 +00:00
parent 7eab36aa5f
commit 1dbe68cfeb
2 changed files with 12 additions and 2 deletions

View File

@@ -71,6 +71,8 @@ enum ivy_symbol {
IVY_SYM_DOUBLE_EQUAL,
IVY_SYM_DOUBLE_LEFT_ANGLE,
IVY_SYM_DOUBLE_RIGHT_ANGLE,
IVY_SYM_LEFT_ANGLE_EQUAL,
IVY_SYM_RIGHT_ANGLE_EQUAL,
IVY_SYM_DOUBLE_LEFT_ANGLE_EQUAL,
IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL,
IVY_SYM_PLUS_EQUAL,

View File

@@ -71,6 +71,8 @@ static struct lex_token_def symbols[] = {
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_EQUAL, "=="),
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_LEFT_ANGLE, "<<"),
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_RIGHT_ANGLE, ">>"),
LEX_TOKEN_DEF(IVY_SYM_LEFT_ANGLE_EQUAL, "<="),
LEX_TOKEN_DEF(IVY_SYM_RIGHT_ANGLE_EQUAL, ">="),
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_LEFT_ANGLE_EQUAL, "<<="),
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL, ">>="),
LEX_TOKEN_DEF(IVY_SYM_PLUS_EQUAL, "+="),
@@ -247,7 +249,7 @@ static void init_keywords(b_dict *keyword_dict)
static enum ivy_keyword find_keyword_by_name(struct ivy_lexer *lex, const char *s)
{
b_number *id = b_dict_at(lex->lex_keywords, s);
b_number *id = B_NUMBER(b_dict_at(lex->lex_keywords, s));
if (!id) {
return IVY_KW_NONE;
}
@@ -906,7 +908,6 @@ static enum ivy_status read_ident(struct ivy_lexer *lex)
static enum ivy_status pump_tokens(struct ivy_lexer *lex)
{
enum ivy_status status;
struct lexer_state *state = get_lexer_state(lex);
int c = peek(lex);
@@ -1062,6 +1063,8 @@ const char *ivy_keyword_to_string(enum ivy_keyword keyword)
ENUM_STR(IVY_KW_UNLESS);
ENUM_STR(IVY_KW_IN);
ENUM_STR(IVY_KW_DO);
ENUM_STR(IVY_KW_GET);
ENUM_STR(IVY_KW_SET);
ENUM_STR(IVY_KW_END);
default:
return "";
@@ -1073,6 +1076,8 @@ const char *ivy_symbol_to_string(enum ivy_symbol sym)
switch (sym) {
ENUM_STR(IVY_SYM_NONE);
ENUM_STR(IVY_SYM_DOT);
ENUM_STR(IVY_SYM_SQUOTE);
ENUM_STR(IVY_SYM_DQUOTE);
ENUM_STR(IVY_SYM_LEFT_BRACE);
ENUM_STR(IVY_SYM_RIGHT_BRACE);
ENUM_STR(IVY_SYM_LEFT_BRACKET);
@@ -1094,6 +1099,8 @@ const char *ivy_symbol_to_string(enum ivy_symbol sym)
ENUM_STR(IVY_SYM_DOUBLE_EQUAL);
ENUM_STR(IVY_SYM_DOUBLE_LEFT_ANGLE);
ENUM_STR(IVY_SYM_DOUBLE_RIGHT_ANGLE);
ENUM_STR(IVY_SYM_LEFT_ANGLE_EQUAL);
ENUM_STR(IVY_SYM_RIGHT_ANGLE_EQUAL);
ENUM_STR(IVY_SYM_DOUBLE_LEFT_ANGLE_EQUAL);
ENUM_STR(IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL);
ENUM_STR(IVY_SYM_PLUS_EQUAL);
@@ -1107,6 +1114,7 @@ const char *ivy_symbol_to_string(enum ivy_symbol sym)
ENUM_STR(IVY_SYM_BANG);
ENUM_STR(IVY_SYM_PIPE);
ENUM_STR(IVY_SYM_CARET);
ENUM_STR(IVY_SYM_HASH);
ENUM_STR(IVY_SYM_UNDERSCORE);
ENUM_STR(IVY_SYM_COMMA);
ENUM_STR(IVY_SYM_SEMICOLON);