mod.rs 899 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. pub mod tokenizer;
  2. pub use self::tokenizer::Tokenizer;
  3. pub mod parser;
  4. pub use self::parser::Parser;
  5. // NB: No Eq due to embedded f32
  6. #[derive(Debug,PartialEq,Clone)]
  7. pub enum Token {
  8. Ident(String),
  9. Integer(isize),
  10. Float(f32),
  11. Oper(char),
  12. String(String),
  13. EOF,
  14. }
  15. #[derive(Debug,PartialEq,Eq,Clone,Copy)]
  16. pub enum TokType {
  17. Ident,
  18. Integer,
  19. Float,
  20. Oper,
  21. String,
  22. EOF,
  23. }
  24. impl Token {
  25. pub fn to_type(&self) -> TokType {
  26. match *self {
  27. Token::Ident(_) => TokType::Ident,
  28. Token::Integer(_) => TokType::Integer,
  29. Token::Float(_) => TokType::Float,
  30. Token::Oper(_) => TokType::Oper,
  31. Token::String(_) => TokType::String,
  32. Token::EOF => TokType::EOF,
  33. }
  34. }
  35. }
  36. impl<'a> From<&'a Token> for TokType {
  37. fn from(tok: &'a Token) -> TokType {
  38. tok.to_type()
  39. }
  40. }