Macro synom::peek [] [src]

macro_rules! peek {
    ($i:expr, $submac:ident!( $($args:tt)* )) => { ... };
    ($i:expr, $f:expr) => { ... };
}

Parse a value without consuming it from the input data.

extern crate syn;
#[macro_use] extern crate synom;

use syn::Expr;
use syn::parse::{ident, expr};
use synom::IResult;

// Parse an expression that begins with an identifier.
named!(ident_expr -> Expr,
    preceded!(peek!(ident), expr)
);

fn main() {
    // begins with an identifier
    let input = "banana + 1";
    let parsed = ident_expr(input).expect("ident");
    println!("{:?}", parsed);

    // does not begin with an identifier
    let input = "1 + banana";
    let err = ident_expr(input);
    assert_eq!(err, IResult::Error);
}