fexplib/
token.rs

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}