diff options
Diffstat (limited to 'src/atom/parsers.rs')
| -rw-r--r-- | src/atom/parsers.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs index c2f812f..f8a9f25 100644 --- a/src/atom/parsers.rs +++ b/src/atom/parsers.rs @@ -1,6 +1,6 @@ use core::option::Option::None; -use mon::{Parser, r#if, numeric1, one_of, tag}; +use mon::{Parser, ParserIter, r#if, numeric1, one_of, tag}; use crate::{ Parseable, @@ -74,8 +74,8 @@ impl<'a> Parseable<'a, &'a str> for Version { type Parser = impl Parser<&'a str, Output = Self>; fn parser() -> Self::Parser { - let numbers = VersionNumber::parser().separated_by(tag("."), 1..); - let suffixes = VersionSuffix::parser().separated_by(tag("_"), 0..); + let numbers = VersionNumber::parser().separated_by(tag(".")).at_least(1); + let suffixes = VersionSuffix::parser().separated_by(tag("_")).many(); let rev = VersionNumber::parser().preceded_by(tag("-r")); numbers @@ -96,7 +96,9 @@ impl<'a> Parseable<'a, &'a str> for Category { fn parser() -> Self::Parser { let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_'); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).repeated(0..); + let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)) + .repeated() + .many(); start .and(rest) @@ -116,7 +118,8 @@ impl<'a> Parseable<'a, &'a str> for Name { r#if(|c: &char| c.is_ascii_alphanumeric() || "_+-".contains(*c)).not(), )), ) - .repeated(0..); + .repeated() + .many(); start .and(rest) @@ -140,7 +143,9 @@ impl<'a> Parseable<'a, &'a str> for SlotName { fn parser() -> Self::Parser { let start = r#if(|c: &char| c.is_ascii_alphanumeric() || *c == '_'); - let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)).repeated(0..); + let rest = r#if(|c: &char| c.is_ascii_alphanumeric() || "+_.-".contains(*c)) + .repeated() + .many(); start .and(rest) @@ -257,7 +262,8 @@ impl<'a> Parseable<'a, &'a str> for Atom { .and(Slot::parser().preceded_by(tag(":")).opt()) .and( UseDep::parser() - .separated_by(tag(","), 0..) + .separated_by(tag(",")) + .many() .delimited_by(tag("["), tag("]")) .opt(), ) |
