Eventually (#4), the user should be able to define arbitrary new nonterminals, but that has some complicated design uncertainties. In the mean time, lots of normal languages have Item, a nonterminal that defines a new name (or names) but (unlike Pat) doesn't expect a context element and therefore don't need to be handled in order. It's common to have all the bindings provided in a list of items be bound in all of the items.
Eventually (#4), the user should be able to define arbitrary new nonterminals, but that has some complicated design uncertainties. In the mean time, lots of normal languages have
Item
, a nonterminal that defines a new name (or names) but (unlikePat
) doesn't expect a context element and therefore don't need to be handled in order. It's common to have all the bindings provided in a list of items be bound in all of the items.