A great deal of work on lookahead. Many more test cases, and lots of fixes.
[gazelle.git] / sketches / regex.gzl
blobb324b39963dbd90e358708005820ad8bcb8ce7bd
2 regex -> frag *(|);
3 frag  -> term *;
4 term  -> prim modifier ?;
5 modifier -> "?" | "+" | "*" | "{" number "}" | "{" number "," number "}";
6 prim  -> char | char_class | "(" regex ")";
7 char  -> escaped_char=/\\./ | regular_char=/[^\\\r\n\t\s[(]/;
8 char_class -> "[" ( class_char ("-" class_char)? )* "]";
9 class_char -> escaped_class_char=/\\./ | regular_class_char=/[^\]\\]/;
10 number -> /\d+/;
12 whitespace -> /[\r\n\t\s]+/;
13 allow whitespace in regex, frag, term, prim;