summaryrefslogtreecommitdiff
path: root/regcomp.sym
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>1998-06-21 12:38:21 -0400
committerGurusamy Sarathy <gsar@cpan.org>1998-06-22 01:53:59 +0000
commitd09b2d29781629d5f0436d3a59d2552621af768b (patch)
tree991d92776cb5a97bba1d0894f26fc0738df69d19 /regcomp.sym
parenta29cdaf07aa5601e42ae4955cc0f168e91a7c385 (diff)
downloadperl-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.sym111
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.