macro for common parser functions signatures
This commit is contained in:
parent
1d152cd78f
commit
5604434de5
@ -1,4 +1,5 @@
|
|||||||
mod _keyword_impls;
|
mod _keyword_impls;
|
||||||
|
mod parser_func;
|
||||||
|
|
||||||
pub trait Predicate<C> {
|
pub trait Predicate<C> {
|
||||||
fn check(&mut self, chr: C) -> bool;
|
fn check(&mut self, chr: C) -> bool;
|
||||||
|
|||||||
80
src/parser_func.rs
Normal file
80
src/parser_func.rs
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
#[macro_export]
|
||||||
|
macro_rules! parser_func {
|
||||||
|
|
||||||
|
(
|
||||||
|
$name:ident
|
||||||
|
$(<
|
||||||
|
$generic0Name:ident : $generic0Bound:path $(, $genericNName:ident : $genericNBound:path)*
|
||||||
|
>)?
|
||||||
|
($srcName:ident : $srcType:ty $(, $argNName:ident : $argNType:ty)*)
|
||||||
|
$(-> $ret:ty)?
|
||||||
|
$body:block
|
||||||
|
) => {
|
||||||
|
fn $name
|
||||||
|
<
|
||||||
|
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
||||||
|
$(, $generic0Name : $generic0Bound $(, $genericNName : $genericNBound)* )?
|
||||||
|
>
|
||||||
|
($srcName: $srcType $(, $argNName : $argNType)*)
|
||||||
|
$(-> $ret)?
|
||||||
|
$body
|
||||||
|
};
|
||||||
|
(
|
||||||
|
$name:ident
|
||||||
|
<
|
||||||
|
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
||||||
|
$(, $genericNName:ident : $genericNBound:path)*
|
||||||
|
>
|
||||||
|
($srcName:ident : $srcType:ty $(, $argNName:ident : $argNType:ty)*)
|
||||||
|
$(-> $ret:ty)?
|
||||||
|
$body:block
|
||||||
|
) => {
|
||||||
|
fn $name
|
||||||
|
<
|
||||||
|
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
||||||
|
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
||||||
|
$(, $genericNName : $genericNBound)*
|
||||||
|
>
|
||||||
|
($srcName: $srcType $(, $argNName : $argNType)*)
|
||||||
|
$(-> $ret)?
|
||||||
|
$body
|
||||||
|
};
|
||||||
|
(
|
||||||
|
$name:ident
|
||||||
|
$(<
|
||||||
|
$generic0Name:ident : $generic0Bound:path $(, $genericNName:ident : $genericNBound:path)*
|
||||||
|
>)?
|
||||||
|
($srcName:ident $(, $argNName:ident : $argNType:ty)*)
|
||||||
|
$(-> $ret:ty)?
|
||||||
|
$body:block
|
||||||
|
) => {
|
||||||
|
fn $name
|
||||||
|
<
|
||||||
|
'source, 'pos, 'builder, C, P:Pos<'pos>, CS:CollectedSubstring<'source, C>
|
||||||
|
$(, $generic0Name : $generic0Bound $(, $genericNName : $genericNBound)* )?
|
||||||
|
>
|
||||||
|
($srcName: &'source mut impl SourceStream<'source, 'pos, C, P, CS> $(, $argNName : $argNType)*)
|
||||||
|
$(-> $ret)?
|
||||||
|
$body
|
||||||
|
};
|
||||||
|
(
|
||||||
|
$name:ident
|
||||||
|
<
|
||||||
|
$lifetime0Name:lifetime $(, $lifetimeNName:lifetime)*
|
||||||
|
$(, $genericNName:ident : $genericNBound:path)*
|
||||||
|
>
|
||||||
|
($srcName:ident $(, $argNName:ident : $argNType:ty)*)
|
||||||
|
$(-> $ret:ty)?
|
||||||
|
$body:block
|
||||||
|
) => {
|
||||||
|
fn $name
|
||||||
|
<
|
||||||
|
'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*,
|
||||||
|
C, P: Pos<'pos>, CS: CollectedSubstring<'source, C>
|
||||||
|
$(, $genericNName : $genericNBound)*
|
||||||
|
>
|
||||||
|
($srcName: &'source mut impl SourceStream<'source, 'pos, C, P, CS> $(, $argNName : $argNType)*)
|
||||||
|
$(-> $ret)?
|
||||||
|
$body
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user