# Note that the order in this file is important.
#
# Format for first section:
-# NAME \s+ TYPE, arg-description [num-args] [flags] [longjump-len] ; DESCRIPTION
-# flag <S> means is REGNODE_SIMPLE; flag <V> means is REGNODE_VARIES
+# NAME \s+ TYPE, arg-description [num-args] [flags] [longjump] ; DESCRIPTION
+# flag <S> means is REGNODE_SIMPLE; flag <V> means is REGNODE_VARIES; <.> is
+# a placeholder
+# longjump is 1 if the (first) argument holds the next offset.
#
#
# run perl regen.pl after editing this file
#* [Special] alternatives:
REG_ANY REG_ANY, no 0 S ; Match any one character (except newline).
SANY REG_ANY, no 0 S ; Match any one character.
-ANYOF ANYOF, sv 1 S ; Match character in (or not in) this class, single char match only
-ANYOFD ANYOF, sv 1 S ; Like ANYOF, but /d is in effect
-ANYOFL ANYOF, sv 1 S ; Like ANYOF, but /l is in effect
-ANYOFPOSIXL ANYOF, sv 1 S ; Like ANYOFL, but matches [[:posix:]] classes
+ANYOF ANYOF, sv charclass S ; Match character in (or not in) this class, single char match only
+ANYOFD ANYOF, sv charclass S ; Like ANYOF, but /d is in effect
+ANYOFL ANYOF, sv charclass S ; Like ANYOF, but /l is in effect
+ANYOFPOSIXL ANYOF, sv charclass_posixl S ; Like ANYOFL, but matches [[:posix:]] classes
ANYOFM ANYOFM byte 1 S ; Like ANYOF, but matches an invariant byte as determined by the mask and arg
+NANYOFM ANYOFM byte 1 S ; complement of ANYOFM
#* POSIX Character Classes:
# Order of the below is important. See ordering comment above.
EXACTFLU8 EXACT, str ; Rare circumstances: like EXACTFU, but is under /l, UTF-8, folded, and everything in it is above 255.
EXACTFAA_NO_TRIE EXACT, str ; Match this string (which is not trie-able; not guaranteed to be folded) using /iaa rules (w/len).
+EXACT_ONLY8 EXACT, str ; Like EXACT, but no strings that aren't in UTF-8 can match
+EXACTFU_ONLY8 EXACT, str ; Like EXACTFU, but no strings that aren't in UTF-8 can match
+# One could add EXACTFAA8 and and something that has the same effect for /l,
+# but these would be extremely uncommon
+
#*Do nothing types
NOTHING NOTHING, no ; Match empty string.
BRANCHJ BRANCHJ, off 1 V 1 ; BRANCH with long offset.
#*Special Case Regops
-IFMATCH BRANCHJ, off 1 . 2 ; Succeeds if the following matches.
-UNLESSM BRANCHJ, off 1 . 2 ; Fails if the following matches.
+IFMATCH BRANCHJ, off 1 . 1 ; Succeeds if the following matches.
+UNLESSM BRANCHJ, off 1 . 1 ; Fails if the following matches.
SUSPEND BRANCHJ, off 1 V 1 ; "Independent" sub-RE.
IFTHEN BRANCHJ, off 1 V 1 ; Switch, should be preceded by switcher.
GROUPP GROUPP, num 1 ; Whether the group matched.