This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Expand "git co" in pod/perlhack.pod
[perl5.git] / regcomp.sym
index 1f2c0bc..d0b7255 100644 (file)
@@ -13,6 +13,7 @@
 #
 #
 # run perl regen.pl after editing this file
+# Also update perlredebguts.pod
 
 
 
@@ -30,10 +31,15 @@ EOS         EOL,        no        ; Match "" at end of string.
 EOL         EOL,        no        ; Match "" at end of line.
 MEOL        EOL,        no        ; Same, assuming multiline.
 SEOL        EOL,        no        ; Same, assuming singleline.
-BOUND       BOUND,      no        ; Match "" at any word boundary
+BOUND       BOUND,      no        ; Match "" at any word boundary using native charset semantics for non-utf8
 BOUNDL      BOUND,      no        ; Match "" at any locale word boundary
-NBOUND      NBOUND,     no        ; Match "" at any word non-boundary
+BOUNDU      BOUND,      no        ; Match "" at any word boundary using Unicode semantics
+BOUNDA      BOUND,      no         ; Match "" at any word boundary using ASCII semantics
+# All NBOUND nodes are required by a line regexec.c to be greater than all BOUND ones
+NBOUND      NBOUND,     no        ; Match "" at any word non-boundary using native charset semantics for non-utf8
 NBOUNDL     NBOUND,     no        ; Match "" at any locale word non-boundary
+NBOUNDU     NBOUND,     no        ; Match "" at any word non-boundary using Unicode semantics
+NBOUNDA     NBOUND,     no        ; Match "" at any word non-boundary using ASCII semantics
 GPOS        GPOS,       no        ; Matches where last m//g left off.
 
 #* [Special] alternatives:
@@ -46,21 +52,25 @@ ANYOFV      ANYOF,      sv 0 V    ; Match character in (or not in) this class, c
 ALNUM       ALNUM,      no 0 S    ; Match any alphanumeric character using native charset semantics for non-utf8
 ALNUML      ALNUM,      no 0 S    ; Match any alphanumeric char in locale
 ALNUMU      ALNUM,      no 0 S    ; Match any alphanumeric char using Unicode semantics
+ALNUMA      ALNUM,      no 0 S    ; Match [A-Za-z_0-9]
 NALNUM      NALNUM,     no 0 S    ; Match any non-alphanumeric character using native charset semantics for non-utf8
 NALNUML     NALNUM,     no 0 S    ; Match any non-alphanumeric char in locale
 NALNUMU     NALNUM,     no 0 S    ; Match any non-alphanumeric char using Unicode semantics
+NALNUMA     NALNUM,     no 0 S    ; Match [^A-Za-z_0-9]
 SPACE       SPACE,      no 0 S    ; Match any whitespace character using native charset semantics for non-utf8
 SPACEL      SPACE,      no 0 S    ; Match any whitespace char in locale
 SPACEU      SPACE,      no 0 S    ; Match any whitespace char using Unicode semantics
+SPACEA      SPACE,      no 0 S    ; Match [ \t\n\f\r]
 NSPACE      NSPACE,     no 0 S    ; Match any non-whitespace character using native charset semantics for non-utf8
 NSPACEL     NSPACE,     no 0 S    ; Match any non-whitespace char in locale
 NSPACEU     NSPACE,     no 0 S    ; Match any non-whitespace char using Unicode semantics
+NSPACEA     NSPACE,     no 0 S    ; Match [^ \t\n\f\r]
 DIGIT       DIGIT,      no 0 S    ; Match any numeric character using native charset semantics for non-utf8
 DIGITL      DIGIT,      no 0 S    ; Match any numeric character in locale
-DIGITU      DIGIT,      no 0 S    ; Match any numeric character using Unicode semantics
+DIGITA      DIGIT,      no 0 S    ; Match [0-9]
 NDIGIT      NDIGIT,     no 0 S    ; Match any non-numeric character using native charset semantics for non-utf8
 NDIGITL     NDIGIT,     no 0 S    ; Match any non-numeric character in locale
-NDIGITU     NDIGIT,     no 0 S    ; Match any non-numeric character using Unicode semantics
+NDIGITA     NDIGIT,     no 0 S    ; Match [^0-9]
 CLUMP       CLUMP,      no 0 V    ; Match any extended grapheme cluster sequence
 
 #* Alternation
@@ -88,6 +98,7 @@ EXACT       EXACT,      str       ; Match this string (preceded by length).
 EXACTF      EXACT,      str       ; Match this string, folded, native charset semantics for non-utf8 (prec. by length).
 EXACTFL     EXACT,      str       ; Match this string, folded in locale (w/len).
 EXACTFU     EXACT,      str      ; Match this string, folded, Unicode semantics for non-utf8 (prec. by length).
+EXACTFA     EXACT,      str      ; Match this string, folded, Unicode semantics for non-utf8, but no ASCII-range character matches outside ASCII (prec. by length),.
 
 #*Do nothing types
 
@@ -122,16 +133,18 @@ CLOSE       CLOSE,      num 1     ; Analogous to OPEN.
 REF         REF,        num 1 V   ; Match some already matched string
 REFF        REF,        num 1 V   ; Match already matched string, folded using native charset semantics for non-utf8
 REFFL       REF,        num 1 V   ; Match already matched string, folded in loc.
-# REFFU and NREFFU could have been implemented using the FLAGS field of the
+# N?REFF[AU] could have been implemented using the FLAGS field of the
 # regnode, but by having a separate node type, we can use the existing switch
 # statement to avoid some tests
 REFFU       REF,        num 1 V   ; Match already matched string, folded using unicode semantics for non-utf8
+REFFA       REF,        num 1 V   ; Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII
 
 #*Named references.  Code in regcomp.c assumes that these all are after the numbered references
 NREF        REF,        no-sv 1 V ; Match some already matched string
 NREFF       REF,        no-sv 1 V ; Match already matched string, folded using native charset semantics for non-utf8
 NREFFL      REF,        no-sv 1 V ; Match already matched string, folded in loc.
 NREFFU      REF,        num   1 V ; Match already matched string, folded using unicode semantics for non-utf8
+NREFFA      REF,        num   1 V ; Match already matched string, folded using unicode semantics for non-utf8, no mixing ASCII, non-ASCII
 
 IFMATCH     BRANCHJ,    off 1 . 2 ; Succeeds if the following matches.
 UNLESSM     BRANCHJ,    off 1 . 2 ; Fails if the following matches.
@@ -162,7 +175,7 @@ RENUM       BRANCHJ,    off 1 . 1 ; Group with independently numbered parens.
 # inline charclass data (ascii only), the 'C' store it in the structure.
 # NOTE: the relative order of the TRIE-like regops  is significant
 
-TRIE        TRIE,       trie 1    ; Match many EXACT(F[LU]?)? at once. flags==type
+TRIE        TRIE,       trie 1    ; Match many EXACT(F[ALU]?)? at once. flags==type
 TRIEC       TRIE,trie charclass   ; Same as TRIE, but with embedded charclass data
 
 # For start classes, contains an added fail table.