36 lines
570 B
C
36 lines
570 B
C
|
|
#ifndef TOKEN_H
|
|
#define TOKEN_H
|
|
|
|
typedef enum {
|
|
TT_ILLEGAL,
|
|
TT_EOF,
|
|
TT_HASH, // #
|
|
TT_ASTERISK,
|
|
TT_UNDERSCORE,
|
|
TT_DASH,
|
|
TT_PERIOD,
|
|
TT_BACKTICK,
|
|
TT_TRIPLEBACKTICK,
|
|
TT_WHITESPACE,
|
|
TT_NEWLINE,
|
|
TT_WORD,
|
|
TT_NUMBER,
|
|
TT_GT, // greater than; used for block quotes
|
|
} TokenType;
|
|
|
|
typedef struct Token {
|
|
TokenType type;
|
|
struct Token* next;
|
|
char* literal;
|
|
int line;
|
|
int column;
|
|
int length;
|
|
} Token;
|
|
|
|
char* TokenString(Token* t);
|
|
char* TokenTypeString(TokenType tt);
|
|
Token* FreeToken(Token* t);
|
|
|
|
#endif
|