Put remaining cursor last
diff --git a/src/parsers.rs b/src/parsers.rs
index cfef607..4049fe3 100644
--- a/src/parsers.rs
+++ b/src/parsers.rs
@@ -89,7 +89,7 @@
eprintln!(concat!(" -> ", stringify!($fun), " @ {:?}"), i);
let r = $fun(i $(, $args)*);
match r {
- Ok((i, _)) => eprintln!(concat!("OK ", stringify!($fun), " @ {:?}"), i),
+ Ok((_, i)) => eprintln!(concat!("OK ", stringify!($fun), " @ {:?}"), i),
Err(_) => eprintln!(concat!("ERR ", stringify!($fun), " @ {:?}"), i),
}
r
@@ -173,8 +173,8 @@
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, o)) =>
- ::std::result::Result::Ok((i, $crate::parsers::invoke($g, o))),
+ ::std::result::Result::Ok((o, i)) =>
+ ::std::result::Result::Ok(($crate::parsers::invoke($g, o), i)),
}
};
@@ -220,7 +220,7 @@
match $submac!($i, $($args)*) {
::std::result::Result::Ok(_) => $crate::parse_error(),
::std::result::Result::Err(_) =>
- ::std::result::Result::Ok(($i, ())),
+ ::std::result::Result::Ok(((), $i)),
}
};
}
@@ -286,12 +286,12 @@
($i:expr, $cond:expr, $submac:ident!( $($args:tt)* )) => {
if $cond {
match $submac!($i, $($args)*) {
- ::std::result::Result::Ok((i, o)) =>
- ::std::result::Result::Ok((i, ::std::option::Option::Some(o))),
+ ::std::result::Result::Ok((o, i)) =>
+ ::std::result::Result::Ok((::std::option::Option::Some(o), i)),
::std::result::Result::Err(x) => ::std::result::Result::Err(x),
}
} else {
- ::std::result::Result::Ok(($i, ::std::option::Option::None))
+ ::std::result::Result::Ok((::std::option::Option::None, $i))
}
};
@@ -425,16 +425,16 @@
loop {
if input.eof() {
- ret = ::std::result::Result::Ok((input, res));
+ ret = ::std::result::Result::Ok((res, input));
break;
}
match $submac!(input, $($args)*) {
::std::result::Result::Err(_) => {
- ret = ::std::result::Result::Ok((input, res));
+ ret = ::std::result::Result::Ok((res, input));
break;
}
- ::std::result::Result::Ok((i, o)) => {
+ ::std::result::Result::Ok((o, i)) => {
// loop trip must always consume (otherwise infinite loops)
if i == input {
ret = $crate::parse_error();
@@ -465,14 +465,14 @@
loop {
if input.eof() {
- return Ok((input, res));
+ return Ok((res, input));
}
match f(input) {
Err(_) => {
- return Ok((input, res));
+ return Ok((res, input));
}
- Ok((i, o)) => {
+ Ok((o, i)) => {
// loop trip must always consume (otherwise infinite loops)
if i == input {
return parse_error();
@@ -561,7 +561,7 @@
($i:expr, $submac:ident!( $($args:tt)* ), $($p:pat => $subrule:ident!( $($args2:tt)* ))|* ) => {
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) => ::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, o)) => match o {
+ ::std::result::Result::Ok((o, i)) => match o {
$(
$p => $subrule!(i, $($args2)*),
)*
@@ -651,7 +651,7 @@
#[macro_export]
macro_rules! value {
($i:expr, $res:expr) => {
- ::std::result::Result::Ok(($i, $res))
+ ::std::result::Result::Ok(($res, $i))
};
}
@@ -721,7 +721,7 @@
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, o)) =>
+ ::std::result::Result::Ok((o, i)) =>
tuple_parser!(i, (o), $($rest)*),
}
};
@@ -730,7 +730,7 @@
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, o)) =>
+ ::std::result::Result::Ok((o, i)) =>
tuple_parser!(i, ($($parsed)* , o), $($rest)*),
}
};
@@ -747,13 +747,13 @@
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, o)) =>
- ::std::result::Result::Ok((i, ($($parsed),*, o))),
+ ::std::result::Result::Ok((o, i)) =>
+ ::std::result::Result::Ok((($($parsed),*, o), i)),
}
};
($i:expr, ($($parsed:expr),*)) => {
- ::std::result::Result::Ok(($i, ($($parsed),*)))
+ ::std::result::Result::Ok((($($parsed),*), $i))
};
}
@@ -796,8 +796,8 @@
($i:expr, $subrule:ident!( $($args:tt)* ) => { $gen:expr } | $($rest:tt)+) => {
match $subrule!($i, $($args)*) {
- ::std::result::Result::Ok((i, o)) =>
- ::std::result::Result::Ok((i, $crate::parsers::invoke($gen, o))),
+ ::std::result::Result::Ok((o, i)) =>
+ ::std::result::Result::Ok(($crate::parsers::invoke($gen, o), i)),
::std::result::Result::Err(_) => alt!($i, $($rest)*),
}
};
@@ -812,8 +812,8 @@
($i:expr, $subrule:ident!( $($args:tt)* ) => { $gen:expr }) => {
match $subrule!($i, $($args)*) {
- ::std::result::Result::Ok((i, o)) =>
- ::std::result::Result::Ok((i, $crate::parsers::invoke($gen, o))),
+ ::std::result::Result::Ok((o, i)) =>
+ ::std::result::Result::Ok(($crate::parsers::invoke($gen, o), i)),
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
}
@@ -876,7 +876,7 @@
#[macro_export]
macro_rules! do_parse {
($i:expr, ( $($rest:expr),* )) => {
- ::std::result::Result::Ok(($i, ( $($rest),* )))
+ ::std::result::Result::Ok((( $($rest),* ), $i))
};
($i:expr, $e:ident >> $($rest:tt)*) => {
@@ -887,7 +887,7 @@
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, _)) =>
+ ::std::result::Result::Ok((_, i)) =>
do_parse!(i, $($rest)*),
}
};
@@ -900,7 +900,7 @@
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, o)) => {
+ ::std::result::Result::Ok((o, i)) => {
let $field = o;
do_parse!(i, $($rest)*)
},
@@ -915,7 +915,7 @@
match $submac!($i, $($args)*) {
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),
- ::std::result::Result::Ok((i, o)) => {
+ ::std::result::Result::Ok((o, i)) => {
let mut $field = o;
do_parse!(i, $($rest)*)
},
@@ -985,7 +985,7 @@
#[doc(hidden)]
pub fn input_end(input: Cursor) -> PResult<'static, ()> {
if input.eof() {
- Ok((Cursor::empty(), ()))
+ Ok(((), Cursor::empty()))
} else {
parse_error()
}
@@ -1036,10 +1036,10 @@
macro_rules! option {
($i:expr, $submac:ident!( $($args:tt)* )) => {
match $submac!($i, $($args)*) {
- ::std::result::Result::Ok((i, o)) =>
- ::std::result::Result::Ok((i, Some(o))),
+ ::std::result::Result::Ok((o, i)) =>
+ ::std::result::Result::Ok((Some(o), i)),
::std::result::Result::Err(_) =>
- ::std::result::Result::Ok(($i, None)),
+ ::std::result::Result::Ok((None, $i)),
}
};
@@ -1086,7 +1086,7 @@
#[macro_export]
macro_rules! epsilon {
($i:expr,) => {
- ::std::result::Result::Ok(($i, ()))
+ ::std::result::Result::Ok(((), $i))
};
}
@@ -1102,10 +1102,10 @@
macro_rules! tap {
($i:expr, $name:ident : $submac:ident!( $($args:tt)* ) => $e:expr) => {
match $submac!($i, $($args)*) {
- ::std::result::Result::Ok((i, o)) => {
+ ::std::result::Result::Ok((o, i)) => {
let $name = o;
$e;
- ::std::result::Result::Ok((i, ()))
+ ::std::result::Result::Ok(((), i))
}
::std::result::Result::Err(err) =>
::std::result::Result::Err(err),