From 6b8ba6b6e8e1f13d9e61ebd018f9c9ec203706fe Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 24 Dec 2016 14:03:37 -0700 Subject: [PATCH] use #[derive(Debug)] on Token, Kind, State... SO MUCH EASIER --- src/lexer/mod.rs | 17 ++--------------- src/lexer/token.rs | 27 ++------------------------- src/main.rs | 2 +- 3 files changed, 5 insertions(+), 41 deletions(-) diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index 82c9de6..09269f5 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -7,14 +7,13 @@ mod char; mod charset; mod str; -use std::fmt; - use self::char::Lexable; use self::str::CharAt; use self::str::RelativeIndexable; use self::token::Token; use self::token::Kind; +#[derive(Debug)] enum State { Initial, Identifier, @@ -135,7 +134,7 @@ impl Iterator for Lexer { println!("Lexing '{}'", &self.input[self.begin ..]); while token.is_none() { if let Some(c) = self.input.char_at(self.forward) { - println!("{}! c='{}'", self.state, c); + println!("{:?}! c='{}'", self.state, c); match self.state { State::Initial => self.state_initial(c, &mut token), State::Identifier => self.state_identifier(c, &mut token), @@ -151,15 +150,3 @@ impl Iterator for Lexer { token } } - -impl fmt::Display for State { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let s = match *self { - State::Initial => "Initial", - State::Identifier => "Identifier", - State::Hash => "Hash", - }; - write!(f, "{}", s) - } -} - diff --git a/src/lexer/token.rs b/src/lexer/token.rs index ec8873a..15cda9a 100644 --- a/src/lexer/token.rs +++ b/src/lexer/token.rs @@ -1,7 +1,6 @@ /// # Token -use std::fmt; - +#[derive(Debug)] pub enum Kind { LeftParen, RightParen, @@ -9,6 +8,7 @@ pub enum Kind { Boolean, } +#[derive(Debug)] pub struct Token { kind: Kind, value: String, @@ -19,26 +19,3 @@ impl Token { Token { kind: kind, value: value, } } } - -// -// Display -// - -impl fmt::Display for Kind { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let s = match *self { - Kind::LeftParen => "LeftParen", - Kind::RightParen => "RightParen", - Kind::Identifier => "Identifier", - Kind::Boolean => "Boolean", - }; - write!(f, "{}", s) - } -} - -impl fmt::Display for Token { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "({}, \"{}\")", self.kind, self.value) - } -} - diff --git a/src/main.rs b/src/main.rs index 123d065..2528b22 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,6 @@ mod lexer; fn main() { let lexer = lexer::Lexer::new(String::from("((abc def + ghi #f))")); for t in lexer { - println!("token = {}", t); + println!("token = {:?}", t); } }