#ifndef LEXER_H #define LEXER_H typedef enum lexer_token_class { LEXER_TOKEN_WHITESPACE, LEXER_TOKEN_IDENTIFIER, LEXER_TOKEN_KEYWORD, LEXER_TOKEN_OPERATOR, LEXER_TOKEN_SEPARATOR, LEXER_TOKEN_INTEGER, LEXER_TOKEN_STRING, LEXER_TOKEN_FUNCTION_START, LEXER_TOKEN_FUNCTION_END, LEXER_TOKEN_EXPRESSION_START, LEXER_TOKEN_EXPRESSION_END } lexer_token_class; typedef struct lexer_token { lexer_token_class tokenClass; char* str; size_t len; } lexer_token; typedef struct lexer_tokens { lexer_token* pairs; size_t length; size_t allocd; } lexer_tokens; lexer_tokens* lexer_analyze(char* str); #endif