macro_rules! npn {
[() -> ()] => { ... };
[() -> ($stack:tt)] => { ... };
[(+ $($tail:tt)*) -> ($($stack:tt)*)] => { ... };
[(- $($tail:tt)*) -> ($($stack:tt)*)] => { ... };
[(* $($tail:tt)*) -> ($($stack:tt)*)] => { ... };
[(/ $($tail:tt)*) -> ($($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> (+ $($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> (- $($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> (* $($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> (/ $($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> ($stack_head:tt + $($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> ($stack_head:tt - $($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> ($stack_head:tt * $($stack:tt)*)] => { ... };
[($head:tt $($tail:tt)*) -> ($stack_head:tt / $($stack:tt)*)] => { ... };
[($($tail:tt)*) -> ($stack_first:tt $stack_second:tt + $($stack:tt)*)] => { ... };
[($($tail:tt)*) -> ($stack_first:tt $stack_second:tt - $($stack:tt)*)] => { ... };
[($($tail:tt)*) -> ($stack_first:tt $stack_second:tt * $($stack:tt)*)] => { ... };
[($($tail:tt)*) -> ($stack_first:tt $stack_second:tt / $($stack:tt)*)] => { ... };
[$first:tt $second:tt $($tail:tt)*] => { ... };
}