diff options
author | Nadrieril Feneanar | 2019-09-02 23:15:28 +0200 |
---|---|---|
committer | GitHub | 2019-09-02 23:15:28 +0200 |
commit | a92d09259fc1db995a036eb2f22491c7024ca878 (patch) | |
tree | d3dc2c2fd2b98c2938b01e7ffb5bf2a085b32feb /dhall_proc_macros/src/lib.rs | |
parent | 737abd9be6d35bbce784d9cf249edf7ad14677d6 (diff) | |
parent | f892f0bdb1dc9a8f2d1cda245e17c28fcf1090b3 (diff) |
Merge pull request #110 from Nadrieril/parser-proc-macro
Rewrite parser macros as proc_macros
Diffstat (limited to 'dhall_proc_macros/src/lib.rs')
-rw-r--r-- | dhall_proc_macros/src/lib.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/dhall_proc_macros/src/lib.rs b/dhall_proc_macros/src/lib.rs index 5304429..37e8f9f 100644 --- a/dhall_proc_macros/src/lib.rs +++ b/dhall_proc_macros/src/lib.rs @@ -1,3 +1,4 @@ +#![feature(drain_filter)] //! This crate contains the code-generation primitives for the [dhall-rust][dhall-rust] crate. //! This is highly unstable and breaks regularly; use at your own risk. //! @@ -6,6 +7,8 @@ extern crate proc_macro; mod derive; +mod make_parser; +mod parse_children; use proc_macro::TokenStream; @@ -13,3 +16,19 @@ use proc_macro::TokenStream; pub fn derive_static_type(input: TokenStream) -> TokenStream { derive::derive_static_type(input) } + +#[proc_macro_attribute] +pub fn make_parser(attrs: TokenStream, input: TokenStream) -> TokenStream { + TokenStream::from(match make_parser::make_parser(attrs, input) { + Ok(tokens) => tokens, + Err(err) => err.to_compile_error(), + }) +} + +#[proc_macro] +pub fn parse_children(input: TokenStream) -> TokenStream { + TokenStream::from(match parse_children::parse_children(input) { + Ok(tokens) => tokens, + Err(err) => err.to_compile_error(), + }) +} |