=pod The world needs a Perl6 regex pattern reference grammar. Here is a place to accumulate one. Resources: http://search.cpan.org/dist/Perl6-Bible/lib/Perl6/Bible/S05.pod http://www.nntp.perl.org/group/perl.perl6.language/20985 docs/quickref/rules http://search.cpan.org/dist/Perl6-Bible/lib/Perl6/Bible/E05.pod http://search.cpan.org/dist/Perl6-Bible/lib/Perl6/Bible/A05.pod =cut grammar Perl6::Rx; rule flag_parsetree { <':parsetree'> } rule flag_exhaustive { <':exhaustive'> | <':ex'> } rule flag_overlap { <':overlap'> | <':ov'> } rule flag_words { <':sigspace'> | <':s'> } # XXX - there are more. Useful short-term. Eventually not needed, # once macro rxmodinternal: etc works. #rule name { } #rule code { } rule name { [|<[\.\:]>]+ } rule code { ([ <-[{}]> | \{ <'}'> ]* ) } rule pattern { +? } rule term { | | } rule comment { \# \N* } rule alternation { \| +? } rule non_alternation { | } rule conjunction { \& +? } rule non_conjunction { | | } rule repetition { } rule quantifier { \*\* {<[\d\.]>+}(\??) | <[\?\*\+]>(\??) } rule alias { |||||| } rule named_scalar_alias { \$\<\> \:\= } rule array_alias { \@\<\> \:\= } rule hash_alias { \%\<\> \:\= } rule numbered_scalar_alias { \$ \:\= } rule number { \d+ } rule external_scalar_alias { \$ \:\= } rule external_array_alias { \@ \:\= } rule external_hash_alias { \% \:\= } rule construct { | } rule construct_but_not_alias { ||| } rule quantified_construct { } rule simple_term { | | | | | | | | | | | | | | | | | | } # XXX - not \S, eg :foo('a b'):i:4x # must be terminated by () [] :: as in :z()not :z[]not :z::not rule metasyntactic_token { \:\w\S+ } rule commit_something { | | } rule commit_rule { \:\:\: } rule commit_alternation { \:\: } rule commit_atom { \: } rule match_var { \$ <[\/\.\d]>+ } # XXX - $/ etc rule psuedo_scalar_literal { \$ } # $foo ==> <'$foo'> Scary. rule interpolated_array { \@ ? } rule interpolated_hash { \% ? } # XXX - kludge rule element_expr { [ \[ <-[\]]> \] | \{ <-[\}]> <'}'> ] ? } rule null_term { \< null \> } rule assertion { |||||| } rule assert_bos { \^ } rule assert_eos { \$ } rule assert_bol { \^\^ } rule assert_eol { \$\$ } rule lookahead { \< (!?) before \> } rule lookbehind { \< (!?) after \> } rule word_boundary { \\ b } #rule element_boundary { \< , \> } # punt for now rule subrule { ([\<\<|\<|\x[abd]]) (\??) [ \( \) | | ] [\>\>|\>|\x[bbd]] } rule argument_list { [ <-[\\\(\)]> | \\ . | \( \) ]* } rule capturing_group { \( \) } rule noncapturing_group { \[ \] } rule closure { \{ <'}'> } rule literal { \<(!?)\' [ <-[\\\']> | \\ . ]* \'\> } rule interpolated_literal { \<(!?)\" [ <-[\\\"]> | \\ \" ]* \"\> } rule code_rule { \<(!?)\{ \}\> } rule code_assertion { \<(!?)\( \)\> } rule code { [ <-[\{\}]> | \{ <'}'> ]* } rule metasyntactic_var { \<(!?)<[\$\@\%]> <-[\>]>+ \> | } rule metasyntactic_sub { \<(!?)<[&]> [ \( \) ]? \> } rule symbolic_indirect_rule { \<(!?)\:\:\( \)\> } rule character { |||||| } rule a_dot { \. } rule logical_grapheme { \< \. \> } rule abbreviated_class { \\ <[dswDSWhvnHVN]> } rule explicit_class { \< + \> } rule character_set { (\+|-)? \[ [ <-[\\\]]> | \\ . ]* \] | (\+|-) } rule escape_sequence { | | } rule simple_escape_sequence { \\ <[trfeTRFE]> } rule octal_escape_sequence { \\ 0 [ | [ | ; ]+ ] } rule hexidecimal_escape_sequence { \\ <[xX]> [ | | [ | ; ]+ ] } rule bracket_open { <[\{\(\[\<\>\/\!\=\?\#\x[abd]\x[bbd]]> } rule bracket_close { <[\}\)\]\>\<\/\!\=\?\#\x[bbd]\x[abd]]> } rule named_character { \\ <[cC]> \[ <-[\]]>+ \] } # XXX - PGE doesnt do <-> yet. rule simple_character { <-[\{\}\[\]\(\)\^\$\.\|\*\+\?\#\\]> } rule metacharacter { <[\{\}\[\]\(\)\^\$\.\|\*\+\?\#\\]> }