summaryrefslogtreecommitdiff
path: root/dhall_generated_parser
diff options
context:
space:
mode:
authorNadrieril Feneanar2019-12-19 21:33:26 +0000
committerGitHub2019-12-19 21:33:26 +0000
commit91ef0cf697d56c91a8d15937aa4669dc221cd6c1 (patch)
treed3f00cf31d4386b82c6fb09eda3f690415dd8902 /dhall_generated_parser
parent3f00e4ca3fe22f88a1d0633e254df0bff781c6d3 (diff)
parent1e4f15d1891b497ecf6632432bc9252dc6a4507d (diff)
Merge pull request #117 from Nadrieril/merge-crates
Merge a bunch of sub-crates
Diffstat (limited to '')
-rw-r--r--dhall/.gitignore (renamed from dhall_generated_parser/.gitignore)0
l---------dhall/src/dhall.abnf (renamed from dhall_generated_parser/src/dhall.abnf)0
-rw-r--r--dhall/src/dhall.pest.visibility (renamed from dhall_generated_parser/src/dhall.pest.visibility)0
-rw-r--r--dhall_generated_parser/Cargo.toml18
-rw-r--r--dhall_generated_parser/build.rs90
-rw-r--r--dhall_generated_parser/src/lib.rs22
6 files changed, 0 insertions, 130 deletions
diff --git a/dhall_generated_parser/.gitignore b/dhall/.gitignore
index 8a0bac6..8a0bac6 100644
--- a/dhall_generated_parser/.gitignore
+++ b/dhall/.gitignore
diff --git a/dhall_generated_parser/src/dhall.abnf b/dhall/src/dhall.abnf
index ce13b8e..ce13b8e 120000
--- a/dhall_generated_parser/src/dhall.abnf
+++ b/dhall/src/dhall.abnf
diff --git a/dhall_generated_parser/src/dhall.pest.visibility b/dhall/src/dhall.pest.visibility
index 17c1edc..17c1edc 100644
--- a/dhall_generated_parser/src/dhall.pest.visibility
+++ b/dhall/src/dhall.pest.visibility
diff --git a/dhall_generated_parser/Cargo.toml b/dhall_generated_parser/Cargo.toml
deleted file mode 100644
index b1f0d02..0000000
--- a/dhall_generated_parser/Cargo.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[package]
-name = "dhall_generated_parser"
-version = "0.1.0"
-authors = ["Nadrieril <nadrieril@users.noreply.github.com>"]
-license = "BSD-2-Clause"
-edition = "2018"
-build = "build.rs"
-
-[lib]
-test = false
-doctest = false
-
-[build-dependencies]
-abnf_to_pest = { version = "0.1.1", path = "../abnf_to_pest" }
-
-[dependencies]
-pest = "2.1"
-pest_derive = "2.1"
diff --git a/dhall_generated_parser/build.rs b/dhall_generated_parser/build.rs
deleted file mode 100644
index d846f92..0000000
--- a/dhall_generated_parser/build.rs
+++ /dev/null
@@ -1,90 +0,0 @@
-use std::fs::File;
-use std::io::{BufRead, BufReader, Read, Write};
-
-use abnf_to_pest::render_rules_to_pest;
-
-fn main() -> std::io::Result<()> {
- let abnf_path = "src/dhall.abnf";
- let visibility_path = "src/dhall.pest.visibility";
- let pest_path = "src/dhall.pest";
- println!("cargo:rerun-if-changed={}", abnf_path);
- println!("cargo:rerun-if-changed={}", visibility_path);
-
- let mut file = File::open(abnf_path)?;
- let mut data = Vec::new();
- file.read_to_end(&mut data)?;
- data.push('\n' as u8);
-
- let mut rules = abnf_to_pest::parse_abnf(&data)?;
- for line in BufReader::new(File::open(visibility_path)?).lines() {
- let line = line?;
- if line.len() >= 2 && &line[0..2] == "# " {
- rules.get_mut(&line[2..]).map(|x| x.silent = true);
- }
- }
-
- let mut file = File::create(pest_path)?;
- writeln!(&mut file, "// AUTO-GENERATED FILE. See build.rs.")?;
-
- // TODO: this is a cheat; properly support RFC3986 URLs instead
- rules.remove("url_path");
- writeln!(&mut file, "url_path = _{{ path }}")?;
-
- rules.remove("simple_label");
- writeln!(
- &mut file,
- "simple_label = {{
- keyword ~ simple_label_next_char+
- | !keyword ~ simple_label_first_char ~ simple_label_next_char*
- }}"
- )?;
-
- rules.remove("nonreserved_label");
- writeln!(
- &mut file,
- "nonreserved_label = _{{
- !(builtin ~ !simple_label_next_char) ~ label
- }}"
- )?;
-
- // Setup grammar for precedence climbing
- rules.remove("operator_expression");
- writeln!(&mut file, r##"
- import_alt = {{ "?" ~ whsp1 }}
- bool_or = {{ "||" }}
- natural_plus = {{ "+" ~ whsp1 }}
- text_append = {{ "++" }}
- list_append = {{ "#" }}
- bool_and = {{ "&&" }}
- natural_times = {{ "*" }}
- bool_eq = {{ "==" }}
- bool_ne = {{ "!=" }}
-
- operator = _{{
- equivalent |
- bool_ne |
- bool_eq |
- natural_times |
- combine_types |
- prefer |
- combine |
- bool_and |
- list_append |
- text_append |
- natural_plus |
- bool_or |
- import_alt
- }}
- operator_expression = {{ application_expression ~ (whsp ~ operator ~ whsp ~ application_expression)* }}
- "##)?;
-
- writeln!(
- &mut file,
- "final_expression = ${{ SOI ~ complete_expression ~ EOI }}"
- )?;
-
- writeln!(&mut file)?;
- writeln!(&mut file, "{}", render_rules_to_pest(rules).pretty(80))?;
-
- Ok(())
-}
diff --git a/dhall_generated_parser/src/lib.rs b/dhall_generated_parser/src/lib.rs
deleted file mode 100644
index fbb9ccd..0000000
--- a/dhall_generated_parser/src/lib.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-//! This crate only contains a [pest][pest]-generated parser for the [dhall][dhall] language.
-//! It is part of the [dhall-rust][dhall-rust] crate.
-//!
-//! [pest]: https://pest.rs
-//! [dhall]: https://dhall-lang.org/
-//! [dhall-rust]: https://github.com/Nadrieril/dhall-rust
-
-// This crate only contains the grammar-generated parser. The rest of the
-// parser is in dhall_syntax. This separation is because compiling the
-// grammar-generated parser is extremely slow.
-// See the https://pest.rs documentation for details on what this crate contains.
-// The pest file is auto-generated and is located at ./dhall.pest.
-// It is generated from grammar.abnf in a rather straightforward manner. Some
-// additional overrides are done in ../build.rs.
-// The lines that are commented out in ./dhall.pest.visibility are marked as
-// silent (see pest docs for what that means) in the generated pest file.
-
-use pest_derive::Parser;
-
-#[derive(Parser)]
-#[grammar = "dhall.pest"]
-pub struct DhallParser;