diff options
author | SoniEx2 <endermoneymod@gmail.com> | 2021-02-07 22:19:21 -0300 |
---|---|---|
committer | SoniEx2 <endermoneymod@gmail.com> | 2021-02-07 22:20:34 -0300 |
commit | 69652efe8ad9738a94fef571c8b81e342f96e7b4 (patch) | |
tree | 9b02efcb139894ac3b5df2667be313f2a9df4319 /src/pattern.rs | |
parent | d81ce99e0d1f1371ba9165a67280a810ee27bf82 (diff) |
Finish porting parser
Diffstat (limited to 'src/pattern.rs')
-rw-r--r-- | src/pattern.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/pattern.rs b/src/pattern.rs index e0a5174..3349db8 100644 --- a/src/pattern.rs +++ b/src/pattern.rs @@ -16,8 +16,12 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +use std::borrow::Borrow; +use std::collections::BTreeMap; + use crate::PatternTypes; use crate::RefOwn; +use crate::Predicate; use crate::errors::PatternError; use crate::parser::parse; use crate::vm::Matcher; @@ -29,9 +33,18 @@ pub struct Pattern<T: PatternTypes> { } impl<T: PatternTypes> Pattern<T> { - pub fn compile(s: &str, defs: Option<()>/*TODO*/) -> Result<Self, PatternError> { + /// Compiles the input into a pattern. + pub fn compile<'s, P, O>( + input: &'s str, + preds: Option<BTreeMap<P, Box<Predicate<T>>>>, + objs: Option<BTreeMap<O, T::Own>> + ) -> Result<Self, PatternError<'s>> + where + P: Borrow<str> + Ord, + O: Borrow<str> + Ord, + { Ok(Self { - consts: parse(s, defs)? + consts: parse(input, preds, objs)? }) } |