diff options
Diffstat (limited to 'contrib/perl5/regcomp.sym')
-rw-r--r-- | contrib/perl5/regcomp.sym | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/contrib/perl5/regcomp.sym b/contrib/perl5/regcomp.sym new file mode 100644 index 000000000000..9775b9374da1 --- /dev/null +++ b/contrib/perl5/regcomp.sym @@ -0,0 +1,112 @@ +# Format: +# NAME \t TYPE, arg-description [num-args] [longjump-len] \t DESCRIPTION + +# Empty rows and #-comment rows are ignored. + +# 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 +ANY ANY, no Match any one character (except newline). +SANY ANY, no Match any one character. +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 +NDIGIT NDIGIT, no Match any non-numeric character + +# 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 Match this alternative, or the next... + +# BACK Normal "next" pointers all implicitly point forward; BACK +# exists to make loop structures possible. +# not used +BACK BACK, no Match "", "next" ptr points backward. + +# Literals +EXACT EXACT, sv Match this string (preceded by length). +EXACTF EXACT, sv Match this string, folded (prec. by length). +EXACTFL EXACT, sv Match this string, folded in locale (w/len). + +# Do nothing +NOTHING NOTHING,no Match empty string. +# A variant of above which delimits a group, thus stops optimizations +TAIL NOTHING,no Match empty string. Can jump here from outside. + +# STAR,PLUS '?', and complex '*' and '+', are implemented as circular +# BRANCH structures using BACK. Simple cases (one character +# per match) are implemented with STAR and PLUS for speed +# and to minimize recursive plunges. +# +STAR STAR, node Match this (simple) thing 0 or more times. +PLUS PLUS, node Match this (simple) thing 1 or more times. + +CURLY CURLY, sv 2 Match this simple thing {n,m} times. +CURLYN CURLY, no 2 Match next-after-this simple thing +# {n,m} times, set parenths. +CURLYM CURLY, no 2 Match this medium-complex thing {n,m} times. +CURLYX CURLY, sv 2 Match this complex thing {n,m} times. + +# This terminator creates a loop structure for CURLYX +WHILEM WHILEM, no Do curly processing and see if rest matches. + +# OPEN,CLOSE,GROUPP ...are numbered at compile time. +OPEN OPEN, num 1 Mark this point in input as start of #n. +CLOSE CLOSE, num 1 Analogous to OPEN. + +REF REF, num 1 Match some already matched string +REFF REF, num 1 Match already matched string, folded +REFFL REF, num 1 Match already matched string, folded in loc. + +# grouping assertions +IFMATCH BRANCHJ,off 1 2 Succeeds if the following matches. +UNLESSM BRANCHJ,off 1 2 Fails if the following matches. +SUSPEND BRANCHJ,off 1 1 "Independent" sub-RE. +IFTHEN BRANCHJ,off 1 1 Switch, should be preceeded by switcher . +GROUPP GROUPP, num 1 Whether the group matched. + +# Support for long RE +LONGJMP LONGJMP,off 1 1 Jump far away. +BRANCHJ BRANCHJ,off 1 1 BRANCH with long offset. + +# The heavy worker +EVAL EVAL, evl 1 Execute some Perl code. + +# Modifiers +MINMOD MINMOD, no Next operator is not greedy. +LOGICAL LOGICAL,no Next opcode should set the flag only. + +# This is not used yet +RENUM BRANCHJ,off 1 1 Group with independently numbered parens. + +# This is not really a node, but an optimized away piece of a "long" node. +# To simplify debugging output, we mark it as if it were a node +OPTIMIZED NOTHING,off Placeholder for dump. |