( (rule syntax (star syntax_rule)) (rule syntax_rule (seq meta_identifier defining_symbol definitions_list terminator_symbol)) (rule definitions_list (seq single_definition (star (seq definition_separator_symbol definitions_list)))) (rule single_definition (seq term (star (seq "," term)))) (rule term (seq factor (opt (seq "-" exception)))) (rule exception (seq factor)) (rule factor (seq (opt (seq integer "*")) primary)) (rule primary (alt optional_sequence repeated_sequence special_sequence grouped_sequence meta_identifier terminal_string empty )) (rule optional_sequence (seq start_option_symbol definitions_list end_option_symbol)) (rule repeated_sequence (seq start_repeat_symbol definitions_list end_repeat_symbol)) (rule grouped_sequence (seq "(" definitions_list ")")) (terminals _terminals (seq)) (terminal terminal_string (alt (seq "'" (plus first_terminal_character) "'") (seq "\"" (plus second_terminal_character) "\"")) ) (terminal meta_identifier (seq letter (star meta_identifier_character))) (terminal integer (plus decimal_digit)) (terminal special_sequence (seq "?" (star special_sequence_character) "?")) (terminal comment (seq start_comment_symbol (star comment_symbol) end_comment_symbol)) (terminal comment_symbol (alt comment commentless_symbol other_character)) (terminal commentless_symbol (alt terminal_character meta_identifier integer terminal_string special_sequence)) (terminal letter (range "a-zA-Z")) (terminal decimal_digit (range "0-9")) (terminal meta_identifier_character (alt letter decimal_digit "_")) (terminal first_terminal_character (diff terminal_character "'")) (terminal second_terminal_character (diff terminal_character "\"")) (terminal special_sequence_character (diff terminal_character "?")) (terminal terminal_character (alt letter decimal_digit concatenate_symbol defining_symbol definition_separator_symbol end_comment_symbol end_group_symbol end_option_symbol end_repeat_symbol except_symbol first_quote_symbol repetition_symbol second_quote_symbol special_sequence_symbol start_comment_symbol start_group_symbol start_option_symbol start_repeat_symbol terminator_symbol other_character )) (terminal other_character (alt (range ":+_%@&$<>^` ̃#x20#x23") "\\")) (terminal gap_separator (range "#x9#xa#xb#xc#xd#x20")) (pass _pass (alt (plus gap_separator) comment)) (terminal empty (seq "")) (terminal concatenate_symbol (seq ",")) (terminal repetition_symbol (seq "*")) (terminal except_symbol (seq "-")) (terminal first_quote_symbol (seq "'")) (terminal second_quote_symbol (seq "\"")) (terminal start_comment_symbol (seq "(*")) (terminal end_comment_symbol (seq "*)")) (terminal start_group_symbol (seq "(")) (terminal end_group_symbol (seq ")")) (terminal special_sequence_symbol (seq "?")) (terminal defining_symbol (alt "=" ":")) (terminal definition_separator_symbol (alt "|" "/" "!")) (terminal terminator_symbol (alt ";" ".")) (terminal start_option_symbol (seq "[")) (terminal end_option_symbol (seq "]")) (terminal start_repeat_symbol (alt "{" "(:")) (terminal end_repeat_symbol (alt "}" ":)")) (terminal gap_free_symbol (alt (diff terminal_character (range "'\"")) terminal_string)))