diff options
author | Ilya Zakharevich <ilya@math.berkeley.edu> | 1998-06-21 12:38:21 -0400 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-06-22 01:53:59 +0000 |
commit | d09b2d29781629d5f0436d3a59d2552621af768b (patch) | |
tree | 991d92776cb5a97bba1d0894f26fc0738df69d19 /regcomp.sym | |
parent | a29cdaf07aa5601e42ae4955cc0f168e91a7c385 (diff) | |
download | perl-d09b2d29781629d5f0436d3a59d2552621af768b.tar.gz |
add patch that generates regnodes.h via regcomp.pl
Message-Id: <199806212038.QAA29797@monk.mps.ohio-state.edu>
Subject: [PATCH 5.004_67] regcomp.h regnodes cleanup
p4raw-id: //depot/perl@1188
Diffstat (limited to 'regcomp.sym')
-rw-r--r-- | regcomp.sym | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/regcomp.sym b/regcomp.sym new file mode 100644 index 0000000000..aa18d119cc --- /dev/null +++ b/regcomp.sym @@ -0,0 +1,111 @@ +# 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. +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. |