summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock7
-rw-r--r--dhall/Cargo.toml14
-rw-r--r--dhall/src/lib.rs4
-rw-r--r--dhall/src/syntax/core/context.rs (renamed from dhall_syntax/src/core/context.rs)0
-rw-r--r--dhall/src/syntax/core/expr.rs (renamed from dhall_syntax/src/core/expr.rs)6
-rw-r--r--dhall/src/syntax/core/import.rs (renamed from dhall_syntax/src/core/import.rs)0
-rw-r--r--dhall/src/syntax/core/label.rs (renamed from dhall_syntax/src/core/label.rs)0
-rw-r--r--dhall/src/syntax/core/map.rs (renamed from dhall_syntax/src/core/map.rs)0
-rw-r--r--dhall/src/syntax/core/mod.rs (renamed from dhall_syntax/src/core/mod.rs)0
-rw-r--r--dhall/src/syntax/core/span.rs (renamed from dhall_syntax/src/core/span.rs)0
-rw-r--r--dhall/src/syntax/core/text.rs (renamed from dhall_syntax/src/core/text.rs)0
-rw-r--r--dhall/src/syntax/core/visitor.rs (renamed from dhall_syntax/src/core/visitor.rs)6
-rw-r--r--dhall/src/syntax/mod.rs15
-rw-r--r--dhall/src/syntax/parser.rs (renamed from dhall_syntax/src/parser.rs)28
-rw-r--r--dhall/src/syntax/printer.rs (renamed from dhall_syntax/src/printer.rs)14
-rw-r--r--dhall_syntax/src/lib.rs22
16 files changed, 59 insertions, 57 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 257fade..204d914 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -74,9 +74,14 @@ name = "dhall"
version = "0.1.0"
dependencies = [
"bytecount 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "dhall_syntax 0.1.0",
+ "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"improved_slice_patterns 2.0.0",
"itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pest_consume 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_cbor 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/dhall/Cargo.toml b/dhall/Cargo.toml
index 16c1c78..2a2a3fe 100644
--- a/dhall/Cargo.toml
+++ b/dhall/Cargo.toml
@@ -8,13 +8,19 @@ build = "build.rs"
[dependencies]
bytecount = "0.5.1"
+either = "1.5.2"
+improved_slice_patterns = { version = "2.0.0", path = "../improved_slice_patterns" }
itertools = "0.8.0"
-take_mut = "0.2.2"
-term-painter = "0.2.3"
+hex = "0.3.2"
+lazy_static = "1.4.0"
+percent-encoding = "2.1.0"
+pest = "2.1"
+# pest_consume = { path = "../../pest_consume/pest_consume" }
+pest_consume = "1.0"
serde = { version = "1.0" }
serde_cbor = "0.9.0"
-improved_slice_patterns = { version = "2.0.0", path = "../improved_slice_patterns" }
-dhall_syntax = { path = "../dhall_syntax" }
+take_mut = "0.2.2"
+term-painter = "0.2.3"
[dev-dependencies]
pretty_assertions = "0.6.1"
diff --git a/dhall/src/lib.rs b/dhall/src/lib.rs
index 86af98f..0991375 100644
--- a/dhall/src/lib.rs
+++ b/dhall/src/lib.rs
@@ -13,6 +13,4 @@
mod tests;
pub mod semantics;
-pub mod syntax {
- pub use dhall_syntax::*;
-}
+pub mod syntax;
diff --git a/dhall_syntax/src/core/context.rs b/dhall/src/syntax/core/context.rs
index 6844baa..6844baa 100644
--- a/dhall_syntax/src/core/context.rs
+++ b/dhall/src/syntax/core/context.rs
diff --git a/dhall_syntax/src/core/expr.rs b/dhall/src/syntax/core/expr.rs
index 131f97e..7972283 100644
--- a/dhall_syntax/src/core/expr.rs
+++ b/dhall/src/syntax/core/expr.rs
@@ -1,6 +1,6 @@
-use crate::map::{DupTreeMap, DupTreeSet};
-use crate::visitor::{self, ExprFMutVisitor, ExprFVisitor};
-use crate::*;
+use crate::syntax::map::{DupTreeMap, DupTreeSet};
+use crate::syntax::visitor::{self, ExprFMutVisitor, ExprFVisitor};
+use crate::syntax::*;
pub type Integer = isize;
pub type Natural = usize;
diff --git a/dhall_syntax/src/core/import.rs b/dhall/src/syntax/core/import.rs
index da3e99b..da3e99b 100644
--- a/dhall_syntax/src/core/import.rs
+++ b/dhall/src/syntax/core/import.rs
diff --git a/dhall_syntax/src/core/label.rs b/dhall/src/syntax/core/label.rs
index 43c3f53..43c3f53 100644
--- a/dhall_syntax/src/core/label.rs
+++ b/dhall/src/syntax/core/label.rs
diff --git a/dhall_syntax/src/core/map.rs b/dhall/src/syntax/core/map.rs
index c4c6126..c4c6126 100644
--- a/dhall_syntax/src/core/map.rs
+++ b/dhall/src/syntax/core/map.rs
diff --git a/dhall_syntax/src/core/mod.rs b/dhall/src/syntax/core/mod.rs
index 66bf229..66bf229 100644
--- a/dhall_syntax/src/core/mod.rs
+++ b/dhall/src/syntax/core/mod.rs
diff --git a/dhall_syntax/src/core/span.rs b/dhall/src/syntax/core/span.rs
index f9c7008..f9c7008 100644
--- a/dhall_syntax/src/core/span.rs
+++ b/dhall/src/syntax/core/span.rs
diff --git a/dhall_syntax/src/core/text.rs b/dhall/src/syntax/core/text.rs
index fb390ee..fb390ee 100644
--- a/dhall_syntax/src/core/text.rs
+++ b/dhall/src/syntax/core/text.rs
diff --git a/dhall_syntax/src/core/visitor.rs b/dhall/src/syntax/core/visitor.rs
index 143e556..b76d037 100644
--- a/dhall_syntax/src/core/visitor.rs
+++ b/dhall/src/syntax/core/visitor.rs
@@ -1,4 +1,4 @@
-use crate::*;
+use crate::syntax::*;
use std::iter::FromIterator;
/// A visitor trait that can be used to traverse `ExprF`s. We need this pattern so that Rust lets
@@ -111,7 +111,7 @@ where
.collect()
}
- use crate::ExprF::*;
+ use crate::syntax::ExprF::*;
Ok(match input {
Var(v) => Var(v.clone()),
Lam(l, t, e) => {
@@ -225,7 +225,7 @@ where
Ok(())
}
- use crate::ExprF::*;
+ use crate::syntax::ExprF::*;
match input {
Var(_) | Const(_) | Builtin(_) | BoolLit(_) | NaturalLit(_)
| IntegerLit(_) | DoubleLit(_) => {}
diff --git a/dhall/src/syntax/mod.rs b/dhall/src/syntax/mod.rs
new file mode 100644
index 0000000..177c4f1
--- /dev/null
+++ b/dhall/src/syntax/mod.rs
@@ -0,0 +1,15 @@
+#![allow(
+ clippy::many_single_char_names,
+ clippy::should_implement_trait,
+ clippy::new_without_default,
+ clippy::type_complexity
+)]
+
+mod core;
+pub use crate::syntax::core::context;
+pub use crate::syntax::core::visitor;
+pub use crate::syntax::core::*;
+mod printer;
+pub use crate::syntax::printer::*;
+mod parser;
+pub use crate::syntax::parser::*;
diff --git a/dhall_syntax/src/parser.rs b/dhall/src/syntax/parser.rs
index 044d3f1..2f589fe 100644
--- a/dhall_syntax/src/parser.rs
+++ b/dhall/src/syntax/parser.rs
@@ -5,9 +5,9 @@ use std::rc::Rc;
use pest_consume::{match_nodes, Parser};
-use crate::map::{DupTreeMap, DupTreeSet};
-use crate::ExprF::*;
-use crate::*;
+use crate::syntax::map::{DupTreeMap, DupTreeSet};
+use crate::syntax::ExprF::*;
+use crate::syntax::*;
// This file consumes the parse tree generated by pest and turns it into
// our own AST. All those custom macros should eventually moved into
@@ -28,9 +28,9 @@ enum Selector<E> {
ProjectionByExpr(Expr<E>),
}
-impl crate::Builtin {
+impl crate::syntax::Builtin {
pub fn parse(s: &str) -> Option<Self> {
- use crate::Builtin::*;
+ use crate::syntax::Builtin::*;
match s {
"Bool" => Some(Bool),
"Natural" => Some(Natural),
@@ -146,7 +146,7 @@ lazy_static::lazy_static! {
}
#[derive(Parser)]
-#[grammar = "dhall.pest"]
+#[grammar = "../../dhall_syntax/src/dhall.pest"]
struct DhallParser;
#[pest_consume::parser(parser = DhallParser, rule = Rule)]
@@ -328,14 +328,14 @@ impl DhallParser {
#[alias(expression)]
fn builtin<E: Clone>(input: ParseInput) -> ParseResult<Expr<E>> {
let s = input.as_str();
- let e = match crate::Builtin::parse(s) {
+ let e = match crate::syntax::Builtin::parse(s) {
Some(b) => Builtin(b),
None => match s {
"True" => BoolLit(true),
"False" => BoolLit(false),
- "Type" => Const(crate::Const::Type),
- "Kind" => Const(crate::Const::Kind),
- "Sort" => Const(crate::Const::Sort),
+ "Type" => Const(crate::syntax::Const::Type),
+ "Kind" => Const(crate::syntax::Const::Kind),
+ "Sort" => Const(crate::syntax::Const::Sort),
_ => {
Err(input.error(format!("Unrecognized builtin: '{}'", s)))?
}
@@ -575,8 +575,8 @@ impl DhallParser {
fn import_hashed<E: Clone>(
input: ParseInput,
- ) -> ParseResult<crate::Import<Expr<E>>> {
- use crate::Import;
+ ) -> ParseResult<crate::syntax::Import<Expr<E>>> {
+ use crate::syntax::Import;
let mode = ImportMode::Code;
Ok(match_nodes!(input.into_children();
[import_type(location)] => Import { mode, location, hash: None },
@@ -595,7 +595,7 @@ impl DhallParser {
#[alias(expression)]
fn import<E: Clone>(input: ParseInput) -> ParseResult<Expr<E>> {
- use crate::Import;
+ use crate::syntax::Import;
let import = match_nodes!(input.children();
[import_hashed(imp)] => {
Import { mode: ImportMode::Code, ..imp }
@@ -699,7 +699,7 @@ impl DhallParser {
op: ParseInput,
r: Expr<E>,
) -> ParseResult<Expr<E>> {
- use crate::BinOp::*;
+ use crate::syntax::BinOp::*;
use Rule::*;
let op = match op.as_rule() {
import_alt => ImportAlt,
diff --git a/dhall_syntax/src/printer.rs b/dhall/src/syntax/printer.rs
index ce6ff97..8df456b 100644
--- a/dhall_syntax/src/printer.rs
+++ b/dhall/src/syntax/printer.rs
@@ -1,11 +1,11 @@
-use crate::*;
+use crate::syntax::*;
use itertools::Itertools;
use std::fmt::{self, Display};
/// Generic instance that delegates to subexpressions
impl<SE: Display + Clone, E: Display> Display for ExprF<SE, E> {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- use crate::ExprF::*;
+ use crate::syntax::ExprF::*;
match self {
Lam(a, b, c) => {
write!(f, "λ({} : {}) → {}", a, b, c)?;
@@ -141,7 +141,7 @@ impl<A: Display + Clone> RawExpr<A> {
f: &mut fmt::Formatter,
phase: PrintPhase,
) -> Result<(), fmt::Error> {
- use crate::ExprF::*;
+ use crate::syntax::ExprF::*;
use PrintPhase::*;
let needs_paren = match self {
@@ -298,7 +298,7 @@ impl Display for Const {
impl Display for BinOp {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- use crate::BinOp::*;
+ use crate::syntax::BinOp::*;
f.write_str(match self {
BoolOr => "||",
TextAppend => "++",
@@ -344,7 +344,7 @@ impl Display for Label {
let is_reserved = match s.as_str() {
"let" | "in" | "if" | "then" | "else" | "Type" | "Kind"
| "Sort" | "True" | "False" => true,
- _ => crate::Builtin::parse(&s).is_some(),
+ _ => crate::syntax::Builtin::parse(&s).is_some(),
};
if !is_reserved && s.chars().all(|c| c.is_ascii_alphanumeric()) {
write!(f, "{}", s)
@@ -443,7 +443,7 @@ impl<SubExpr: Display> Display for Import<SubExpr> {
impl Display for Builtin {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- use crate::Builtin::*;
+ use crate::syntax::Builtin::*;
f.write_str(match *self {
Bool => "Bool",
Natural => "Natural",
@@ -480,7 +480,7 @@ impl Display for Builtin {
impl Display for Scheme {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- use crate::Scheme::*;
+ use crate::syntax::Scheme::*;
f.write_str(match *self {
HTTP => "http",
HTTPS => "https",
diff --git a/dhall_syntax/src/lib.rs b/dhall_syntax/src/lib.rs
index b8fa19f..e69de29 100644
--- a/dhall_syntax/src/lib.rs
+++ b/dhall_syntax/src/lib.rs
@@ -1,22 +0,0 @@
-#![feature(trace_macros)]
-#![feature(never_type)]
-#![allow(
- clippy::many_single_char_names,
- clippy::should_implement_trait,
- clippy::new_without_default,
- clippy::type_complexity
-)]
-
-//! This crate contains the core AST-handling primitives for the [dhall-rust][dhall-rust] crate.
-//! This is highly unstable and breaks regularly; use at your own risk.
-//!
-//! [dhall-rust]: https://github.com/Nadrieril/dhall-rust
-
-mod core;
-pub use crate::core::context;
-pub use crate::core::visitor;
-pub use crate::core::*;
-mod printer;
-pub use crate::printer::*;
-mod parser;
-pub use crate::parser::*;