| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /**
- ******************************************************************************
- * @file : scanner.h
- * @author : simon
- * @brief : None
- * @attention : None
- * @date : 2023/8/17
- ******************************************************************************
- */
- #ifndef CLOX__SCANNER_H_
- #define CLOX__SCANNER_H_
- typedef enum {
- /// Single-character tokens.
- TOKEN_LEFT_PAREN, TOKEN_RIGHT_PAREN,
- TOKEN_LEFT_BRACE, TOKEN_RIGHT_BRACE,
- TOKEN_COMMA, TOKEN_DOT, TOKEN_MINUS, TOKEN_PLUS,
- TOKEN_SEMICOLON, TOKEN_SLASH, TOKEN_STAR,
- /// One or two character tokens.
- TOKEN_BANG, TOKEN_BANG_EQUAL,
- TOKEN_EQUAL, TOKEN_EQUAL_EQUAL,
- TOKEN_GREATER, TOKEN_GREATER_EQUAL,
- TOKEN_LESS, TOKEN_LESS_EQUAL,
- /// Literals.
- TOKEN_IDENTIFIER, TOKEN_STRING, TOKEN_NUMBER,
- /// Keywords.
- TOKEN_AND, TOKEN_CLASS, TOKEN_ELSE, TOKEN_FALSE,
- TOKEN_FOR, TOKEN_FUN, TOKEN_IF, TOKEN_NIL, TOKEN_OR,
- TOKEN_PRINT, TOKEN_RETURN, TOKEN_SUPER, TOKEN_THIS,
- TOKEN_TRUE, TOKEN_VAR, TOKEN_WHILE,
- TOKEN_ERROR, TOKEN_EOF
- } TokenType;
- typedef struct {
- TokenType type;
- const char *start;
- int length;
- int line;
- } Token;
- void initScanner(const char *source);
- Token scanToken();
- #endif //CLOX__SCANNER_H_
|