list keyword in metavariable documentation
As Markus observes in a very indirect way in Githib, in the metavariable documentation, the list nonterminal is not accessed very systematically. In some cases \opt{} is used. In some cases there is one rule for the case with list and one rule for the case without. For expressions, the absence of list comes as a side effect of enums and structs being optional. It woudl probably be better for all metavariable types that support lists be of the form mvtype \opt{\nt{list}} ...; And then other variants if any be provided without opt.
Also, it seems from the grammar that only statement list is supported, without the full functionality provided by the nonterminal. It could be good to check whether this is the case, and if it is consider whether a number of elements could be provided in this case as well. The length of a statement list could be the number of top-level statements, So eg a(); if (x) { one(); two(); three(); } would have length 2.