Ruby  2.1.3p242(2014-09-19revision47630)
regsyntax.c
Go to the documentation of this file.
1 /**********************************************************************
2  regsyntax.c - Onigmo (Oniguruma-mod) (regular expression library)
3 **********************************************************************/
4 /*-
5  * Copyright (c) 2002-2006 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
6  * Copyright (c) 2011-2012 K.Takata <kentkt AT csc DOT jp>
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in the
16  * documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  */
30 
31 #include "regint.h"
32 
34  0
36  , 0
38  ,
39  {
40  (OnigCodePoint )'\\' /* esc */
41  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
42  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
43  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
44  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
45  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
46  }
47 };
48 
52  , 0
53  , 0
55  ,
56  {
57  (OnigCodePoint )'\\' /* esc */
58  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
59  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
60  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
61  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
62  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
63  }
64 };
65 
70  , 0
76  ,
77  {
78  (OnigCodePoint )'\\' /* esc */
79  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
80  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
81  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
82  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
83  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
84  }
85 };
86 
97  ,
98  {
99  (OnigCodePoint )'\\' /* esc */
100  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
101  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
102  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
103  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
104  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
105  }
106 };
107 
116  , 0
119  ,
120  {
121  (OnigCodePoint )'\\' /* esc */
122  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
123  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
124  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
125  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
126  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
127  }
128 };
129 
132  , 0
135  ,
136  {
137  (OnigCodePoint )'\\' /* esc */
138  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
139  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
140  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
141  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
142  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
143  }
144 };
145 
159  ,
160  {
161  (OnigCodePoint )'\\' /* esc */
162  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
163  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
164  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
165  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
166  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
167  }
168 };
169 
170 /* Perl 5.8 */
185  ,
186  {
187  (OnigCodePoint )'\\' /* esc */
188  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
189  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
190  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
191  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
192  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
193  }
194 };
195 
196 /* Perl 5.8 + named group */
212  , ( SYN_GNU_REGEX_BV |
216  ,
217  {
218  (OnigCodePoint )'\\' /* esc */
219  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
220  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
221  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
222  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
223  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
224  }
225 };
226 
227 /* Perl 5.10+ */
249  , ( SYN_GNU_REGEX_BV |
253  ,
254  {
255  (OnigCodePoint )'\\' /* esc */
256  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
257  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
258  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
259  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
260  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
261  }
262 };
263 
278  , ( SYN_GNU_REGEX_BV |
281  ,
282  {
283  (OnigCodePoint )'\\' /* esc */
284  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
285  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
286  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
287  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
288  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
289  }
290 };
291 
292 
293 
294 extern int
296 {
297  if (IS_NULL(syntax))
298  syntax = ONIG_SYNTAX_RUBY;
299 
300  OnigDefaultSyntax = syntax;
301  return 0;
302 }
303 
304 extern void
306 {
307  *to = *from;
308 }
309 
310 extern void
311 onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)
312 {
313  syntax->op = op;
314 }
315 
316 extern void
317 onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)
318 {
319  syntax->op2 = op2;
320 }
321 
322 extern void
323 onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)
324 {
325  syntax->behavior = behavior;
326 }
327 
328 extern void
330 {
331  syntax->options = options;
332 }
333 
334 extern unsigned int
336 {
337  return syntax->op;
338 }
339 
340 extern unsigned int
342 {
343  return syntax->op2;
344 }
345 
346 extern unsigned int
348 {
349  return syntax->behavior;
350 }
351 
352 extern OnigOptionType
354 {
355  return syntax->options;
356 }
357 
358 #ifdef USE_VARIABLE_META_CHARS
360  unsigned int what, OnigCodePoint code)
361 {
362  switch (what) {
364  enc->meta_char_table.esc = code;
365  break;
367  enc->meta_char_table.anychar = code;
368  break;
370  enc->meta_char_table.anytime = code;
371  break;
373  enc->meta_char_table.zero_or_one_time = code;
374  break;
376  enc->meta_char_table.one_or_more_time = code;
377  break;
379  enc->meta_char_table.anychar_anytime = code;
380  break;
381  default:
383  break;
384  }
385  return 0;
386 }
387 #endif /* USE_VARIABLE_META_CHARS */
388