+#* Word Boundary Opcodes:
+# The regops that have varieties that vary depending on the character set regex
+# modifiers have to ordered thusly: /d, /l, /u, /a, /aa. This is because code
+# in regcomp.c uses the enum value of the modifier as an offset from the /d
+# version. The complements must come after the non-complements.
+# BOUND, POSIX and their complements are affected, as well as EXACTF.
+BOUND BOUND, no ; Like BOUNDA for non-utf8, otherwise match "" between any Unicode \w\W or \W\w
+BOUNDL BOUND, no ; Like BOUND/BOUNDU, but \w and \W are defined by current locale
+BOUNDU BOUND, no ; Match "" at any boundary of a given type using Unicode rules
+BOUNDA BOUND, no ; Match "" at any boundary between \w\W or \W\w, where \w is [_a-zA-Z0-9]
+# All NBOUND nodes are required by code in regexec.c to be greater than all BOUND ones
+NBOUND NBOUND, no ; Like NBOUNDA for non-utf8, otherwise match "" between any Unicode \w\w or \W\W
+NBOUNDL NBOUND, no ; Like NBOUND/NBOUNDU, but \w and \W are defined by current locale
+NBOUNDU NBOUND, no ; Match "" at any non-boundary of a given type using using Unicode rules
+NBOUNDA NBOUND, no ; Match "" betweeen any \w\w or \W\W, where \w is [_a-zA-Z0-9]
+
+#* [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
+ANYOFL ANYOF, sv 1 S ; Like ANYOF, but /l is in effect
+
+#* POSIX Character Classes:
+# Order of the below is important. See ordering comment above.
+POSIXD POSIXD, none 0 S ; Some [[:class:]] under /d; the FLAGS field gives which one
+POSIXL POSIXD, none 0 S ; Some [[:class:]] under /l; the FLAGS field gives which one
+POSIXU POSIXD, none 0 S ; Some [[:class:]] under /u; the FLAGS field gives which one
+POSIXA POSIXD, none 0 S ; Some [[:class:]] under /a; the FLAGS field gives which one
+NPOSIXD NPOSIXD, none 0 S ; complement of POSIXD, [[:^class:]]
+NPOSIXL NPOSIXD, none 0 S ; complement of POSIXL, [[:^class:]]
+NPOSIXU NPOSIXD, none 0 S ; complement of POSIXU, [[:^class:]]
+NPOSIXA NPOSIXD, none 0 S ; complement of POSIXA, [[:^class:]]
+# End of order is important
+
+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.
+#*
+BRANCH BRANCH, node 0 V ; Match this alternative, or the next...
+
+#*Literals
+# NOTE: the relative ordering of these types is important do not change it