summaryrefslogtreecommitdiff
path: root/axisc/src/lexer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'axisc/src/lexer.rs')
-rw-r--r--axisc/src/lexer.rs42
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>),