textPattern is pattern = "text"s;
attributePattern is pattern = "attribute"S identifier S "{"s textPattern "}"s;
elementPattern is pattern = "element"S identifier S "{"s pattern "}"s;
groupPattern is pattern = pattern (S ','S pattern)+;
interlivePattern is pattern = pattern (S '&'S pattern)+;
choicePattern is pattern = pattern (S '|'S pattern)+;