-# Exit points
-END END, no End of program.
-SUCCEED END, no Return from a subroutine, basically.
-
-# Anchors:
-BOL BOL, no Match "" at beginning of line.
-MBOL BOL, no Same, assuming multiline.
-SBOL BOL, no Same, assuming singleline.
-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
-BOUNDL BOUND, no Match "" at any word boundary
-NBOUND NBOUND, no Match "" at any word non-boundary
-NBOUNDL NBOUND, no Match "" at any word non-boundary
-GPOS GPOS, no Matches where last m//g left off.
-
-# [Special] alternatives
-REG_ANY REG_ANY, no Match any one character (except newline).
-SANY REG_ANY, no Match any one character.
-CANY REG_ANY, no Match any one byte.
-ANYOF ANYOF, sv Match character in (or not in) this class.
-ALNUM ALNUM, no Match any alphanumeric character
-ALNUML ALNUM, no Match any alphanumeric char in locale
-NALNUM NALNUM, no Match any non-alphanumeric character
-NALNUML NALNUM, no Match any non-alphanumeric char in locale
-SPACE SPACE, no Match any whitespace character
-SPACEL SPACE, no Match any whitespace char in locale
-NSPACE NSPACE, no Match any non-whitespace character
-NSPACEL NSPACE, no Match any non-whitespace char in locale
-DIGIT DIGIT, no Match any numeric character
-DIGITL DIGIT, no Match any numeric character in locale
-NDIGIT NDIGIT, no Match any non-numeric character
-NDIGITL NDIGIT, no Match any non-numeric character in locale
-CLUMP CLUMP, no Match any combining character sequence
-
-# BRANCH The set of branches constituting a single choice are hooked
-# together with their "next" pointers, since precedence prevents
-# anything being concatenated to any individual branch. The
-# "next" pointer of the last BRANCH in a choice points to the
-# thing following the whole choice. This is also where the
-# final "next" pointer of each individual branch points; each
-# branch starts with the operand node of a BRANCH node.
+BOL BOL, no ; Match "" at beginning of line.
+MBOL BOL, no ; Same, assuming multiline.
+SBOL BOL, no ; Same, assuming singleline.
+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 using native charset semantics for non-utf8
+BOUNDL BOUND, no ; Match "" at any locale word 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:
+
+REG_ANY REG_ANY, no 0 S ; Match any one character (except newline).
+SANY REG_ANY, no 0 S ; Match any one character.
+CANY REG_ANY, no 0 S ; Match any one byte.
+ANYOF ANYOF, sv 0 S ; Match character in (or not in) this class, single char match only
+ANYOFV ANYOF, sv 0 V ; Match character in (or not in) this class, can match-multiple chars
+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
+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
+NDIGITA NDIGIT, no 0 S ; Match [^0-9]
+CLUMP CLUMP, no 0 V ; Match any extended grapheme cluster sequence
+
+#* Alternation
+
+# BRANCH The set of branches constituting a single choice are hooked
+# together with their "next" pointers, since precedence prevents
+# anything being concatenated to any individual branch. The
+# "next" pointer of the last BRANCH in a choice points to the
+# thing following the whole choice. This is also where the
+# final "next" pointer of each individual branch points; each
+# branch starts with the operand node of a BRANCH node.