From e5af28536bfb0f4c9131df56d2009ba5196f5e3a Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Sun, 12 Apr 2026 20:57:06 +0200 Subject: init --- src/lex.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/lex.h (limited to 'src/lex.h') diff --git a/src/lex.h b/src/lex.h new file mode 100644 index 0000000..9e600d7 --- /dev/null +++ b/src/lex.h @@ -0,0 +1,40 @@ +#ifndef ANIMTOOL_LEX_H_ +#define ANIMTOOL_LEX_H_ + +#include "util/container.h" +#include "util/str.h" +#include "source.h" +#include "op.h" + +enum token_type +{ + TOKEN_NUMBER, + TOKEN_STRING, + TOKEN_VAR, + TOKEN_IDENT, + TOKEN_OP, +}; + +struct token +{ + struct range loc; + enum token_type type; + union + { + double number; + str string; + str var; + str ident; + struct + { + enum op_type type; + struct range name_loc; + array(struct token) children; + } op; + }; +}; + +bool lex_token(struct source *source, struct token *tok); +void free_token(struct token *tok); + +#endif -- cgit v1.2.3