#ifndef SCANNER_H #define SCANNER_H #define DEFAULT_TOKENLIST_SIZE 32 #define KEYWORD_COUNT 16 typedef enum { //Single-character tokens LParen, RParen, LBrace, RBrace, Comma, Dot, Minus, Plus, Semicolon, Slash, Star, //One or two character tokens Bang, Bang_Equal, Equal, Equal_Equal, Greater, Greater_Equal, Less, Less_Equal, //Literals Identifier, String, Number, //Keywords AND, CLASS, ELSE, FALSE, FUN, FOR, IF, NIL, OR, PRINT, RETURN, SUPER, THIS, TRUE, VAR, WHILE, EndOF } TokenType; typedef struct { TokenType type; const char* lexeme; int line; int length; } Token; typedef struct { Token** tokens; int capacity; int size; } TokenList; TokenList* ScanTokens(const char*); void DestroyTokenList(TokenList*); #endif