]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c
MdeModulePkg RegularExpressionDxe: Update Oniguruma to 6.9.0
[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
b602265d 5 * Copyright (c) 2002-2018 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
70 , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | \r
71 ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | \r
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
b602265d
DG
177 ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |\r
178 ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |\r
179 ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |\r
180 ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |\r
181 ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |\r
14b0e578 182 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |\r
b602265d
DG
183 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |\r
184 ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |\r
185 ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |\r
186 ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT )\r
14b0e578
CS
187 , SYN_GNU_REGEX_BV\r
188 , ONIG_OPTION_SINGLELINE\r
189 ,\r
190 {\r
191 (OnigCodePoint )'\\' /* esc */\r
192 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
193 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
194 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
195 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
196 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
197 }\r
198};\r
199\r
200/* Perl + named group */\r
201OnigSyntaxType OnigSyntaxPerl_NG = {\r
202 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
203 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |\r
b602265d
DG
204 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL |\r
205 ONIG_SYN_OP_ESC_CONTROL_CHARS |\r
14b0e578
CS
206 ONIG_SYN_OP_ESC_C_CONTROL )\r
207 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
208 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |\r
209 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |\r
b602265d
DG
210 ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |\r
211 ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |\r
212 ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |\r
213 ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |\r
214 ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |\r
14b0e578
CS
215 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |\r
216 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |\r
217 ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP |\r
218 ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |\r
b602265d
DG
219 ONIG_SYN_OP2_ESC_G_SUBEXP_CALL |\r
220 ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |\r
221 ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |\r
222 ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |\r
223 ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL )\r
14b0e578
CS
224 , ( SYN_GNU_REGEX_BV |\r
225 ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |\r
226 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME )\r
227 , ONIG_OPTION_SINGLELINE\r
228 ,\r
229 {\r
230 (OnigCodePoint )'\\' /* esc */\r
231 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */\r
232 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */\r
233 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
234 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
235 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
236 }\r
237};\r
238\r
239\r
240\r
241extern int\r
242onig_set_default_syntax(OnigSyntaxType* syntax)\r
243{\r
244 if (IS_NULL(syntax))\r
b602265d 245 syntax = ONIG_SYNTAX_ONIGURUMA;\r
14b0e578
CS
246\r
247 OnigDefaultSyntax = syntax;\r
248 return 0;\r
249}\r
250\r
251extern void\r
252onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from)\r
253{\r
254 *to = *from;\r
255}\r
256\r
257extern void\r
258onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)\r
259{\r
260 syntax->op = op;\r
261}\r
262\r
263extern void\r
264onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)\r
265{\r
266 syntax->op2 = op2;\r
267}\r
268\r
269extern void\r
270onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)\r
271{\r
272 syntax->behavior = behavior;\r
273}\r
274\r
275extern void\r
276onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options)\r
277{\r
278 syntax->options = options;\r
279}\r
280\r
281extern unsigned int\r
282onig_get_syntax_op(OnigSyntaxType* syntax)\r
283{\r
284 return syntax->op;\r
285}\r
286\r
287extern unsigned int\r
288onig_get_syntax_op2(OnigSyntaxType* syntax)\r
289{\r
290 return syntax->op2;\r
291}\r
292\r
293extern unsigned int\r
294onig_get_syntax_behavior(OnigSyntaxType* syntax)\r
295{\r
296 return syntax->behavior;\r
297}\r
298\r
299extern OnigOptionType\r
300onig_get_syntax_options(OnigSyntaxType* syntax)\r
301{\r
302 return syntax->options;\r
303}\r
304\r
305#ifdef USE_VARIABLE_META_CHARS\r
306extern int onig_set_meta_char(OnigSyntaxType* enc,\r
307 unsigned int what, OnigCodePoint code)\r
308{\r
309 switch (what) {\r
310 case ONIG_META_CHAR_ESCAPE:\r
311 enc->meta_char_table.esc = code;\r
312 break;\r
313 case ONIG_META_CHAR_ANYCHAR:\r
314 enc->meta_char_table.anychar = code;\r
315 break;\r
316 case ONIG_META_CHAR_ANYTIME:\r
317 enc->meta_char_table.anytime = code;\r
318 break;\r
319 case ONIG_META_CHAR_ZERO_OR_ONE_TIME:\r
320 enc->meta_char_table.zero_or_one_time = code;\r
321 break;\r
322 case ONIG_META_CHAR_ONE_OR_MORE_TIME:\r
323 enc->meta_char_table.one_or_more_time = code;\r
324 break;\r
325 case ONIG_META_CHAR_ANYCHAR_ANYTIME:\r
326 enc->meta_char_table.anychar_anytime = code;\r
327 break;\r
328 default:\r
329 return ONIGERR_INVALID_ARGUMENT;\r
330 break;\r
331 }\r
332 return 0;\r
333}\r
334#endif /* USE_VARIABLE_META_CHARS */\r