summaryrefslogtreecommitdiff
path: root/src/lower
diff options
context:
space:
mode:
Diffstat (limited to 'src/lower')
-rw-r--r--src/lower/mod.rs56
1 files changed, 30 insertions, 26 deletions
diff --git a/src/lower/mod.rs b/src/lower/mod.rs
index dcd0f1f..45be7aa 100644
--- a/src/lower/mod.rs
+++ b/src/lower/mod.rs
@@ -300,17 +300,19 @@ impl Backend for RustBackend {
.enumerate()
.find(|(_, ty)| ty.nullable())
.map(|(idx, _)| name_parts[idx].clone());
- let (first_alts, firsts): (Vec<_>, Vec<_>) = tys
- .iter()
- .map(Type::first_set)
- .cloned()
- .enumerate()
- .filter(|(_, fs)| !fs.is_empty())
- .map(|(idx, fs)| {
- let fs = fs.into_iter();
- (name_parts[idx].clone(), quote! {#(Some(#fs))|*})
- })
- .unzip();
+ todo!();
+ // let (first_alts, firsts): (Vec<_>, Vec<_>) = tys
+ // .iter()
+ // .map(Type::first_set)
+ // .cloned()
+ // .enumerate()
+ // .filter(|(_, fs)| !fs.is_empty())
+ // .map(|(idx, fs)| {
+ // let fs = fs.into_iter();
+ // // (name_parts[idx].clone(), quote! {#(Some(#fs))|*})
+ // todo!()
+ // })
+ // .unzip();
let all_firsts = tys
.iter()
.map(Type::first_set)
@@ -336,25 +338,27 @@ impl Backend for RustBackend {
quote_spanned! {span=>
impl Parse for #name {
fn take<P: Parser + ?Sized>(input: &mut P) -> Result<Self, TakeError> {
- match input.peek() {
- #(#firsts => Ok(Self::#first_alts(input.take()?)),)*
- _ => Ok(Self::#nullable(input.take()?))
- }
+ todo!()
+ // match input.peek() {
+ // #(#firsts => Ok(Self::#first_alts(input.take()?)),)*
+ // _ => Ok(Self::#nullable(input.take()?))
+ // }
}
}
}
} else {
- quote_spanned! {span=>
- impl Parse for #name {
- fn take<P: Parser + ?Sized>(input: &mut P) -> Result<Self, TakeError> {
- match input.peek() {
- #(#firsts => Ok(Self::#first_alts(input.take()?)),)*
- Some(c) => Err(TakeError::BadBranch(input.pos(), c, &[#(#all_firsts),*])),
- None => Err(TakeError::EndOfStream(input.pos()))
- }
- }
- }
- }
+ todo!()
+ // quote_spanned! {span=>
+ // impl Parse for #name {
+ // fn take<P: Parser + ?Sized>(input: &mut P) -> Result<Self, TakeError> {
+ // match input.peek() {
+ // #(#firsts => Ok(Self::#first_alts(input.take()?)),)*
+ // Some(c) => Err(TakeError::BadBranch(input.pos(), c, &[#(#all_firsts),*])),
+ // None => Err(TakeError::EndOfStream(input.pos()))
+ // }
+ // }
+ // }
+ // }
});
if ids.iter().all(|id| self.can_char.contains(id)) {