aboutsummaryrefslogtreecommitdiff
path: root/src/token.c
diff options
context:
space:
mode:
authorYaroslav de la Peña Smirnov <yps@yaroslavps.com>2023-01-26 22:39:41 +0300
committerYaroslav de la Peña Smirnov <yps@yaroslavps.com>2023-01-26 22:39:41 +0300
commit49c2589427e0f81bea68ccba1a95c6890e10538d (patch)
tree0633bc052552831b3860d1d4816bbee7b85d6313 /src/token.c
parent4665a620775da64ec7280762979a9fc6fa37c0bc (diff)
downloadroscha-master.tar.gz
roscha-master.zip
Fix break tag parsing and code formatHEADmaster
auto-formatted the code with clang-format.
Diffstat (limited to 'src/token.c')
-rw-r--r--src/token.c132
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;
}