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 match &self.kind {
15 TokenKind::Error(_) => {
16 return true;
17 }
18 _ => {
19 return false;
20 }
21 };
22 }
23}
24
25#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
26pub enum TokenKind {
27 At,
29 Tempo,
30 Bank,
31 Loop,
32 Function,
33 As,
34 On,
35 Emit,
36
37 Synth,
39
40 Identifier,
42 Number,
43 String,
44 Boolean,
45 Arrow,
46
47 Map,
49 Array,
50
51 Colon,
53 Comma,
54 Equals,
55 Dot,
56 Slash,
57 Plus,
58 Asterisk,
59 Minus,
60
61 DoubleEquals,
63 NotEquals,
64 GreaterEqual,
65 LessEqual,
66 Greater,
67 Less,
68
69 LBrace, RBrace, LBracket, RBracket, LParen, RParen, Quote, DbQuote, Newline,
83 Indent,
84 Dedent,
85 Comment,
86
87 If,
89 Else,
90 ElseIf,
91
92 Whitespace,
94 Unknown,
95 Error(String),
96 EOF,
97}