utterance 0.1.3

A parser library for creating readable, natural-language-inspired domain-specific languages.
Documentation
use crate::lexer::{Number, Symbol};
use crate::syntax::HighlightKind;

pub enum Statement<'a> {
    Noop,
    Word(&'a str),
    CapitalizeWord,
    ExactWord(&'a str),
    Symbol(Symbol),
    DoubleSymbol(Symbol),
    NewLineOrEnd,
    Number(Number),
    Comment,
}

impl<'a> Statement<'a> {
    pub(crate) fn highlight_kind(&self) -> HighlightKind {
        match self {
            Statement::ExactWord(_) => HighlightKind::Keyword,
            Statement::Word(_) => HighlightKind::Word,
            Statement::Number(_) => HighlightKind::Number,
            Statement::Comment => HighlightKind::Comment,
            Statement::Noop
            | Statement::CapitalizeWord
            | Statement::Symbol(_)
            | Statement::DoubleSymbol(_)
            | Statement::NewLineOrEnd => HighlightKind::None,
        }
    }
}