1use tattle::Loc;
2
3#[allow(non_camel_case_types)]
4#[derive(Clone, Copy, PartialEq, Eq, Debug)]
5pub enum Kind {
6 ERROR,
7 EOF,
8
9 VAR,
10 KEYWORD,
11 PRIM,
12 SPECIAL,
13 FIELD,
14 OP,
15 KEYWORD_OP,
16 TAG,
17
18 INT,
19 FLOAT,
20 STRING,
21
22 LPAREN,
23 RPAREN,
24 LCURLY,
25 RCURLY,
26 LBRACK,
27 RBRACK,
28 COMMA,
29 SEMICOLON,
30}
31
32pub use Kind::*;
33
34#[derive(Clone, Copy, PartialEq, Eq, Debug)]
35pub struct Token {
36 pub preceding_whitespace: bool,
37 pub kind: Kind,
38 pub loc: Loc,
39}
40
41impl Token {
42 pub fn new(preceding_whitespace: bool, kind: Kind, loc: Loc) -> Self {
43 Self {
44 preceding_whitespace,
45 kind,
46 loc,
47 }
48 }
49}