From f965cc12b1e65af29fa8927b2bc8142ba4aabada Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Sat, 18 Sep 2021 17:50:51 +0000 Subject: [PATCH] feat: better "expected" messages --- --- a/crates/nixlike/src/lib.rs +++ b/crates/nixlike/src/lib.rs @@ -37,14 +37,18 @@ peg::parser! { pub grammar nixlike() for str { rule number() -> i64 - = v:$(['0'..='9' | '+' | '-']+) {? v.parse().map_err(|_| "")} + = quiet! { v:$(['0'..='9' | '+' | '-']+) {? v.parse().map_err(|_| "")} } / expected!("") + rule string_char() -> &'input str + = "\\\"" { "\"" } + / "\\\\" { "\\" } + / c:$([_]) { c } rule string() -> String - = "\"" v:$((!"\"" [_])+) "\"" { v.to_owned() } + = quiet! { "\"" v:(!"\"" c:string_char() {c})* "\"" { v.into_iter().collect() } } / expected!("") rule boolean() -> bool - = "true" {true} - / "false" {false} + = quiet! { "true" {true} + / "false" {false} } / expected!("") rule indent() -> String - = s:$(['a'..='z' | 'A'..='Z' | '0'..='9' | '_' | '-']+) { s.to_owned() } + = quiet! { s:$(['a'..='z' | 'A'..='Z' | '0'..='9' | '_' | '-']+) { s.to_owned() } } / expected!("") rule object() -> BTreeMap = "{" _ e:(k:indent()++(_ "." _) _ "=" _ v:value() _ ";" _ {(k, v)})* -- gitstuff