Ruby  1.9.3p547(2014-05-14revision45962)
regsyntax.c
Go to the documentation of this file.
1 /**********************************************************************
2  regsyntax.c - Oniguruma (regular expression library)
3 **********************************************************************/
4 /*-
5  * Copyright (c) 2002-2006 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  */
29 
30 #include "regint.h"
31 
33  0
35  , 0
37  ,
38  {
39  (OnigCodePoint )'\\' /* esc */
40  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
41  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
42  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
43  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
44  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
45  }
46 };
47 
51  , 0
52  , 0
54  ,
55  {
56  (OnigCodePoint )'\\' /* esc */
57  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
58  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
59  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
60  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
61  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
62  }
63 };
64 
69  , 0
75  ,
76  {
77  (OnigCodePoint )'\\' /* esc */
78  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
79  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
80  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
81  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
82  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
83  }
84 };
85 
96  ,
97  {
98  (OnigCodePoint )'\\' /* esc */
99  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
100  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
101  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
102  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
103  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
104  }
105 };
106 
115  , 0
118  ,
119  {
120  (OnigCodePoint )'\\' /* esc */
121  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
122  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
123  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
124  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
125  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
126  }
127 };
128 
131  , 0
134  ,
135  {
136  (OnigCodePoint )'\\' /* esc */
137  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
138  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
139  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
140  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
141  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
142  }
143 };
144 
157  ,
158  {
159  (OnigCodePoint )'\\' /* esc */
160  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
161  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
162  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
163  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
164  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
165  }
166 };
167 
180  ,
181  {
182  (OnigCodePoint )'\\' /* esc */
183  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
184  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
185  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
186  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
187  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
188  }
189 };
190 
191 /* Perl + named group */
205  , ( SYN_GNU_REGEX_BV |
209  ,
210  {
211  (OnigCodePoint )'\\' /* esc */
212  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
213  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
214  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
215  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
216  , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
217  }
218 };
219 
220 
221 
222 extern int
224 {
225  if (IS_NULL(syntax))
226  syntax = ONIG_SYNTAX_RUBY;
227 
228  OnigDefaultSyntax = syntax;
229  return 0;
230 }
231 
232 extern void
234 {
235  *to = *from;
236 }
237 
238 extern void
239 onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)
240 {
241  syntax->op = op;
242 }
243 
244 extern void
245 onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)
246 {
247  syntax->op2 = op2;
248 }
249 
250 extern void
251 onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)
252 {
253  syntax->behavior = behavior;
254 }
255 
256 extern void
258 {
259  syntax->options = options;
260 }
261 
262 extern unsigned int
264 {
265  return syntax->op;
266 }
267 
268 extern unsigned int
270 {
271  return syntax->op2;
272 }
273 
274 extern unsigned int
276 {
277  return syntax->behavior;
278 }
279 
280 extern OnigOptionType
282 {
283  return syntax->options;
284 }
285 
286 #ifdef USE_VARIABLE_META_CHARS
288  unsigned int what, OnigCodePoint code)
289 {
290  switch (what) {
292  enc->meta_char_table.esc = code;
293  break;
295  enc->meta_char_table.anychar = code;
296  break;
298  enc->meta_char_table.anytime = code;
299  break;
301  enc->meta_char_table.zero_or_one_time = code;
302  break;
304  enc->meta_char_table.one_or_more_time = code;
305  break;
307  enc->meta_char_table.anychar_anytime = code;
308  break;
309  default:
311  break;
312  }
313  return 0;
314 }
315 #endif /* USE_VARIABLE_META_CHARS */
#define ONIG_SYN_OP2_CCLASS_SET_OP
Definition: oniguruma.h:444
#define ONIG_META_CHAR_ANYTIME
Definition: oniguruma.h:486
unsigned int OnigCodePoint
Definition: oniguruma.h:111
#define IS_NULL(p)
Definition: regint.h:240
OnigCodePoint anychar
Definition: oniguruma.h:147
#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE
Definition: oniguruma.h:438
#define ONIG_SYN_OP2_ESC_U_HEX4
Definition: oniguruma.h:452
#define ONIG_SYN_OP_ESC_OCTAL3
Definition: oniguruma.h:434
unsigned int onig_get_syntax_op(OnigSyntaxType *syntax)
Definition: regsyntax.c:263
#define ONIG_META_CHAR_ONE_OR_MORE_TIME
Definition: oniguruma.h:488
#define ONIG_OPTION_SINGLELINE
Definition: oniguruma.h:353
#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS
Definition: oniguruma.h:463
#define ONIG_OPTION_NONE
Definition: oniguruma.h:349
#define ONIG_SYN_OP_BRACE_INTERVAL
Definition: oniguruma.h:414
#define ONIG_META_CHAR_ZERO_OR_ONE_TIME
Definition: oniguruma.h:487
#define ONIG_SYN_OP_ASTERISK_ZERO_INF
Definition: oniguruma.h:408
#define ONIG_META_CHAR_ANYCHAR_ANYTIME
Definition: oniguruma.h:489
#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF
Definition: oniguruma.h:446
#define ONIG_SYN_OP_VBAR_ALT
Definition: oniguruma.h:416
#define ONIG_SYN_OP_ESC_W_WORD
Definition: oniguruma.h:424
#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY
Definition: oniguruma.h:454
#define ONIG_SYN_OP_QMARK_ZERO_ONE
Definition: oniguruma.h:412
#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT
Definition: oniguruma.h:439
int onig_set_default_syntax(const OnigSyntaxType *syntax)
Definition: regsyntax.c:223
OnigCodePoint anytime
Definition: oniguruma.h:148
#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE
Definition: oniguruma.h:458
#define ONIG_SYN_OP_QMARK_NON_GREEDY
Definition: oniguruma.h:431
#define SYN_POSIX_COMMON_OP
Definition: regint.h:668
void onig_set_syntax_op2(OnigSyntaxType *syntax, unsigned int op2)
Definition: regsyntax.c:245
OnigCodePoint one_or_more_time
Definition: oniguruma.h:150
#define ONIG_SYN_OP_DECIMAL_BACKREF
Definition: oniguruma.h:422
unsigned int OnigOptionType
Definition: oniguruma.h:344
#define ONIG_SYN_OP2_ESC_V_VTAB
Definition: oniguruma.h:451
const OnigSyntaxType OnigSyntaxJava
Definition: regsyntax.c:145
#define SYN_GNU_REGEX_OP
Definition: regint.h:675
unsigned int behavior
Definition: oniguruma.h:373
#define ONIG_SYN_OP_POSIX_BRACKET
Definition: oniguruma.h:430
#define ONIG_SYN_OP_BRACKET_CC
Definition: oniguruma.h:423
#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP
Definition: oniguruma.h:445
#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT
Definition: oniguruma.h:442
const OnigSyntaxType OnigSyntaxEmacs
Definition: regsyntax.c:86
#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME
Definition: oniguruma.h:470
#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE
Definition: oniguruma.h:413
#define ONIG_SYN_OP_ESC_X_BRACE_HEX8
Definition: oniguruma.h:436
unsigned int onig_get_syntax_behavior(OnigSyntaxType *syntax)
Definition: regsyntax.c:275
#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP
Definition: oniguruma.h:464
unsigned int op2
Definition: oniguruma.h:372
#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP
Definition: oniguruma.h:419
OnigCodePoint esc
Definition: oniguruma.h:146
OnigCodePoint zero_or_one_time
Definition: oniguruma.h:149
#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS
Definition: oniguruma.h:462
#define ONIG_META_CHAR_ESCAPE
Definition: oniguruma.h:484
#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT
Definition: oniguruma.h:455
#define ONIG_SYN_CONTEXT_INDEP_ANCHORS
Definition: oniguruma.h:461
#define ONIG_SYNTAX_RUBY
Definition: oniguruma.h:399
unsigned int onig_get_syntax_op2(OnigSyntaxType *syntax)
Definition: regsyntax.c:269
const OnigSyntaxType OnigSyntaxPosixExtended
Definition: regsyntax.c:65
ONIG_EXTERN const OnigSyntaxType * OnigDefaultSyntax
Definition: oniguruma.h:402
#define ONIG_SYN_OP_ESC_X_HEX2
Definition: oniguruma.h:435
#define SYN_GNU_REGEX_BV
Definition: regint.h:688
void onig_set_syntax_op(OnigSyntaxType *syntax, unsigned int op)
Definition: regsyntax.c:239
static int options(unsigned char *cp)
Definition: nkf.c:5883
const OnigSyntaxType OnigSyntaxPosixBasic
Definition: regsyntax.c:48
const OnigSyntaxType OnigSyntaxASIS
Definition: regsyntax.c:32
const OnigSyntaxType OnigSyntaxPerl_NG
Definition: regsyntax.c:192
#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR
Definition: oniguruma.h:453
#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC
Definition: oniguruma.h:477
#define ONIG_SYN_OP_ESC_BRACE_INTERVAL
Definition: oniguruma.h:415
#define ONIG_SYN_OP2_OPTION_PERL
Definition: oniguruma.h:440
void onig_set_syntax_behavior(OnigSyntaxType *syntax, unsigned int behavior)
Definition: regsyntax.c:251
#define ONIG_SYN_OP_ESC_B_WORD_BOUND
Definition: oniguruma.h:426
OnigOptionType onig_get_syntax_options(OnigSyntaxType *syntax)
Definition: regsyntax.c:281
const OnigSyntaxType OnigSyntaxPerl
Definition: regsyntax.c:168
#define ONIG_SYN_OP_PLUS_ONE_INF
Definition: oniguruma.h:410
void onig_set_syntax_options(OnigSyntaxType *syntax, OnigOptionType options)
Definition: regsyntax.c:257
#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP
Definition: oniguruma.h:469
const OnigSyntaxType OnigSyntaxGrep
Definition: regsyntax.c:107
#define ONIG_SYN_OP_ESC_VBAR_ALT
Definition: oniguruma.h:417
#define ONIG_SYN_OP_DOT_ANYCHAR
Definition: oniguruma.h:407
#define ONIG_OPTION_MULTILINE
Definition: oniguruma.h:352
#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC
Definition: oniguruma.h:474
OnigMetaCharTableType meta_char_table
Definition: oniguruma.h:375
#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL
Definition: oniguruma.h:447
#define ONIG_INEFFECTIVE_META_CHAR
Definition: oniguruma.h:491
#define ONIG_META_CHAR_ANYCHAR
Definition: oniguruma.h:485
#define ONIGERR_INVALID_ARGUMENT
Definition: oniguruma.h:511
#define ONIG_SYN_OP_ESC_CONTROL_CHARS
Definition: oniguruma.h:432
void onig_copy_syntax(OnigSyntaxType *to, const OnigSyntaxType *from)
Definition: regsyntax.c:233
#define ONIG_SYN_OP_LINE_ANCHOR
Definition: oniguruma.h:429
const OnigSyntaxType OnigSyntaxGnuRegex
Definition: regsyntax.c:129
int onig_set_meta_char(OnigSyntaxType *enc, unsigned int what, OnigCodePoint code)
Definition: regsyntax.c:287
#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL
Definition: oniguruma.h:443
#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END
Definition: oniguruma.h:425
#define ONIG_SYN_OP_ESC_C_CONTROL
Definition: oniguruma.h:433
#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC
Definition: oniguruma.h:476
unsigned int op
Definition: oniguruma.h:371
OnigOptionType options
Definition: oniguruma.h:374
#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND
Definition: oniguruma.h:468
#define ONIG_SYN_OP_LPAREN_SUBEXP
Definition: oniguruma.h:418
OnigCodePoint anychar_anytime
Definition: oniguruma.h:151
#define ONIG_SYN_OP_ESC_PLUS_ONE_INF
Definition: oniguruma.h:411