lang: lex: add missing symbol and keyword definitions
This commit is contained in:
@@ -71,6 +71,8 @@ enum ivy_symbol {
|
|||||||
IVY_SYM_DOUBLE_EQUAL,
|
IVY_SYM_DOUBLE_EQUAL,
|
||||||
IVY_SYM_DOUBLE_LEFT_ANGLE,
|
IVY_SYM_DOUBLE_LEFT_ANGLE,
|
||||||
IVY_SYM_DOUBLE_RIGHT_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_LEFT_ANGLE_EQUAL,
|
||||||
IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL,
|
IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL,
|
||||||
IVY_SYM_PLUS_EQUAL,
|
IVY_SYM_PLUS_EQUAL,
|
||||||
|
|||||||
12
lang/lex.c
12
lang/lex.c
@@ -71,6 +71,8 @@ static struct lex_token_def symbols[] = {
|
|||||||
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_EQUAL, "=="),
|
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_EQUAL, "=="),
|
||||||
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_LEFT_ANGLE, "<<"),
|
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_LEFT_ANGLE, "<<"),
|
||||||
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_RIGHT_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_LEFT_ANGLE_EQUAL, "<<="),
|
||||||
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL, ">>="),
|
LEX_TOKEN_DEF(IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL, ">>="),
|
||||||
LEX_TOKEN_DEF(IVY_SYM_PLUS_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)
|
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) {
|
if (!id) {
|
||||||
return IVY_KW_NONE;
|
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)
|
static enum ivy_status pump_tokens(struct ivy_lexer *lex)
|
||||||
{
|
{
|
||||||
enum ivy_status status;
|
|
||||||
struct lexer_state *state = get_lexer_state(lex);
|
struct lexer_state *state = get_lexer_state(lex);
|
||||||
|
|
||||||
int c = peek(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_UNLESS);
|
||||||
ENUM_STR(IVY_KW_IN);
|
ENUM_STR(IVY_KW_IN);
|
||||||
ENUM_STR(IVY_KW_DO);
|
ENUM_STR(IVY_KW_DO);
|
||||||
|
ENUM_STR(IVY_KW_GET);
|
||||||
|
ENUM_STR(IVY_KW_SET);
|
||||||
ENUM_STR(IVY_KW_END);
|
ENUM_STR(IVY_KW_END);
|
||||||
default:
|
default:
|
||||||
return "";
|
return "";
|
||||||
@@ -1073,6 +1076,8 @@ const char *ivy_symbol_to_string(enum ivy_symbol sym)
|
|||||||
switch (sym) {
|
switch (sym) {
|
||||||
ENUM_STR(IVY_SYM_NONE);
|
ENUM_STR(IVY_SYM_NONE);
|
||||||
ENUM_STR(IVY_SYM_DOT);
|
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_LEFT_BRACE);
|
||||||
ENUM_STR(IVY_SYM_RIGHT_BRACE);
|
ENUM_STR(IVY_SYM_RIGHT_BRACE);
|
||||||
ENUM_STR(IVY_SYM_LEFT_BRACKET);
|
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_EQUAL);
|
||||||
ENUM_STR(IVY_SYM_DOUBLE_LEFT_ANGLE);
|
ENUM_STR(IVY_SYM_DOUBLE_LEFT_ANGLE);
|
||||||
ENUM_STR(IVY_SYM_DOUBLE_RIGHT_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_LEFT_ANGLE_EQUAL);
|
||||||
ENUM_STR(IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL);
|
ENUM_STR(IVY_SYM_DOUBLE_RIGHT_ANGLE_EQUAL);
|
||||||
ENUM_STR(IVY_SYM_PLUS_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_BANG);
|
||||||
ENUM_STR(IVY_SYM_PIPE);
|
ENUM_STR(IVY_SYM_PIPE);
|
||||||
ENUM_STR(IVY_SYM_CARET);
|
ENUM_STR(IVY_SYM_CARET);
|
||||||
|
ENUM_STR(IVY_SYM_HASH);
|
||||||
ENUM_STR(IVY_SYM_UNDERSCORE);
|
ENUM_STR(IVY_SYM_UNDERSCORE);
|
||||||
ENUM_STR(IVY_SYM_COMMA);
|
ENUM_STR(IVY_SYM_COMMA);
|
||||||
ENUM_STR(IVY_SYM_SEMICOLON);
|
ENUM_STR(IVY_SYM_SEMICOLON);
|
||||||
|
|||||||
Reference in New Issue
Block a user