From 86508a3ad59a0bfc1e24448d0a0126b1a1c645e1 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Thu, 20 Feb 2020 18:52:34 +0000 Subject: Add support for duplicate record fields --- dhall/build.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'dhall/build.rs') diff --git a/dhall/build.rs b/dhall/build.rs index 7c62083..88a2145 100644 --- a/dhall/build.rs +++ b/dhall/build.rs @@ -375,6 +375,26 @@ fn convert_abnf_to_pest() -> std::io::Result<()> { rules.remove("url_path"); writeln!(&mut file, "url_path = _{{ path }}")?; + // TODO: workaround to simplify record parsing + rules.remove("non_empty_record_type_or_literal"); + rules.remove("non_empty_record_literal"); + rules.remove("non_empty_record_type"); + writeln!( + &mut file, + "non_empty_record_type_or_literal = {{ non_empty_record_literal | \ + non_empty_record_type }}" + )?; + writeln!( + &mut file, + "non_empty_record_literal = {{ record_literal_entry ~ (whsp ~ ^\",\" \ + ~ whsp ~ record_literal_entry)*}}" + )?; + writeln!( + &mut file, + "non_empty_record_type = {{ record_type_entry ~ (whsp ~ ^\",\" ~ whsp \ + ~ record_type_entry)* }}" + )?; + // Work around some greediness issue in the grammar. rules.remove("missing"); writeln!( -- cgit v1.2.3