Function tagua_parser::rules::expressions::primaries::anonymous_function
[−]
pub fn anonymous_function(i: &[u8]) -> IResult<&[u8], Expression, u32>
Recognize an anonymous function.
Examples
use tagua_parser::Result; use tagua_parser::ast::{ AnonymousFunction, Arity, Expression, Name, Parameter, Scope, Statement, Ty, Variable }; use tagua_parser::rules::expressions::primaries::anonymous_function; assert_eq!( anonymous_function(b"function &($x, \\I\\J $y, int &$z) use ($a, &$b): O { return; }"), Result::Done( &b""[..], Expression::AnonymousFunction( AnonymousFunction { declaration_scope: Scope::Dynamic, inputs : Arity::Finite(vec![ Parameter { ty : Ty::Copy(None), name : Variable(&b"x"[..]), value: None }, Parameter { ty : Ty::Copy(Some(Name::FullyQualified(vec![&b"I"[..], &b"J"[..]]))), name : Variable(&b"y"[..]), value: None }, Parameter { ty : Ty::Reference(Some(Name::FullyQualified(vec![&b"int"[..]]))), name : Variable(&b"z"[..]), value: None } ]), output : Ty::Reference(Some(Name::Unqualified(&b"O"[..]))), enclosing_scope: Some(vec![ Expression::Variable(Variable(&b"a"[..])), Expression::Reference( Box::new( Expression::Variable(Variable(&b"b"[..])) ) ) ]), body: vec![Statement::Return] } ) ) );Run