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
34 Synth,
36
37 Identifier,
39 Number,
40 String,
41 Boolean,
42 Arrow,
43
44 Map,
46 Array,
47
48 Colon,
50 Comma,
51 Equals,
52 Dot,
53 Slash,
54 Plus,
55 Asterisk,
56 Minus,
57
58 DoubleEquals,
60 NotEquals,
61 GreaterEqual,
62 LessEqual,
63 Greater,
64 Less,
65
66 LBrace, RBrace, LBracket, RBracket, LParen, RParen, Quote, DbQuote, Newline,
80 Indent,
81 Dedent,
82 Comment,
83
84 If,
86 Else,
87 ElseIf,
88
89 Whitespace,
91 Unknown,
92 Error(String),
93 EOF,
94}