aboutsummaryrefslogtreecommitdiffstats
path: root/clox/src/scanner.h
diff options
context:
space:
mode:
Diffstat (limited to 'clox/src/scanner.h')
-rw-r--r--clox/src/scanner.h56
1 files changed, 56 insertions, 0 deletions
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