From 7eef21b3b90898f4ef05fa4220fde608cf55c6ab Mon Sep 17 00:00:00 2001 From: Graham Northup <grissess@nexusg.org> Date: Sun, 24 Sep 2017 03:41:45 -0400 Subject: parser appears to work (oh my) --- src/lang/mod.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/lang/mod.rs') diff --git a/src/lang/mod.rs b/src/lang/mod.rs index 8256f34..14a9202 100644 --- a/src/lang/mod.rs +++ b/src/lang/mod.rs @@ -1,6 +1,10 @@ pub mod tokenizer; pub use self::tokenizer::Tokenizer; +pub mod parser; +pub use self::parser::Parser; +// NB: No Eq due to embedded f32 +#[derive(Debug,PartialEq,Clone)] pub enum Token { Ident(String), Integer(isize), @@ -10,3 +14,31 @@ pub enum Token { EOF, } +#[derive(Debug,PartialEq,Eq,Clone,Copy)] +pub enum TokType { + Ident, + Integer, + Float, + Oper, + String, + EOF, +} + +impl Token { + pub fn to_type(&self) -> TokType { + match *self { + Token::Ident(_) => TokType::Ident, + Token::Integer(_) => TokType::Integer, + Token::Float(_) => TokType::Float, + Token::Oper(_) => TokType::Oper, + Token::String(_) => TokType::String, + Token::EOF => TokType::EOF, + } + } +} + +impl<'a> From<&'a Token> for TokType { + fn from(tok: &'a Token) -> TokType { + tok.to_type() + } +} -- cgit v1.2.3-70-g09d2