diff options
-rw-r--r-- | Cargo.lock | 14 | ||||
-rw-r--r-- | abnf_to_pest/Cargo.toml | 2 | ||||
-rw-r--r-- | abnf_to_pest/src/lib.rs | 22 |
3 files changed, 24 insertions, 14 deletions
@@ -2,9 +2,19 @@ # It is not intended for manual editing. [[package]] name = "abnf" -version = "0.6.1" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d5f963d2236fd5701b660a9733bd22a5be300267955c71fa03bdf75ecb30b5" +dependencies = [ + "abnf-core", + "nom", +] + +[[package]] +name = "abnf-core" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47feb9fbcef700639ef28e04ca2a87eab8161a01a075ee227b15c90143805462" +checksum = "137c894fdb05ad3feb514cec800945cfebbb6435c73f9c2097b953e44a106273" dependencies = [ "nom", ] diff --git a/abnf_to_pest/Cargo.toml b/abnf_to_pest/Cargo.toml index 6a4abc4..a2b1dbc 100644 --- a/abnf_to_pest/Cargo.toml +++ b/abnf_to_pest/Cargo.toml @@ -13,7 +13,7 @@ repository = "https://github.com/Nadrieril/dhall-rust" doctest = false [dependencies] -abnf = "0.6.0" +abnf = "0.9.0" indexmap = "1.0.2" itertools = "0.9.0" pretty = "0.10.0" diff --git a/abnf_to_pest/src/lib.rs b/abnf_to_pest/src/lib.rs index 64672cc..deddf54 100644 --- a/abnf_to_pest/src/lib.rs +++ b/abnf_to_pest/src/lib.rs @@ -21,7 +21,7 @@ //! //! [pest]: https://pest.rs -use abnf::types::{Node, NumVal, Repeat, Rule}; +use abnf::types::{Node, Repeat, Rule, TerminalValues}; use indexmap::map::IndexMap; use itertools::Itertools; use pretty::BoxDoc; @@ -43,7 +43,7 @@ impl Pretty for Node { BoxDoc::space().append(BoxDoc::text("~ ")), ), Repetition(rep) => { - rep.get_node().pretty().append(rep.get_repeat().pretty()) + rep.node().pretty().append(rep.repeat().pretty()) } Rulename(s) => BoxDoc::text(escape_rulename(s)), Group(n) => BoxDoc::text("(") @@ -52,19 +52,19 @@ impl Pretty for Node { Optional(n) => BoxDoc::text("(") .append(n.pretty().nest(4).group()) .append(BoxDoc::text(")?")), - CharVal(s) => BoxDoc::text(format!( + String(s) => BoxDoc::text(format!( "^\"{}\"", s.replace("\"", "\\\"").replace("\\", "\\\\") )), - NumVal(r) => r.pretty(), - ProseVal(_) => unimplemented!(), + TerminalValues(r) => r.pretty(), + Prose(_) => unimplemented!(), } } } impl Pretty for Repeat { fn pretty(&self) -> BoxDoc<'static> { - BoxDoc::text(match (self.get_min().unwrap_or(0), self.get_max()) { + BoxDoc::text(match (self.min().unwrap_or(0), self.max()) { (0, None) => "*".into(), (1, None) => "+".into(), (0, Some(1)) => "?".into(), @@ -75,14 +75,14 @@ impl Pretty for Repeat { } } -impl Pretty for NumVal { +impl Pretty for TerminalValues { fn pretty(&self) -> BoxDoc<'static> { - use NumVal::*; + use TerminalValues::*; BoxDoc::text(match self { Range(x, y) => { format!("'{}'..'{}'", format_char(*x), format_char(*y)) } - Terminal(v) => { + Concatenation(v) => { format!("\"{}\"", v.iter().map(|x| format_char(*x)).join("")) } }) @@ -160,10 +160,10 @@ pub fn parse_abnf( .into_iter() .map(|rule| { ( - escape_rulename(rule.get_name()), + escape_rulename(rule.name()), PestyRule { silent: false, - node: rule.get_node().clone(), + node: rule.node().clone(), }, ) }) |