From 6df468b21f60b99d3a9fcfc66fa683692c3e5412 Mon Sep 17 00:00:00 2001 From: White-Oak Date: Tue, 22 Dec 2015 16:05:21 +0400 Subject: [PATCH 1/3] Added #![feature(custom_derive)] to the crate to add derives to custom traits --- src/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.rs b/src/main.rs index 67caf2f..26cb820 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +#![feature(custom_derive)] #![feature(unboxed_closures)] #![feature(collections)] #![feature(convert)] From 8a4849071e1e6a19e0be6b8b9815b3cc942962dd Mon Sep 17 00:00:00 2001 From: White-Oak Date: Tue, 22 Dec 2015 16:06:24 +0400 Subject: [PATCH 2/3] Changed all #[derive(Show)] to #[derive(Debug)] --- src/grammar.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/grammar.rs b/src/grammar.rs index 7eb1ac8..bf63666 100644 --- a/src/grammar.rs +++ b/src/grammar.rs @@ -1,5 +1,5 @@ -#[derive(Show)] +#[derive(Debug)] #[derive(Clone)] #[derive(PartialEq)] pub enum AddOp { @@ -7,7 +7,7 @@ pub enum AddOp { Subtract, } -#[derive(Show)] +#[derive(Debug)] #[derive(Clone)] #[derive(PartialEq)] pub enum MultOp { @@ -17,16 +17,16 @@ pub enum MultOp { } #[derive(Clone)] -#[derive(Show)] +#[derive(Debug)] #[derive(PartialEq)] pub struct AddTerm(pub AddOp, pub Expr); #[derive(Clone)] -#[derive(Show)] +#[derive(Debug)] #[derive(PartialEq)] pub struct MultTerm(pub MultOp, pub Expr); -#[derive(Show)] +#[derive(Debug)] #[derive(Clone)] #[derive(PartialEq)] pub enum Expr { @@ -38,12 +38,12 @@ pub enum Expr { //for now this is it's own type and not a statement -#[derive(Show)] +#[derive(Debug)] #[derive(Clone)] #[derive(PartialEq)] pub struct Block(pub Vec); -#[derive(Show)] +#[derive(Debug)] #[derive(Clone)] #[derive(PartialEq)] pub enum Statement { @@ -53,7 +53,7 @@ pub enum Statement { While(Expr, Comparator, Expr, Block), } -#[derive(Show)] +#[derive(Debug)] #[derive(Clone)] #[derive(Eq)] #[derive(PartialEq)] @@ -68,7 +68,7 @@ pub enum Comparator { -#[derive(Show)] +#[derive(Debug)] #[derive(Eq)] #[derive(PartialEq)] #[derive(Clone)] From d61ac9e1efedfefcae14ba5c4a2d65d4036d39e0 Mon Sep 17 00:00:00 2001 From: White-Oak Date: Tue, 22 Dec 2015 16:06:37 +0400 Subject: [PATCH 3/3] Added missing unwraps --- src/lexer.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lexer.rs b/src/lexer.rs index 80a1369..e186f4a 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -11,10 +11,10 @@ use std::str::FromStr; pub fn token() -> Box>> { fn lt(s: &str, t: Token) -> RegexLiteralParser { - str_lit((String::from_str(r"^[ \t]*") + s).as_str(), t) + str_lit((String::from_str(r"^[ \t]*").unwrap() + s).as_str(), t) } - let ident = capture(r"^[ \t]*([a-zA-Z]\w*)[ \t]*", |caps| Token::Ident(String::from_str(caps.at(1).unwrap()))); + let ident = capture(r"^[ \t]*([a-zA-Z]\w*)[ \t]*", |caps| Token::Ident(String::from_str(caps.at(1).unwrap()).unwrap())); let number = capture(r"^[ \t]*(\d+)[ \t]*", |caps| Token::Number(FromStr::from_str(caps.at(1).unwrap()).unwrap()));