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 Pattern,
25 Loop,
26 Function,
27 As,
28 On,
29 Emit,
30
31 Synth,
33
34 Identifier,
36 Number,
37 String,
38 Boolean,
39 Arrow,
40
41 Map,
43 Array,
44
45 Colon,
47 Comma,
48 Equals,
49 Dot,
50 Slash,
51 Plus,
52 Asterisk,
53 Minus,
54
55 DoubleEquals,
57 NotEquals,
58 GreaterEqual,
59 LessEqual,
60 Greater,
61 Less,
62
63 LBrace, RBrace, LBracket, RBracket, LParen, RParen, Quote, DbQuote, Newline,
77 Indent,
78 Dedent,
79 Comment,
80
81 If,
83 Else,
84 ElseIf,
85
86 Whitespace,
88 Unknown,
89 Error(String),
90 EOF,
91}