57 lines
757 B
Zig
57 lines
757 B
Zig
const std = @import("std");
|
|
|
|
pub const TokenType = enum(u6) {
|
|
// Single-character tokens.
|
|
LEFT_PAREN,
|
|
RIGHT_PAREN,
|
|
LEFT_BRACE,
|
|
RIGHT_BRACE,
|
|
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,
|
|
|
|
EOF,
|
|
};
|
|
|
|
pub const Token = struct {
|
|
ttype: TokenType = TokenType.EOF,
|
|
lexeme: []const u8 = ""[0..],
|
|
line: usize = 0,
|
|
};
|