vig/src/tokens.zig

90 lines
1.1 KiB
Zig
Raw Permalink Normal View History

pub const TokenType = enum {
// basic tokens
LeftParen,
RightParen,
LeftBrace,
RightBrace,
LeftSquare,
RightSquare,
Dot,
Equal,
Semicolon,
Comma,
Colon,
2019-08-25 16:21:22 +00:00
Address,
Pipe,
QuestionMark,
DollarSign,
// math operators
Plus,
Minus,
Star,
Slash,
Modulo,
// one-two char tokens
DotEqual,
LeftDoubleChevron, // AKA "<<"
PlusPlus,
PlusEqual,
MinusEqual,
2019-08-25 13:27:50 +00:00
ColonEqual,
StarEqual,
2019-08-27 14:58:32 +00:00
SlashEqual,
2019-06-04 18:06:57 +00:00
// comparison ones
EqualEqual,
Less,
LessEqual,
2019-06-04 18:06:57 +00:00
Greater,
GreaterEqual,
Bang,
BangEqual,
// complex types
Integer,
Float,
String,
Identifier,
// keywords
Break,
Const,
Continue,
Defer,
Else,
Enum,
Fn,
For,
2019-08-25 19:49:08 +00:00
Loop,
Go,
Goto,
If,
Import,
In,
Interface,
Match,
Module,
Mut,
Or,
2019-08-25 16:21:22 +00:00
And,
Return,
Struct,
Type,
2019-06-06 01:06:12 +00:00
True,
False,
None,
2019-06-04 18:06:57 +00:00
2019-08-24 19:00:22 +00:00
Println,
2019-08-27 00:32:10 +00:00
Pub,
2019-08-24 19:00:22 +00:00
2019-06-04 18:06:57 +00:00
EOF,
};
pub const Token = struct {
ttype: TokenType,
2019-06-04 18:06:57 +00:00
lexeme: []const u8,
line: usize,
};