fexplib 0.3.1

A simple lower-house syntax for programming language experimentation
Documentation
use tattle::Loc;

#[allow(non_camel_case_types)]
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum Kind {
    ERROR,
    EOF,

    VAR,
    KEYWORD,
    PRIM,
    SPECIAL,
    FIELD,
    OP,
    KEYWORD_OP,
    TAG,

    INT,
    FLOAT,
    STRING,

    LPAREN,
    RPAREN,
    LCURLY,
    RCURLY,
    LBRACK,
    RBRACK,
    COMMA,
    SEMICOLON,
}

pub use Kind::*;

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub struct Token {
    pub preceding_whitespace: bool,
    pub kind: Kind,
    pub loc: Loc,
}

impl Token {
    pub fn new(preceding_whitespace: bool, kind: Kind, loc: Loc) -> Self {
        Self {
            preceding_whitespace,
            kind,
            loc,
        }
    }
}