#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