macro_rules! expect_words {
($factory:expr; $($word:expr),+; $children:expr; $callback:expr $(,)?) => { ... };
(@build $factory:expr, $callback:expr, $children:expr; $last:expr) => { ... };
(@build $factory:expr, $callback:expr, $children:expr; $head:expr, $($tail:expr),+) => { ... };
}