1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
// // lib.rs // The PHiLe Compiler // // Created by Arpad Goretity (H2CO3) // on 07/04/2017 // //! This library provides the programmatic interface for the PHiLe Compiler //! and Domain-Specific Language. The crate is composed of several modules, //! each of which roughly corresponds to a single step in the compilation //! pipeline: //! //! * `lexer` performs lexical analysis and tokenization. //! * `parser` performs higher-level syntactic analysis and outputs an… //! * `ast`, an Abstract Syntax Tree. //! * `sqirgen` takes the AST and typechecks it, then emits… //! * `sqir`, the Schema and Query Intermediate Representation, PHiLe IR. //! * `sqiropt` will take the raw SQIR and optimize it, so that it can be fed into… //! * `dalgen`, which is the back-end that generates the actual DAL code. //! * `util` contains miscellaneous helper types and functions. //! * `error` contains type definitions for uniformly describing syntactic, //! semantic, and internal compiler errors. //! //! Depending on how you are willing to use PHiLe, you may be looking for… //! //! * [The Tutorial](https://h2co3.github.io/phile/tutorial). This gets you //! started quickly and painlessly with writing schemas and queries in //! PHiLe's domain-specific language. //! * [The Examples](https://github.com/H2CO3/PHiLe/tree/master/doc/examples). //! Check out these code snippets if you learn easier by example. //! * [The Reference](https://h2co3.github.io/phile/reference). //! Search through this document if you are already familiar with the basics //! and you are now looking for the details of a specific feature. //! * [Manpage-style docs for `philec`](https://docs.rs/crate/philec/), //! if you want to deep dive into the invocation of the PHiLe CLI compiler. #![crate_name="phile"] #![crate_type="rlib"] #![crate_type="dylib"] #![doc(html_root_url = "https://docs.rs/phile/0.1.4")] #![deny(missing_debug_implementations, missing_copy_implementations, trivial_casts, trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications, missing_docs)] #![cfg_attr(feature = "cargo-clippy", allow(match_same_arms, clone_on_ref_ptr))] #![cfg_attr(feature = "cargo-clippy", deny(wrong_pub_self_convention, used_underscore_binding, stutter, similar_names, pub_enum_variant_names, non_ascii_literal, unicode_not_nfc, /* result_unwrap_used, option_unwrap_used, */ // TODO(H2CO3): fix these option_map_unwrap_or_else, option_map_unwrap_or, filter_map, shadow_unrelated, shadow_reuse, shadow_same, int_plus_one, string_add_assign, if_not_else, invalid_upcast_comparisons, cast_sign_loss, cast_precision_loss, cast_possible_wrap, cast_possible_truncation, mutex_integer, mut_mut, items_after_statements, print_stdout, mem_forget, maybe_infinite_iter))] extern crate regex; extern crate heck; extern crate unicode_segmentation; #[macro_use] pub mod util; #[macro_use] pub mod error; pub mod lexer; pub mod ast; pub mod parser; pub mod sqir; pub mod sqirgen; pub mod sqiropt; pub mod dalgen;