(grammar (start pattern) (matching longest) (settling tokens precedence dynamic ambiguity))
(extra (seq (optional (literal %0D)) (literal %0A)))
(conflict class_range character_class)
(rule pattern normal (choice unordered (ref alternation) (ref term)) (concept grammar.pattern))
(rule alternation normal (seq (optional (ref term)) (repeat1 (seq (literal %7C) (optional (ref term))))) (concept grammar.alternation))
(rule term normal (repeat1 (seq (choice unordered (ref start_assertion) (ref end_assertion) (ref boundary_assertion) (ref non_boundary_assertion) (ref lookaround_assertion) (ref pattern_character) (ref character_class) (ref posix_character_class) (ref any_character) (ref decimal_escape) (ref character_class_escape) (ref character_escape) (ref backreference_escape) (ref named_group_backreference) (ref anonymous_capturing_group) (ref named_capturing_group) (ref non_capturing_group) (ref inline_flags_group)) (optional (choice unordered (ref zero_or_more) (ref one_or_more) (ref optional) (ref count_quantifier))))) (concept grammar.term))
(rule any_character token (literal .) (concept grammar.any-character))
(rule start_assertion normal (literal %5E) (concept grammar.start-assertion))
(rule end_assertion token (literal %24) (concept grammar.end-assertion))
(rule boundary_assertion token (literal %5Cb) (concept grammar.boundary-assertion))
(rule non_boundary_assertion token (literal %5CB) (concept grammar.non-boundary-assertion))
(rule lookaround_assertion normal (choice unordered (ref lookahead_assertion) (ref lookbehind_assertion)) (concept grammar.lookaround-assertion))
(rule lookahead_assertion silent (seq (literal %28%3F) (choice unordered (literal %3D) (literal %21)) (ref pattern) (literal %29)) (concept grammar.lookahead-assertion) (source-names (tree-sitter _lookahead_assertion)))
(rule lookbehind_assertion silent (seq (literal %28%3F%3C) (choice unordered (literal %3D) (literal %21)) (ref pattern) (literal %29)) (concept grammar.lookbehind-assertion) (source-names (tree-sitter _lookbehind_assertion)))
(rule pattern_character token (class negated (char %5E) (char %24) (char %5C) (char .) (char %2A) (char %2B) (char %3F) (char %28) (char %29) (char %5B) (char %5D) (char %7C) (char %0D) (char %3F) (char %0A)) (concept grammar.pattern-character))
(rule character_class normal (seq (literal %5B) (optional (literal %5E)) (optional (alias class_character (literal -))) (repeat0 (ref class_atom)) (optional (alias class_character (literal -))) (literal %5D)) (concept grammar.character-class))
(rule posix_character_class normal (seq (literal %5B%3A) (ref posix_class_name) (literal %3A%5D)) (concept grammar.posix-character-class))
(rule posix_class_name normal (alias unnamed_token (token (repeat1 (class plain (range a z) (range A Z))))) (concept grammar.posix-class-name))
(rule class_range normal (precedence 0 right (seq (choice unordered (ref class_character) (ref character_class_escape) (ref control_escape) (alias class_character (literal -))) (literal -) (choice unordered (ref class_character) (ref character_class_escape) (ref control_escape) (alias class_character (literal -))))) (concept grammar.class-range))
(rule class_atom silent (choice unordered (ref class_character) (alias identity_escape (literal %5C-)) (ref character_class_escape) (ref character_escape) (ref posix_character_class) (ref class_range)) (concept grammar.class-atom) (source-names (tree-sitter _class_atom)))
(rule class_character token (class negated (char %5C) (char %5D) (char -)) (concept grammar.class-character))
(rule anonymous_capturing_group normal (seq (literal %28) (ref pattern) (literal %29)) (concept grammar.anonymous-capturing-group))
(rule named_capturing_group normal (seq (choice unordered (literal %28%3F%3C) (literal %28%3FP%3C)) (ref group_name) (literal %3E) (ref pattern) (literal %29)) (concept grammar.named-capturing-group))
(rule non_capturing_group normal (seq (literal %28%3F%3A) (ref pattern) (literal %29)) (concept grammar.non-capturing-group))
(rule inline_flags_group normal (seq (literal %28%3F) (choice unordered (ref flags) (seq (ref flags) (literal -) (ref flags)) (seq (literal -) (ref flags))) (optional (seq (literal %3A) (ref pattern))) (literal %29)) (concept grammar.inline-flags-group))
(rule flags normal (alias unnamed_token (token (repeat1 (class plain (range a z) (range A Z))))) (concept grammar.flags))
(rule zero_or_more normal (seq (literal %2A) (optional (alias lazy (literal %3F)))) (concept grammar.zero-or-more-repetition))
(rule one_or_more normal (seq (literal %2B) (optional (alias lazy (literal %3F)))) (concept grammar.one-or-more-repetition))
(rule optional normal (seq (literal %3F) (optional (alias lazy (literal %3F)))) (concept grammar.optional-expression))
(rule count_quantifier normal (seq (seq (literal %7B) (choice unordered (seq (ref decimal_digits) (optional (seq (literal %2C) (optional (ref decimal_digits))))) (seq (literal %2C) (ref decimal_digits))) (literal %7D)) (optional (alias lazy (literal %3F)))) (concept grammar.count-quantifier))
(rule backreference_escape normal (seq (literal %5Ck) (literal %3C) (ref group_name) (literal %3E)) (concept grammar.backreference-escape))
(rule named_group_backreference normal (seq (literal %28%3FP%3D) (ref group_name) (literal %29)) (concept grammar.named-group-backreference))
(rule decimal_escape token (seq (literal %5C) (class plain (range 1 9)) (repeat0 (class plain (range 0 9)))) (concept grammar.decimal-escape))
(rule character_class_escape normal (choice unordered (alias unnamed_token (token (seq (literal %5C) (class plain (char d) (char D) (char s) (char S) (char w) (char W))))) (seq (alias unnamed_token (token (seq (literal %5C) (class plain (char p) (char P))))) (literal %7B) (ref unicode_property_value_expression) (literal %7D)) (ref unicode_character_escape)) (concept grammar.character-class-escape))
(rule unicode_character_escape normal (choice unordered (alias unnamed_token (token (seq (literal %5Cu) (repeat 4 4 (class plain (range 0 9) (range a f) (range A F)))))) (alias unnamed_token (token (seq (literal %5Cu%7B) (repeat 1 6 (class plain (range 0 9) (range a f) (range A F))) (literal %7D))))) (concept grammar.unicode-character-escape))
(rule unicode_property_value_expression normal (seq (optional (seq (alias unicode_property_name (ref unicode_property)) (literal %3D))) (alias unicode_property_value (ref unicode_property))) (concept grammar.unicode-property-value-expression))
(rule unicode_property token (repeat1 (class plain (range a z) (range A Z) (char _) (range 0 9))) (concept grammar.unicode-property))
(rule character_escape silent (choice unordered (ref control_escape) (ref control_letter_escape) (ref identity_escape)) (concept grammar.character-escape) (source-names (tree-sitter _character_escape)))
(rule control_escape normal (choice unordered (alias unnamed_token (token (seq (literal %5C) (class plain (char b) (char f) (char n) (char r) (char t) (char v) (char 0))))) (alias unnamed_token (token (seq (literal %5Cx) (repeat 2 2 (class plain (range 0 9) (range a f) (range A F))))))) (concept grammar.control-escape))
(rule control_letter_escape token (seq (literal %5Cc) (class plain (range a z) (range A Z))) (concept grammar.control-letter-escape))
(rule identity_escape token (seq (literal %5C) (class negated (char k) (char d) (char D) (char s) (char S) (char p) (char P) (char w) (char W) (char b) (char f) (char n) (char r) (char t) (char v) (range 0 9))) (concept grammar.identity-escape))
(rule group_name token (seq (class plain (range A Z) (range a z) (char _)) (repeat0 (class plain (range A Z) (range a z) (range 0 9) (char _)))) (concept grammar.group-name))
(rule decimal_digits token (repeat1 (class plain (range 0 9))) (concept grammar.decimal-digits))