diff options
author | Greg Brown <gmb60@cam.ac.uk> | 2021-03-01 13:36:55 +0000 |
---|---|---|
committer | Greg Brown <gmb60@cam.ac.uk> | 2021-03-01 13:36:55 +0000 |
commit | 7ba3f96d49489aec9ff4a536c2df416287e49aca (patch) | |
tree | 02e5334a179b2103063d91ed8d1ef8ce658427b8 /src/lower/mod.rs | |
parent | 7934aa9af22e8fa3c33a45bc08e732a73c0cabf5 (diff) |
Initial work on charsetscharset
Diffstat (limited to 'src/lower/mod.rs')
-rw-r--r-- | src/lower/mod.rs | 56 |
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)) { |