Merge mozilla-central and tracemonkey. (a=blockers)
[mozilla-central.git] / js / src / jsreops.tbl
blobd7454c15008860102fc39111572db56b8930afa4
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:
3  *
4  * ***** BEGIN LICENSE BLOCK *****
5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6  *
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/
11  *
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
15  * License.
16  *
17  * The Original Code is Mozilla Communicator client code, released
18  * March 31, 1998.
19  *
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.
24  *
25  * Contributor(s):
26  *
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.
38  *
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 */
92     
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")