devalang_core/core/lexer/
token.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4pub struct Token {
5 pub kind: TokenKind,
6 pub lexeme: String,
7 pub indent: usize,
8 pub line: usize,
9 pub column: usize,
10}
11
12impl Token {
13 pub fn is_error(&self) -> bool {
14 matches!(&self.kind, TokenKind::Error(_))
15 }
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19pub enum TokenKind {
20 At,
22 Tempo,
23 Bank,
24 Loop,
25 Function,
26 As,
27 On,
28 Emit,
29
30 Synth,
32
33 Identifier,
35 Number,
36 String,
37 Boolean,
38 Arrow,
39
40 Map,
42 Array,
43
44 Colon,
46 Comma,
47 Equals,
48 Dot,
49 Slash,
50 Plus,
51 Asterisk,
52 Minus,
53
54 DoubleEquals,
56 NotEquals,
57 GreaterEqual,
58 LessEqual,
59 Greater,
60 Less,
61
62 LBrace, RBrace, LBracket, RBracket, LParen, RParen, Quote, DbQuote, Newline,
76 Indent,
77 Dedent,
78 Comment,
79
80 If,
82 Else,
83 ElseIf,
84
85 Whitespace,
87 Unknown,
88 Error(String),
89 EOF,
90}