#ifndef FMV_AS_TOKENIZER_H_ #define FMV_AS_TOKENIZER_H_ #include #include #include "utils.h" enum token_type { TK_OP, TK_ARG, TK_TAG, TK_COLON, TK_NEWLINE, TK_ENDOFFILE }; struct token { enum token_type type; int line; int col; char *sval; int64_t ival; double fval; }; #define INPUT_STREAM_BUF_SIZE 1024 struct input_stream{ FILE *fp; char *buf; int buf_pos; int cursor; int line; int col; }; struct token_stream { struct token *buf; struct input_stream *s; }; // result struct result next_token(struct allocator * alct, struct token_stream * ts); // result struct result peek_token(struct allocator * alct, struct token_stream * ts); void print_token(struct token *t); struct token_stream * new_token_stream(struct allocator * alct, FILE* fp); #endif // FMV_AS_TOKENIZER_H_