feat: add tuple for 6,7,8-tuple.
This commit is contained in:
parent
9da7290da5
commit
88d1eb937f
|
@ -120,6 +120,146 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<
|
||||||
|
'a,
|
||||||
|
TToken,
|
||||||
|
T1: 'a,
|
||||||
|
T2: 'a,
|
||||||
|
T3: 'a,
|
||||||
|
T4: 'a,
|
||||||
|
T5: 'a,
|
||||||
|
T6: 'a,
|
||||||
|
TContext,
|
||||||
|
P1,
|
||||||
|
P2,
|
||||||
|
P3,
|
||||||
|
P4,
|
||||||
|
P5,
|
||||||
|
P6,
|
||||||
|
> ParserTuple<'a, TToken, (T1, T2, T3, T4, T5, T6), TContext> for (P1, P2, P3, P4, P5, P6)
|
||||||
|
where
|
||||||
|
TToken: Debug + Clone,
|
||||||
|
P1: Parser<'a, TToken, T1, TContext>,
|
||||||
|
P2: Parser<'a, TToken, T2, TContext>,
|
||||||
|
P3: Parser<'a, TToken, T3, TContext>,
|
||||||
|
P4: Parser<'a, TToken, T4, TContext>,
|
||||||
|
P5: Parser<'a, TToken, T5, TContext>,
|
||||||
|
P6: Parser<'a, TToken, T6, TContext>,
|
||||||
|
{
|
||||||
|
fn parse(
|
||||||
|
&self,
|
||||||
|
context: Rc<RefCell<ParserContext<TToken, TContext>>>,
|
||||||
|
input: &'a [TToken],
|
||||||
|
) -> ParserResult<'a, TToken, (T1, T2, T3, T4, T5, T6)> {
|
||||||
|
let (input, r1) = self.0.parse(context.clone(), input)?;
|
||||||
|
let (input, r2) = self.1.parse(context.clone(), input)?;
|
||||||
|
let (input, r3) = self.2.parse(context.clone(), input)?;
|
||||||
|
let (input, r4) = self.3.parse(context.clone(), input)?;
|
||||||
|
let (input, r5) = self.4.parse(context.clone(), input)?;
|
||||||
|
let (input, r6) = self.5.parse(context.clone(), input)?;
|
||||||
|
|
||||||
|
Ok((input, (r1, r2, r3, r4, r5, r6)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<
|
||||||
|
'a,
|
||||||
|
TToken,
|
||||||
|
T1: 'a,
|
||||||
|
T2: 'a,
|
||||||
|
T3: 'a,
|
||||||
|
T4: 'a,
|
||||||
|
T5: 'a,
|
||||||
|
T6: 'a,
|
||||||
|
T7: 'a,
|
||||||
|
TContext,
|
||||||
|
P1,
|
||||||
|
P2,
|
||||||
|
P3,
|
||||||
|
P4,
|
||||||
|
P5,
|
||||||
|
P6,
|
||||||
|
P7,
|
||||||
|
> ParserTuple<'a, TToken, (T1, T2, T3, T4, T5, T6, T7), TContext>
|
||||||
|
for (P1, P2, P3, P4, P5, P6, P7)
|
||||||
|
where
|
||||||
|
TToken: Debug + Clone,
|
||||||
|
P1: Parser<'a, TToken, T1, TContext>,
|
||||||
|
P2: Parser<'a, TToken, T2, TContext>,
|
||||||
|
P3: Parser<'a, TToken, T3, TContext>,
|
||||||
|
P4: Parser<'a, TToken, T4, TContext>,
|
||||||
|
P5: Parser<'a, TToken, T5, TContext>,
|
||||||
|
P6: Parser<'a, TToken, T6, TContext>,
|
||||||
|
P7: Parser<'a, TToken, T7, TContext>,
|
||||||
|
{
|
||||||
|
fn parse(
|
||||||
|
&self,
|
||||||
|
context: Rc<RefCell<ParserContext<TToken, TContext>>>,
|
||||||
|
input: &'a [TToken],
|
||||||
|
) -> ParserResult<'a, TToken, (T1, T2, T3, T4, T5, T6, T7)> {
|
||||||
|
let (input, r1) = self.0.parse(context.clone(), input)?;
|
||||||
|
let (input, r2) = self.1.parse(context.clone(), input)?;
|
||||||
|
let (input, r3) = self.2.parse(context.clone(), input)?;
|
||||||
|
let (input, r4) = self.3.parse(context.clone(), input)?;
|
||||||
|
let (input, r5) = self.4.parse(context.clone(), input)?;
|
||||||
|
let (input, r6) = self.5.parse(context.clone(), input)?;
|
||||||
|
let (input, r7) = self.6.parse(context.clone(), input)?;
|
||||||
|
|
||||||
|
Ok((input, (r1, r2, r3, r4, r5, r6, r7)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<
|
||||||
|
'a,
|
||||||
|
TToken,
|
||||||
|
T1: 'a,
|
||||||
|
T2: 'a,
|
||||||
|
T3: 'a,
|
||||||
|
T4: 'a,
|
||||||
|
T5: 'a,
|
||||||
|
T6: 'a,
|
||||||
|
T7: 'a,
|
||||||
|
T8: 'a,
|
||||||
|
TContext,
|
||||||
|
P1,
|
||||||
|
P2,
|
||||||
|
P3,
|
||||||
|
P4,
|
||||||
|
P5,
|
||||||
|
P6,
|
||||||
|
P7,
|
||||||
|
P8,
|
||||||
|
> ParserTuple<'a, TToken, (T1, T2, T3, T4, T5, T6, T7, T8), TContext>
|
||||||
|
for (P1, P2, P3, P4, P5, P6, P7, P8)
|
||||||
|
where
|
||||||
|
TToken: Debug + Clone,
|
||||||
|
P1: Parser<'a, TToken, T1, TContext>,
|
||||||
|
P2: Parser<'a, TToken, T2, TContext>,
|
||||||
|
P3: Parser<'a, TToken, T3, TContext>,
|
||||||
|
P4: Parser<'a, TToken, T4, TContext>,
|
||||||
|
P5: Parser<'a, TToken, T5, TContext>,
|
||||||
|
P6: Parser<'a, TToken, T6, TContext>,
|
||||||
|
P7: Parser<'a, TToken, T7, TContext>,
|
||||||
|
P8: Parser<'a, TToken, T8, TContext>,
|
||||||
|
{
|
||||||
|
fn parse(
|
||||||
|
&self,
|
||||||
|
context: Rc<RefCell<ParserContext<TToken, TContext>>>,
|
||||||
|
input: &'a [TToken],
|
||||||
|
) -> ParserResult<'a, TToken, (T1, T2, T3, T4, T5, T6, T7, T8)> {
|
||||||
|
let (input, r1) = self.0.parse(context.clone(), input)?;
|
||||||
|
let (input, r2) = self.1.parse(context.clone(), input)?;
|
||||||
|
let (input, r3) = self.2.parse(context.clone(), input)?;
|
||||||
|
let (input, r4) = self.3.parse(context.clone(), input)?;
|
||||||
|
let (input, r5) = self.4.parse(context.clone(), input)?;
|
||||||
|
let (input, r6) = self.5.parse(context.clone(), input)?;
|
||||||
|
let (input, r7) = self.6.parse(context.clone(), input)?;
|
||||||
|
let (input, r8) = self.7.parse(context.clone(), input)?;
|
||||||
|
|
||||||
|
Ok((input, (r1, r2, r3, r4, r5, r6, r7, r8)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user