]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c
MdeModulePkg RegularExpressionDxe: Update Oniguruma from v6.9.0 to v6.9.3
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / Oniguruma / regsyntax.c
CommitLineData
14b0e578
CS
1/**********************************************************************\r
2 regsyntax.c - Oniguruma (regular expression library)\r
3**********************************************************************/\r
4/*-\r
b26691c4 5 * Copyright (c) 2002-2019 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
14b0e578
CS
6 * All rights reserved.\r
7 *\r
8 * Redistribution and use in source and binary forms, with or without\r
9 * modification, are permitted provided that the following conditions\r
10 * are met:\r
11 * 1. Redistributions of source code must retain the above copyright\r
12 * notice, this list of conditions and the following disclaimer.\r
13 * 2. Redistributions in binary form must reproduce the above copyright\r
14 * notice, this list of conditions and the following disclaimer in the\r
15 * documentation and/or other materials provided with the distribution.\r
16 *\r
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
27 * SUCH DAMAGE.\r
28 */\r
29\r
30#include "regint.h"\r
31\r
32OnigSyntaxType OnigSyntaxASIS = {\r
33 0\r
34 , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE\r
35 , 0\r
36 , ONIG_OPTION_NONE\r
37 ,\r
38 {\r
39 (OnigCodePoint )'\\' /* esc */\r
40 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
41 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
42 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
43 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
44 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
45 }\r
46};\r
47\r
48OnigSyntaxType OnigSyntaxPosixBasic = {\r
49 ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |\r
50 ONIG_SYN_OP_ESC_BRACE_INTERVAL )\r
51 , 0\r
52 , 0\r
53 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )\r
54 ,\r
55 {\r
56 (OnigCodePoint )'\\' /* esc */\r
57 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
58 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
59 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
60 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
61 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
62 }\r
63};\r
64\r
65OnigSyntaxType OnigSyntaxPosixExtended = {\r
66 ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP |\r
67 ONIG_SYN_OP_BRACE_INTERVAL |\r
68 ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT )\r
69 , 0\r
b26691c4
LG
70 , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS |\r
71 ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS |\r
14b0e578
CS
72 ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP |\r
73 ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC )\r
74 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )\r
75 ,\r
76 {\r
77 (OnigCodePoint )'\\' /* esc */\r
78 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
79 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
80 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
81 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
82 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
83 }\r
84};\r
85\r
86OnigSyntaxType OnigSyntaxEmacs = {\r
87 ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC |\r
88 ONIG_SYN_OP_ESC_BRACE_INTERVAL |\r
89 ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT |\r
90 ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF |\r
91 ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_DECIMAL_BACKREF |\r
92 ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_CONTROL_CHARS )\r
93 , ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR\r
94 , ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC\r
95 , ONIG_OPTION_NONE\r
96 ,\r
97 {\r
98 (OnigCodePoint )'\\' /* esc */\r
99 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
100 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
101 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
102 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
103 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
104 }\r
105};\r
106\r
107OnigSyntaxType OnigSyntaxGrep = {\r
108 ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET |\r
109 ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |\r
110 ONIG_SYN_OP_ESC_VBAR_ALT |\r
111 ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_ESC_PLUS_ONE_INF |\r
112 ONIG_SYN_OP_ESC_QMARK_ZERO_ONE | ONIG_SYN_OP_LINE_ANCHOR |\r
113 ONIG_SYN_OP_ESC_W_WORD | ONIG_SYN_OP_ESC_B_WORD_BOUND |\r
114 ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_DECIMAL_BACKREF )\r
115 , 0\r
116 , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC )\r
117 , ONIG_OPTION_NONE\r
118 ,\r
119 {\r
120 (OnigCodePoint )'\\' /* esc */\r
121 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
122 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
123 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
124 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
125 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
126 }\r
127};\r
128\r
129OnigSyntaxType OnigSyntaxGnuRegex = {\r
130 SYN_GNU_REGEX_OP\r
131 , 0\r
132 , SYN_GNU_REGEX_BV\r
133 , ONIG_OPTION_NONE\r
134 ,\r
135 {\r
136 (OnigCodePoint )'\\' /* esc */\r
137 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
138 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
139 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
140 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
141 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
142 }\r
143};\r
144\r
145OnigSyntaxType OnigSyntaxJava = {\r
146 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
147 ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL |\r
148 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 )\r
149 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
150 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT |\r
151 ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |\r
152 ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP |\r
153 ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 |\r
154 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY )\r
155 , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND )\r
156 , ONIG_OPTION_SINGLELINE\r
157 ,\r
158 {\r
159 (OnigCodePoint )'\\' /* esc */\r
160 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
161 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
162 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
163 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
164 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
165 }\r
166};\r
167\r
168OnigSyntaxType OnigSyntaxPerl = {\r
169 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
170 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |\r
b602265d
DG
171 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL |\r
172 ONIG_SYN_OP_ESC_CONTROL_CHARS |\r
14b0e578
CS
173 ONIG_SYN_OP_ESC_C_CONTROL )\r
174 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
175 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |\r
176 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |\r
b26691c4 177 ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL |\r
b602265d
DG
178 ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |\r
179 ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |\r
180 ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |\r
181 ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |\r
b26691c4 182 ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT |\r
14b0e578 183 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |\r
b602265d
DG
184 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |\r
185 ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |\r
186 ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |\r
187 ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT )\r
14b0e578
CS
188 , SYN_GNU_REGEX_BV\r
189 , ONIG_OPTION_SINGLELINE\r
190 ,\r
191 {\r
192 (OnigCodePoint )'\\' /* esc */\r
193 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
194 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
195 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
196 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
197 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
198 }\r
199};\r
200\r
201/* Perl + named group */\r
202OnigSyntaxType OnigSyntaxPerl_NG = {\r
203 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
204 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |\r
b602265d
DG
205 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL |\r
206 ONIG_SYN_OP_ESC_CONTROL_CHARS |\r
14b0e578
CS
207 ONIG_SYN_OP_ESC_C_CONTROL )\r
208 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
209 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |\r
210 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |\r
b26691c4 211 ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL |\r
b602265d
DG
212 ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |\r
213 ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |\r
214 ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |\r
215 ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |\r
b26691c4 216 ONIG_SYN_OP2_ESC_X_Y_TEXT_SEGMENT |\r
14b0e578
CS
217 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |\r
218 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |\r
219 ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP |\r
220 ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |\r
b602265d
DG
221 ONIG_SYN_OP2_ESC_G_SUBEXP_CALL |\r
222 ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |\r
223 ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |\r
224 ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |\r
225 ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL )\r
14b0e578
CS
226 , ( SYN_GNU_REGEX_BV |\r
227 ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |\r
228 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME )\r
229 , ONIG_OPTION_SINGLELINE\r
230 ,\r
231 {\r
232 (OnigCodePoint )'\\' /* esc */\r
233 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
234 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
235 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
236 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
237 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
238 }\r
239};\r
240\r
241\r
242\r
243extern int\r
244onig_set_default_syntax(OnigSyntaxType* syntax)\r
245{\r
246 if (IS_NULL(syntax))\r
b602265d 247 syntax = ONIG_SYNTAX_ONIGURUMA;\r
14b0e578
CS
248\r
249 OnigDefaultSyntax = syntax;\r
250 return 0;\r
251}\r
252\r
253extern void\r
254onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from)\r
255{\r
256 *to = *from;\r
257}\r
258\r
259extern void\r
260onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)\r
261{\r
262 syntax->op = op;\r
263}\r
264\r
265extern void\r
266onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)\r
267{\r
268 syntax->op2 = op2;\r
269}\r
270\r
271extern void\r
272onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)\r
273{\r
274 syntax->behavior = behavior;\r
275}\r
276\r
277extern void\r
278onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options)\r
279{\r
280 syntax->options = options;\r
281}\r
282\r
283extern unsigned int\r
284onig_get_syntax_op(OnigSyntaxType* syntax)\r
285{\r
286 return syntax->op;\r
287}\r
288\r
289extern unsigned int\r
290onig_get_syntax_op2(OnigSyntaxType* syntax)\r
291{\r
292 return syntax->op2;\r
293}\r
294\r
295extern unsigned int\r
296onig_get_syntax_behavior(OnigSyntaxType* syntax)\r
297{\r
298 return syntax->behavior;\r
299}\r
300\r
301extern OnigOptionType\r
302onig_get_syntax_options(OnigSyntaxType* syntax)\r
303{\r
304 return syntax->options;\r
305}\r
306\r
307#ifdef USE_VARIABLE_META_CHARS\r
308extern int onig_set_meta_char(OnigSyntaxType* enc,\r
309 unsigned int what, OnigCodePoint code)\r
310{\r
311 switch (what) {\r
312 case ONIG_META_CHAR_ESCAPE:\r
313 enc->meta_char_table.esc = code;\r
314 break;\r
315 case ONIG_META_CHAR_ANYCHAR:\r
316 enc->meta_char_table.anychar = code;\r
317 break;\r
318 case ONIG_META_CHAR_ANYTIME:\r
319 enc->meta_char_table.anytime = code;\r
320 break;\r
321 case ONIG_META_CHAR_ZERO_OR_ONE_TIME:\r
322 enc->meta_char_table.zero_or_one_time = code;\r
323 break;\r
324 case ONIG_META_CHAR_ONE_OR_MORE_TIME:\r
325 enc->meta_char_table.one_or_more_time = code;\r
326 break;\r
327 case ONIG_META_CHAR_ANYCHAR_ANYTIME:\r
328 enc->meta_char_table.anychar_anytime = code;\r
329 break;\r
330 default:\r
331 return ONIGERR_INVALID_ARGUMENT;\r
332 break;\r
333 }\r
334 return 0;\r
335}\r
336#endif /* USE_VARIABLE_META_CHARS */\r