features.ebnf (445B)
1 %token WHILE = "while"; 2 %token FOR_EACH = "for_each"; 3 4 %lex { 5 %skip WS = [ \t\r\n] [ \t\r\n]*; 6 7 DQUOTE = "\""; 8 NUMBER = [0-9] [0-9]*; 9 IDENT = [A-Za-z_] [A-Za-z0-9_]*; 10 } 11 12 %lex string { 13 STR_TEXT = [A-Za-z] [A-Za-z]*; 14 STR_END = "\""; 15 } 16 17 features = ("while" | "for_each") numbers ";" names; 18 numbers = NUMBER number_rest?; 19 number_rest = "," number_after_comma; 20 number_after_comma = NUMBER number_rest? | %empty; 21 names = IDENT IDENT*;