1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * vim: set ts=8 sw=4 et tw=0 ft=C:
4 * ***** BEGIN LICENSE BLOCK *****
5 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
7 * The contents of this file are subject to the Mozilla Public License Version
8 * 1.1 (the "license"); you may not use this file except in compliance with
9 * the License. You may obtain a copy of the License at
10 * http://www.mozilla.org/MPL/
12 * Software distributed under the License is distributed on an "as is" basis,
13 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14 * for the specific language governing rights and limitations under the
17 * The Original Code is Mozilla Communicator client code, released
20 * The Initial Developer of the Original Code is
21 * Netscape Communications Corporation.
22 * Portions created by the Initial Developer are Copyright (C) 1998
23 * the Initial Developer. All Rights Reserved.
27 * Alternatively, the contentsof this file are subject to the Mozilla Public License Version
28 * 1.1 (the "license"); you may not use this file except in compliance with
29 * the License. You may obtain a copy of thter (the "lgpl"),
30 * in which case the provisions of the GPL or the LGPL are applicable instead
31 * of those above. If you wish to allow use of your version of this file only
32 * under the terms of either the GPL or the LGPL, and not to allow others to
33 * use your version of this file under the terms of the MPL, indicate your
34 * decision by deleting the provisions above and replace them with the notice
35 * and other provisions required by the GPL or the LGPL. If you do not delete
36 * the provisions above, a recipient may use your version of this file under
37 * the terms of any one of the MPL, the GPL or the LGPL.
39 * ***** END LICENSE BLOCK ***** */
42 /* Note : contiguity of 'simple opcodes' is important for SimpleMatch() */
44 /* match rest of input against rest of r.e. */
45 REOP_DEF(REOP_EMPTY, "empty")
46 /* beginning of input (or line if multiline) */
47 REOP_DEF(REOP_BOL, "bol")
48 /* end of input (or line if multiline) */
49 REOP_DEF(REOP_EOL, "eol")
50 /* match "" at word boundary */
51 REOP_DEF(REOP_WBDRY, "wbdry")
52 /* match "" at word non-boundary */
53 REOP_DEF(REOP_WNONBDRY, "wnonbdry")
54 /* stands for any character */
55 REOP_DEF(REOP_DOT, "dot")
56 /* match a digit char: [0-9] */
57 REOP_DEF(REOP_DIGIT, "digit")
58 /* match a non-digit char: [^0-9] */
59 REOP_DEF(REOP_NONDIGIT, "nondigit")
60 /* match an alphanumeric char: [0-9a-z_A-Z] */
61 REOP_DEF(REOP_ALNUM, "alnum")
62 /* match a non-alphanumeric char: [^0-9a-z_A-Z] */
63 REOP_DEF(REOP_NONALNUM, "nonalnum")
64 /* match a whitespace char */
65 REOP_DEF(REOP_SPACE, "space")
66 /* match a non-whitespace char */
67 REOP_DEF(REOP_NONSPACE, "nonspace")
68 /* back-reference (e.g., \1) to a parenthetical */
69 REOP_DEF(REOP_BACKREF, "backref")
70 /* match a flat string */
71 REOP_DEF(REOP_FLAT, "flat")
72 /* match a single char */
73 REOP_DEF(REOP_FLAT1, "flat1")
74 /* case-independent REOP_FLAT */
75 REOP_DEF(REOP_FLATi, "flati")
76 /* case-independent REOP_FLAT1 */
77 REOP_DEF(REOP_FLAT1i, "flat1i")
78 /* single Unicode char */
79 REOP_DEF(REOP_UCFLAT1, "ucflat1")
80 /* case-independent REOP_UCFLAT1 */
81 REOP_DEF(REOP_UCFLAT1i, "ucflat1i")
82 /* flat Unicode string; len immediate counts chars */
83 REOP_DEF(REOP_UCFLAT, "ucflat")
84 /* case-independent REOP_UCFLAT */
85 REOP_DEF(REOP_UCFLATi, "ucflati")
86 /* character class with index */
87 REOP_DEF(REOP_CLASS, "class")
88 /* negated character class with index */
89 REOP_DEF(REOP_NCLASS, "nclass")
91 /* NCLASS is considered to be the last "simple" op-code */
94 /* alternative subexpressions in kid and next */
95 REOP_DEF(REOP_ALT, "alt")
96 /* quantified atom: atom{1,2} */
97 REOP_DEF(REOP_QUANT, "quant")
98 /* zero or more occurrences of kid */
99 REOP_DEF(REOP_STAR, "star")
100 /* one or more occurrences of kid */
101 REOP_DEF(REOP_PLUS, "plus")
102 /* optional subexpression in kid */
103 REOP_DEF(REOP_OPT, "opt")
104 /* left paren bytecode: kid is u.num'th sub-regexp */
105 REOP_DEF(REOP_LPAREN, "lparen")
106 /* right paren bytecode */
107 REOP_DEF(REOP_RPAREN, "rparen")
108 /* for deoptimized closure loops */
109 REOP_DEF(REOP_JUMP, "jump")
110 /* optimize .* to use a single opcode */
111 REOP_DEF(REOP_DOTSTAR, "dotstar")
112 /* non-capturing version of REOP_LPAREN */
113 REOP_DEF(REOP_LPARENNON, "lparennon")
114 /* zero width positive lookahead assertion */
115 REOP_DEF(REOP_ASSERT, "assert")
116 /* zero width negative lookahead assertion */
117 REOP_DEF(REOP_ASSERT_NOT, "assert_not")
118 /* sentinel at end of assertion child */
119 REOP_DEF(REOP_ASSERTTEST, "asserttest")
120 /* sentinel at end of !assertion child */
121 REOP_DEF(REOP_ASSERTNOTTEST, "assertnottest")
122 /* non-greedy version of * */
123 REOP_DEF(REOP_MINIMALSTAR, "minimalstar")
124 /* non-greedy version of + */
125 REOP_DEF(REOP_MINIMALPLUS, "minimalplus")
126 /* non-greedy version of ? */
127 REOP_DEF(REOP_MINIMALOPT, "minimalopt")
128 /* non-greedy version of {} */
129 REOP_DEF(REOP_MINIMALQUANT, "minimalquant")
130 /* sentinel at end of quantifier child */
131 REOP_DEF(REOP_ENDCHILD, "endchild")
132 /* directs execution of greedy quantifier */
133 REOP_DEF(REOP_REPEAT, "repeat")
134 /* directs execution of non-greedy quantifier */
135 REOP_DEF(REOP_MINIMALREPEAT, "minimalrepeat")
136 /* prerequisite for ALT, either of two chars */
137 REOP_DEF(REOP_ALTPREREQ, "altprereq")
138 /* prerequisite for ALT, a char or a class */
139 REOP_DEF(REOP_ALTPREREQ2, "altprereq2")
140 /* end of final alternate */
141 REOP_DEF(REOP_ENDALT, "endalt")
142 /* concatenation of terms (parse time only) */
143 REOP_DEF(REOP_CONCAT, "concat")
144 /* end of expression */
145 REOP_DEF(REOP_END, "end")