From 4143259eb3df16470dc2d93371e65e53d027243b Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Mon, 2 Aug 2021 18:35:10 -0700 Subject: Chapter 16.2 --- clox/src/scanner.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'clox/src/scanner.h') diff --git a/clox/src/scanner.h b/clox/src/scanner.h index 3b8a261..6f42a9e 100644 --- a/clox/src/scanner.h +++ b/clox/src/scanner.h @@ -1,6 +1,62 @@ #ifndef SCANNER_H #define 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 || 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 -- cgit v1.2.3-54-g00ecf