Idea.
Use lazy Kleene star in "nonterminal" rule.
Spelling in TODO: Use "parentheses" and "brackets" instead of "brackets" and "square brackets".