EAT
if (EAT(',')) {
if (!EAT('}')) { /* error heuristics */
while (EAT('|'))
if (EAT('^')) {
if (EAT('*')) { /* implemented as +? */
if (EAT(',')) {
if (EAT('^'))
if (EAT(']'))
else if (EAT('-'))
if (EAT('-'))
if (EAT('-'))