diff options
author | Nadrieril | 2019-03-02 17:12:41 +0100 |
---|---|---|
committer | Nadrieril | 2019-03-02 17:13:01 +0100 |
commit | 17fd0dd6d7ab9ef9529be0b0d70fcea683c08603 (patch) | |
tree | 3d08f31e012e6399b503717028eb593abd651989 /dhall | |
parent | 92b2aa7b84ec8211a1078c75c39806d1e79cf78c (diff) |
Move part of parser into its own crate to limit recompilation times
Diffstat (limited to 'dhall')
-rw-r--r-- | dhall/.gitignore | 1 | ||||
-rw-r--r-- | dhall/Cargo.toml | 3 | ||||
-rw-r--r-- | dhall/build.rs | 35 | ||||
-rw-r--r-- | dhall/src/dhall.pest.visibility | 188 | ||||
-rw-r--r-- | dhall/src/generated_parser.rs | 6 | ||||
-rw-r--r-- | dhall/src/lib.rs | 3 |
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; |