#ifndef LEXER_H #define LEXER_H #include "common/stringmap.h" #include "scirpt/lexer.h" #include "scirpt/token.h" #include #include struct ScirptLexer { const char* text; size_t text_length; size_t index; int line, col; StringMap* keywords; }; void scirpt_lexer_create( ScirptLexer* lexer, const char* text, size_t text_length ); void scirpt_lexer_destroy(ScirptLexer* lexer); ScirptToken scirpt_lexer_level_1(ScirptLexer* lexer); ScirptToken scirpt_lexer_level_2(ScirptLexer* lexer); ScirptToken scirpt_lexer_level_3(ScirptLexer* lexer); ScirptToken scirpt_lexer_skip_whitespace(ScirptLexer* lexer); ScirptToken scirpt_lexer_id_token(ScirptLexer* lexer); ScirptToken scirpt_lexer_int_token(ScirptLexer* lexer); ScirptToken scirpt_lexer_string_token(ScirptLexer* lexer); ScirptToken scirpt_lexer_dot_token(ScirptLexer* lexer); ScirptToken scirpt_lexer_slash_token(ScirptLexer* lexer); void scirpt_lexer_step(ScirptLexer* lexer); ScirptPosition scirpt_lexer_pos(const ScirptLexer* lexer); ScirptToken scirpt_lexer_token( const ScirptLexer* lexer, ScirptTokenType type, ScirptPosition start ); bool scirpt_lexer_current_is(const ScirptLexer* lexer, char value); bool scirpt_lexer_done(const ScirptLexer* lexer); char scirpt_lexer_current(const ScirptLexer* lexer); #endif