diff options
Diffstat (limited to 'axisc/src/lexer.rs')
-rw-r--r-- | axisc/src/lexer.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/axisc/src/lexer.rs b/axisc/src/lexer.rs index ae45497..ff13fd3 100644 --- a/axisc/src/lexer.rs +++ b/axisc/src/lexer.rs @@ -3,7 +3,38 @@ use crate::reader::TokenScanner; #[derive(Debug)] pub enum Token { Identifier(String), + Keyword(Keyword), Literal(Literal), + SimpleToken(SimpleToken) +} + +#[derive(Debug)] +pub enum Delimiter { + WhiteSpace, + Semicolon, + LineFeed, + Equals, + Invalid +} + +impl Delimiter { + pub fn is_delimiter(c: &char) -> bool { + matches!(c, ' ' | ';' | '\n' | '=') + } + + pub fn from(c: char) -> Self { + match c { + ' ' => Delimiter::WhiteSpace, + ';' => Delimiter::Semicolon, + '\n' => Delimiter::LineFeed, + '=' => Delimiter::Equals, + _ => Delimiter::Invalid + } + } +} + +#[derive(Debug)] +pub enum SimpleToken { Multiply, Divide, Pound, @@ -29,6 +60,17 @@ pub enum Literal { } #[derive(Debug)] +pub enum Keyword { + Into, + Boolean, + Array, + Number, + String, + As, + Let, +} + +#[derive(Debug)] pub enum Array { StringArray(Vec<String>), NumberArray(Vec<f64>), |