summaryrefslogtreecommitdiff
path: root/dhall
diff options
context:
space:
mode:
authorNadrieril2019-03-02 17:12:41 +0100
committerNadrieril2019-03-02 17:13:01 +0100
commit17fd0dd6d7ab9ef9529be0b0d70fcea683c08603 (patch)
tree3d08f31e012e6399b503717028eb593abd651989 /dhall
parent92b2aa7b84ec8211a1078c75c39806d1e79cf78c (diff)
Move part of parser into its own crate to limit recompilation times
Diffstat (limited to 'dhall')
-rw-r--r--dhall/.gitignore1
-rw-r--r--dhall/Cargo.toml3
-rw-r--r--dhall/build.rs35
-rw-r--r--dhall/src/dhall.pest.visibility188
-rw-r--r--dhall/src/generated_parser.rs6
-rw-r--r--dhall/src/lib.rs3
6 files changed, 3 insertions, 233 deletions
diff --git a/dhall/.gitignore b/dhall/.gitignore
deleted file mode 100644
index 8a0bac6..0000000
--- a/dhall/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-src/dhall.pest
diff --git a/dhall/Cargo.toml b/dhall/Cargo.toml
index d55d04e..4c6be34 100644
--- a/dhall/Cargo.toml
+++ b/dhall/Cargo.toml
@@ -7,7 +7,6 @@ build = "build.rs"
[build-dependencies]
lalrpop = "0.16.3"
-abnf_to_pest = { path = "../abnf_to_pest" }
[dependencies]
bytecount = "0.5.1"
@@ -15,4 +14,4 @@ lalrpop-util = "0.16.3"
nom = "3.0.0"
term-painter = "0.2.3"
pest = { git = "https://github.com/pest-parser/pest" }
-pest_derive = "2.0"
+dhall_parser = { path = "../dhall_parser" }
diff --git a/dhall/build.rs b/dhall/build.rs
index 9d5d8f7..946841a 100644
--- a/dhall/build.rs
+++ b/dhall/build.rs
@@ -1,39 +1,6 @@
-use std::fs::File;
-use std::io::{Read,Write,BufReader,BufRead};
-use std::collections::HashMap;
-
use lalrpop;
-use abnf_to_pest::{PestRuleSettings, abnf_to_pest};
-fn main() -> std::io::Result<()> {
+fn main() {
lalrpop::process_root().unwrap();
println!("cargo:rerun-if-changed=src/grammar.lalrpop");
-
-
- let abnf_path = "../dhall-lang/standard/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 rule_settings: HashMap<String, PestRuleSettings> = HashMap::new();
- for line in BufReader::new(File::open(visibility_path)?).lines() {
- let line = line?;
- if line.len() >= 2 && &line[0..2] == "# " {
- rule_settings.insert(line[2..].into(), PestRuleSettings { visible: false, ..Default::default() });
- } else {
- rule_settings.insert(line, PestRuleSettings { visible: true, ..Default::default() });
- }
- }
-
- let mut file = File::create(pest_path)?;
- writeln!(&mut file, "{}", abnf_to_pest(&data, &rule_settings)?)?;
- writeln!(&mut file, "final_expression = _{{ SOI ~ complete_expression ~ EOI }}")?;
-
- Ok(())
}
diff --git a/dhall/src/dhall.pest.visibility b/dhall/src/dhall.pest.visibility
deleted file mode 100644
index c09fccf..0000000
--- a/dhall/src/dhall.pest.visibility
+++ /dev/null
@@ -1,188 +0,0 @@
-# end_of_line
-# tab
-# block_comment
-# block_comment_chunk
-# block_comment_continue
-# not_end_of_line
-# line_comment
-# whitespace_chunk
-# whitespace
-# nonempty_whitespace
-# ALPHA
-# DIGIT
-# HEXDIG
-# simple_label
-# quoted_label
-# label
-# double_quote_chunk
-# double_quote_literal
-# single_quote_continue
-# single_quote_literal
-# text_literal
-# if_raw
-# then_raw
-# else_raw
-# let_raw
-# in_raw
-# as_raw
-# using_raw
-# merge_raw
-# missing_raw
-# Some_raw
-# constructors_raw
-# Natural_fold_raw
-# Natural_build_raw
-# Natural_isZero_raw
-# Natural_even_raw
-# Natural_odd_raw
-# Natural_toInteger_raw
-# Natural_show_raw
-# Integer_toDouble_raw
-# Integer_show_raw
-# Double_show_raw
-# List_build_raw
-# List_fold_raw
-# List_length_raw
-# List_head_raw
-# List_last_raw
-# List_indexed_raw
-# List_reverse_raw
-# Optional_fold_raw
-# Optional_build_raw
-# Text_show_raw
-# Bool_raw
-# Optional_raw
-# None_raw
-# Natural_raw
-# Integer_raw
-# Double_raw
-# Text_raw
-# List_raw
-# True_raw
-# False_raw
-# NaN_raw
-# Infinity_raw
-# Type_raw
-# Kind_raw
-# Sort_raw
-# reserved_raw
-# reserved_namespaced_raw
-# reserved
-# reserved_namespaced
-# if_
-# then_
-# else_
-# let_
-# in_
-# as_
-# using
-# merge
-# constructors
-# Some
-# Optional
-# Text
-# List
-# equal
-# or
-# plus
-# text_append
-# list_append
-# and
-# times
-# double_equal
-# not_equal
-# dot
-# open_brace
-# close_brace
-# open_bracket
-# close_bracket
-# open_angle
-# close_angle
-# bar
-# comma
-# open_parens
-# close_parens
-# at
-# colon
-# import_alt
-# combine
-# combine_types
-# prefer
-# lambda
-# forall
-# arrow
-# exponent
-# double_literal
-# natural_literal_raw
-integer_literal
-natural_literal
-# identifier
-# identifier_reserved_prefix
-# identifier_reserved_namespaced_prefix
-# missing
-# path_character
-# quoted_path_character
-# path_component
-# directory
-# file
-# local_raw
-# local
-# scheme
-# http_raw
-# authority
-# userinfo
-# host
-# port
-# IP_literal
-# IPvFuture
-# IPv6address
-# h16
-# ls32
-# IPv4address
-# dec_octet
-# reg_name
-# pchar
-# query
-# fragment
-# pct_encoded
-# unreserved
-# sub_delims
-# http
-# env
-# bash_environment_variable
-# posix_environment_variable
-# posix_environment_variable_character
-# import_type
-# hash
-# import_hashed
-# import
-# expression
-# annotated_expression
-# empty_collection
-# non_empty_optional
-# operator_expression
-# import_alt_expression
-# or_expression
-plus_expression
-# text_append_expression
-# list_append_expression
-# and_expression
-# combine_expression
-# prefer_expression
-# combine_types_expression
-times_expression
-# equal_expression
-# not_equal_expression
-# application_expression
-# import_expression
-# selector_expression
-# primitive_expression
-# labels
-# record_type_or_literal
-# non_empty_record_type_or_literal
-# non_empty_record_type
-# non_empty_record_literal
-# union_type_or_literal
-# non_empty_union_type_or_literal
-# non_empty_list_literal
-# complete_expression
diff --git a/dhall/src/generated_parser.rs b/dhall/src/generated_parser.rs
deleted file mode 100644
index 452b4cd..0000000
--- a/dhall/src/generated_parser.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-#[allow(unused_imports)]
-use pest_derive::*;
-
-#[derive(Parser)]
-#[grammar = "dhall.pest"]
-pub struct DhallParser;
diff --git a/dhall/src/lib.rs b/dhall/src/lib.rs
index e07071d..9dbd3a6 100644
--- a/dhall/src/lib.rs
+++ b/dhall/src/lib.rs
@@ -4,9 +4,8 @@ pub mod context;
mod core;
pub use crate::core::*;
use lalrpop_util::lalrpop_mod;
-lalrpop_mod!(pub grammar); // synthesized by LALRPOP
+lalrpop_mod!(pub grammar);
mod grammar_util;
-mod generated_parser;
pub mod lexer;
pub mod parser;
pub mod typecheck;