summaryrefslogtreecommitdiff
path: root/src/atom
diff options
context:
space:
mode:
Diffstat (limited to 'src/atom')
-rw-r--r--src/atom/parsers.rs30
1 files changed, 14 insertions, 16 deletions
diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs
index 37e18a7..d3eaf7a 100644
--- a/src/atom/parsers.rs
+++ b/src/atom/parsers.rs
@@ -1,6 +1,6 @@
use core::option::Option::None;
-use mon::{Parser, ParserIter, r#if, numeric1, one_of, tag};
+use mon::{Parser, ParserIter, alphanumeric, r#if, numeric1, one_of, tag};
use crate::{
Parseable,
@@ -115,10 +115,8 @@ impl<'a> Parseable<'a, &'a str> for Category {
type Parser = impl Parser<&'a str, Output = Self>;
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()
- .many();
+ let start = alphanumeric().or(one_of("_".chars()));
+ let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many();
start
.and(rest)
@@ -131,13 +129,15 @@ impl<'a> Parseable<'a, &'a str> for Name {
type Parser = impl Parser<&'a str, Output = Self>;
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))
- .or(
- one_of("-".chars()).and_not(Version::parser().preceded_by(tag("-")).followed_by(
- r#if(|c: &char| c.is_ascii_alphanumeric() || "_+-".contains(*c)).not(),
- )),
- )
+ let start = alphanumeric().or(one_of("_".chars()));
+
+ let rest = alphanumeric()
+ .or(one_of("_+".chars()))
+ .or(one_of("-".chars()).and_not(
+ Version::parser()
+ .preceded_by(tag("-"))
+ .followed_by(alphanumeric().or(one_of("_+-".chars())).not()),
+ ))
.repeated()
.many();
@@ -162,10 +162,8 @@ impl<'a> Parseable<'a, &'a str> for SlotName {
type Parser = impl Parser<&'a str, Output = Self>;
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()
- .many();
+ let start = alphanumeric().or(one_of("_".chars()));
+ let rest = alphanumeric().or(one_of("+_.-".chars())).repeated().many();
start
.and(rest)