Files
clox/scanner.h
T

47 lines
797 B
C

#ifndef SCANNER_H
#define SCANNER_H
#define DEFAULT_TOKENLIST_SIZE 32
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;
char* lexeme;
int line;
} Token;
typedef struct {
Token** tokens;
int capacity;
int size;
} TokenList;
TokenList* ScanTokens(const char*);
void DestroyTokenList(TokenList*);
#endif