Switch to Cursor in syn
diff --git a/src/lit.rs b/src/lit.rs
index c9b4229..659571e 100644
--- a/src/lit.rs
+++ b/src/lit.rs
@@ -105,21 +105,31 @@
impl Synom for Lit {
fn parse(input: Cursor) -> PResult<Self> {
- let mut tokens = input.iter();
- let token = match tokens.next() {
- Some(token) => token,
- None => return parse_error(),
- };
- let kind = match token.kind {
- TokenKind::Literal(ref l) => LitKind::Other(l.clone()),
- TokenKind::Word(ref s) if s.as_str() == "true" => LitKind::Bool(true),
- TokenKind::Word(ref s) if s.as_str() == "false" => LitKind::Bool(false),
- _ => return parse_error(),
- };
- Ok((tokens.as_slice(), Lit {
- span: Span(token.span),
- value: kind,
- }))
+ match input.literal() {
+ Some((rest, span, lit)) => {
+ Ok((rest, Lit {
+ span: Span(span),
+ value: LitKind::Other(lit)
+ }))
+ }
+ _ => match input.word() {
+ Some((rest, span, sym)) => {
+ let kind = if sym.as_str() == "true" {
+ LitKind::Bool(true)
+ } else if sym.as_str() == "false" {
+ LitKind::Bool(false)
+ } else {
+ return parse_error();
+ };
+
+ Ok((rest, Lit {
+ span: Span(span),
+ value: kind
+ }))
+ }
+ _ => parse_error(),
+ }
+ }
}
}
}