diff options
author | koekeishiya <aasvi93@hotmail.com> | 2017-08-07 20:23:44 +0200 |
---|---|---|
committer | koekeishiya <aasvi93@hotmail.com> | 2017-08-07 20:23:44 +0200 |
commit | d69056799a399058005b4950751397a31110de4a (patch) | |
tree | 1dee43a2f247094c58d1263cee8c8477b893e376 /src/tokenize.h | |
download | skhd-d69056799a399058005b4950751397a31110de4a.tar.gz skhd-d69056799a399058005b4950751397a31110de4a.zip |
v0.0.1
Diffstat (limited to 'src/tokenize.h')
-rw-r--r-- | src/tokenize.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/tokenize.h b/src/tokenize.h new file mode 100644 index 0000000..8b8ecf9 --- /dev/null +++ b/src/tokenize.h @@ -0,0 +1,66 @@ +#ifndef SKHD_TOKENIZE_H +#define SKHD_TOKENIZE_H + +#define array_count(a) (sizeof((a)) / sizeof(*(a))) +static const char *token_modifier_map[] = +{ + "lctrl", "ctrl", "rctrl", + "lalt", "alt", "ralt", + "lshift", "shift", "rshift", + "lcmd", "cmd", "rcmd", +}; + +static const char *token_key_map[] = +{ + "return", "tab", "space", + "backspace", "delete", "escape", + "capslock", "home", "end", + "pageup", "pagedown", "help", + "left", "right", "up", + "down", "f1", "f2", + "f3", "f4", "f5", + "f6", "f7", "f8", + "f9", "f10", "f11", + "f12", "f13", "f14", + "f15", "f16", "f17", + "f18", "f19", "f20", +}; + +enum token_type +{ + Token_Command, + Token_Modifier, + Token_Key_Hex, + Token_Key, + + Token_Plus, + Token_Dash, + Token_Arrow, + + Token_Unknown, + Token_EndOfStream, +}; + +struct token +{ + enum token_type type; + char *text; + unsigned length; + + unsigned line; + unsigned cursor; +}; + +struct tokenizer +{ + char *buffer; + char *at; + unsigned line; + unsigned cursor; +}; + +void tokenizer_init(struct tokenizer *tokenizer, char *buffer); +struct token get_token(struct tokenizer *tokenizer); +struct token peek_token(struct tokenizer tokenizer); + +#endif |