diff options
Diffstat (limited to 'src/token.c')
-rw-r--r-- | src/token.c | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/src/token.c b/src/token.c index 0d0092d..32214b9 100644 --- a/src/token.c +++ b/src/token.c @@ -6,24 +6,24 @@ #include "hmap.h" static struct hmap *keywords = NULL; -static const char *keys[] = { - "and", - "or", - "not", - "for", - "in", - "break", - "endfor", - "true", - "false", - "if", - "elif", - "else", - "endif", - "extends", - "block", - "endblock", - NULL, +static const char *keys[] = { + "and", + "or", + "not", + "for", + "in", + "break", + "endfor", + "true", + "false", + "if", + "elif", + "else", + "endif", + "extends", + "block", + "endblock", + NULL, }; enum token_type values[] = { TOKEN_AND, @@ -46,55 +46,56 @@ enum token_type values[] = { }; const char *token_types[] = { - "ILLEGAL", - "EOF", + [TOKEN_ILLEGAL] = "ILLEGAL", + [TOKEN_EOF] = "EOF", /* Identifiers/Literals */ - "IDENTIFIER", - "INTEGER", - "STRING", + [TOKEN_IDENT] = "IDENTIFIER", + [TOKEN_INT] = "INTEGER", + [TOKEN_STRING] = "STRING", /* Operators */ - "=", - "+", - "-", - "!", - "*", - "/", - "<", - ">", - "<=", - ">=", - "==", - "!=", - "and", - "or", - "not", + [TOKEN_ASSIGN] = "=", + [TOKEN_PLUS] = "+", + [TOKEN_MINUS] = "-", + [TOKEN_BANG] = "!", + [TOKEN_ASTERISK] = "*", + [TOKEN_SLASH] = "/", + [TOKEN_LT] = "<", + [TOKEN_GT] = ">", + [TOKEN_LTE] = "<=", + [TOKEN_GTE] = ">=", + [TOKEN_EQ] = "==", + [TOKEN_NOTEQ] = "!=", + /* Keyword-like operators */ + [TOKEN_AND] = "and", + [TOKEN_OR] = "or", + [TOKEN_NOT] = "not", /* Delimiters */ - ".", - ",", - "(", - ")", - "{", - "}", - "[", - "]", - "#", - "%", + [TOKEN_DOT] = ".", + [TOKEN_COMMA] = ",", + [TOKEN_LPAREN] = "(", + [TOKEN_RPAREN] = ")", + [TOKEN_LBRACE] = "{", + [TOKEN_RBRACE] = "}", + [TOKEN_LBRACKET] = "[", + [TOKEN_RBRACKET] = "]", + [TOKEN_POUND] = "#", + [TOKEN_PERCENT] = "%", /* Keywords */ - "for", - "in", - "break", - "endfor", - "true", - "false", - "if", - "elif", - "else", - "endif", - "extends", - "block", - "endblock", + [TOKEN_FOR] = "for", + [TOKEN_IN] = "in", + [TOKEN_BREAK] = "break", + [TOKEN_ENDFOR] = "endfor", + [TOKEN_TRUE] = "true", + [TOKEN_FALSE] = "false", + [TOKEN_IF] = "if", + [TOKEN_ELIF] = "elif", + [TOKEN_ELSE] = "else", + [TOKEN_ENDIF] = "endif", + [TOKEN_EXTENDS] = "extends", + [TOKEN_BLOCK] = "block", + [TOKEN_ENDBLOCK] = "endblock", /* The document content */ - "CONTENT", + [TOKEN_CONTENT] = "CONTENT", }; void @@ -106,7 +107,6 @@ token_init_keywords(void) hmap_set(keywords, keys[i], values + i); } } - } enum token_type @@ -129,10 +129,10 @@ token_type_print(enum token_type t) sds token_string(struct token *token, sds str) { - const char *type = token_type_print(token->type); - sds slicebuf = sdsempty(); + const char *type = token_type_print(token->type); + sds slicebuf = sdsempty(); sdscatfmt(str, "TOKEN: type: %s, literal: %s", type, - slice_string(&token->literal, slicebuf)); + slice_string(&token->literal, slicebuf)); sdsfree(slicebuf); return str; } |