Worklist implementation: Parse the given token stream (produced by bnf::tokenize) into an AST, using the given bnf::Grammar, and taking the given root rule name as the starting point.
Recursive implementation: Parse the given token stream (produced by bnf::tokenize) into an AST, using the given bnf::Grammar, and taking the given root rule name as the starting point.