// -*- sugar -*- // white = '\009' | '\011' | '\012' | '\032'; // comment = '//'; // newline = '\013' | '\010' | '\013\010'; // // digit = '0'-'9'; // int = digit+; // letter = 'A'-'Z' | 'a'-'z'; // alpha = letter | digit | '_'; // id = letter alpha*; // literal = '\'' -- '\''; // str = '\"' -- '\"'; grammar: rule+; rule: = Alias: id ':' item+ ';' | Union: id ':' group+ ';' ; assoc: = Non: '=' | Left: '<' | Right: '>' ; group: assoc case ++ '|'; case: id ':' item*; item: = Literal: literal | Id: id | Mark: literal '?' | Option: id '?' | Star: id '*' | Plus: id '+' | Sstar: id '**' literal | Pplus: id '++' literal ;