diff options
Diffstat (limited to 'vendor/pest_generator/src/macros.rs')
-rw-r--r-- | vendor/pest_generator/src/macros.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/pest_generator/src/macros.rs b/vendor/pest_generator/src/macros.rs new file mode 100644 index 000000000..9d02725da --- /dev/null +++ b/vendor/pest_generator/src/macros.rs @@ -0,0 +1,44 @@ +// pest. The Elegant Parser +// Copyright (c) 2018 DragoČ™ Tiselice +// +// Licensed under the Apache License, Version 2.0 +// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT +// license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. All files in the project carrying such notice may not be copied, +// modified, or distributed except according to those terms. + +macro_rules! insert_builtin { + ($builtin: expr, $name: ident, $pattern: expr) => { + $builtin.push((stringify!($name), generate_rule!($name, $pattern))); + }; +} + +macro_rules! insert_public_builtin { + ($builtin: expr, $name: ident, $pattern: expr) => { + $builtin.push((stringify!($name), generate_public_rule!($name, $pattern))); + }; +} + +macro_rules! generate_rule { + ($name: ident, $pattern: expr) => { + quote! { + #[inline] + #[allow(dead_code, non_snake_case, unused_variables)] + pub fn $name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> { + $pattern + } + } + } +} + +macro_rules! generate_public_rule { + ($name: ident, $pattern: expr) => { + quote! { + #[inline] + #[allow(dead_code, non_snake_case, unused_variables)] + pub fn $name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> { + $pattern + } + } + } +} |