diff --git a/src/ast.rs b/src/ast.rs index ab81e03..8b70dd9 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -32,7 +32,7 @@ impl std::fmt::Debug for Span { } #[rustfmt::skip] -#[derive(Clone, PartialEq, Serialize, Deserialize, Debug, strum::EnumString, strum::Display)] +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Debug, strum::EnumString, strum::Display)] pub enum BinOp { #[strum(serialize = "+") ] Plus, #[strum(serialize = "-") ] Minus, @@ -49,13 +49,13 @@ pub enum BinOp { #[strum(serialize = "=~")] RegexMatch, } -#[derive(Clone, PartialEq, Serialize, Deserialize, Debug, strum::EnumString, strum::Display)] +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Debug, strum::EnumString, strum::Display)] pub enum UnaryOp { #[strum(serialize = "!")] Not, } -#[derive(Clone, PartialEq, Serialize, Deserialize)] +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)] pub enum SimplExpr { Literal(Span, DynVal), VarRef(Span, String), diff --git a/src/dynval.rs b/src/dynval.rs index 5a38635..62b2de4 100644 --- a/src/dynval.rs +++ b/src/dynval.rs @@ -23,7 +23,7 @@ impl ConversionError { } } -#[derive(Clone, Deserialize, Serialize, Default)] +#[derive(Clone, Deserialize, Serialize, Default, Eq)] pub struct DynVal(pub String, pub Option); impl MaybeSpanned for DynVal { diff --git a/src/lib.rs b/src/lib.rs index 617a06b..991b775 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,12 @@ pub mod dynval; pub mod error; pub mod eval; pub mod parser; +use ast::SimplExpr; use lalrpop_util::lalrpop_mod; lalrpop_mod!(pub simplexpr_parser); + +pub fn parse_string(s: &str) -> Result { + parser::parse_string(s) +} +pub use ast::Span; diff --git a/src/parser/lexer.rs b/src/parser/lexer.rs index ab73f36..7d49959 100644 --- a/src/parser/lexer.rs +++ b/src/parser/lexer.rs @@ -1,7 +1,7 @@ use logos::Logos; #[rustfmt::skip] -#[derive(Logos, Debug, PartialEq, Eq, Clone, strum::Display)] +#[derive(Logos, Debug, PartialEq, Eq, Clone, strum::Display, strum::EnumString)] pub enum Token { #[strum(serialize = "+") ] #[token("+") ] Plus, #[strum(serialize = "-") ] #[token("-") ] Minus,