00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "regint.h"
00032
00033 const OnigSyntaxType OnigSyntaxASIS = {
00034 0
00035 , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE
00036 , 0
00037 , ONIG_OPTION_NONE
00038 ,
00039 {
00040 (OnigCodePoint )'\\'
00041 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00042 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00043 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00044 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00045 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00046 }
00047 };
00048
00049 const OnigSyntaxType OnigSyntaxPosixBasic = {
00050 ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |
00051 ONIG_SYN_OP_ESC_BRACE_INTERVAL )
00052 , 0
00053 , 0
00054 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )
00055 ,
00056 {
00057 (OnigCodePoint )'\\'
00058 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00059 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00060 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00061 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00062 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00063 }
00064 };
00065
00066 const OnigSyntaxType OnigSyntaxPosixExtended = {
00067 ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP |
00068 ONIG_SYN_OP_BRACE_INTERVAL |
00069 ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT )
00070 , 0
00071 , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS |
00072 ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS |
00073 ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP |
00074 ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC )
00075 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )
00076 ,
00077 {
00078 (OnigCodePoint )'\\'
00079 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00080 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00081 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00082 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00083 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00084 }
00085 };
00086
00087 const OnigSyntaxType OnigSyntaxEmacs = {
00088 ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC |
00089 ONIG_SYN_OP_ESC_BRACE_INTERVAL |
00090 ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT |
00091 ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF |
00092 ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_DECIMAL_BACKREF |
00093 ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_CONTROL_CHARS )
00094 , ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR
00095 , ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC
00096 , ONIG_OPTION_NONE
00097 ,
00098 {
00099 (OnigCodePoint )'\\'
00100 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00101 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00102 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00103 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00104 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00105 }
00106 };
00107
00108 const OnigSyntaxType OnigSyntaxGrep = {
00109 ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET |
00110 ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |
00111 ONIG_SYN_OP_ESC_VBAR_ALT |
00112 ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_ESC_PLUS_ONE_INF |
00113 ONIG_SYN_OP_ESC_QMARK_ZERO_ONE | ONIG_SYN_OP_LINE_ANCHOR |
00114 ONIG_SYN_OP_ESC_W_WORD | ONIG_SYN_OP_ESC_B_WORD_BOUND |
00115 ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_DECIMAL_BACKREF )
00116 , 0
00117 , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC )
00118 , ONIG_OPTION_NONE
00119 ,
00120 {
00121 (OnigCodePoint )'\\'
00122 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00123 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00124 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00125 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00126 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00127 }
00128 };
00129
00130 const OnigSyntaxType OnigSyntaxGnuRegex = {
00131 SYN_GNU_REGEX_OP
00132 , 0
00133 , SYN_GNU_REGEX_BV
00134 , ONIG_OPTION_NONE
00135 ,
00136 {
00137 (OnigCodePoint )'\\'
00138 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00139 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00140 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00141 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00142 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00143 }
00144 };
00145
00146 const OnigSyntaxType OnigSyntaxJava = {
00147 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
00148 ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL |
00149 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 )
00150 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
00151 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT |
00152 ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |
00153 ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP |
00154 ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 |
00155 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY )
00156 , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND )
00157 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_ASCII_RANGE |
00158 ONIG_OPTION_WORD_BOUND_ALL_RANGE )
00159 ,
00160 {
00161 (OnigCodePoint )'\\'
00162 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00163 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00164 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00165 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00166 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00167 }
00168 };
00169
00170
00171 const OnigSyntaxType OnigSyntaxPerl58 = {
00172 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
00173 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
00174 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |
00175 ONIG_SYN_OP_ESC_C_CONTROL )
00176 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
00177 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
00178 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
00179 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
00180 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
00181 ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER |
00182 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION)
00183 , SYN_GNU_REGEX_BV
00184 , ONIG_OPTION_SINGLELINE
00185 ,
00186 {
00187 (OnigCodePoint )'\\'
00188 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00189 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00190 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00191 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00192 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00193 }
00194 };
00195
00196
00197 const OnigSyntaxType OnigSyntaxPerl58_NG = {
00198 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
00199 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
00200 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |
00201 ONIG_SYN_OP_ESC_C_CONTROL )
00202 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
00203 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
00204 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
00205 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
00206 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
00207 ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER |
00208 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION |
00209 ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP |
00210 ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
00211 ONIG_SYN_OP2_ESC_G_SUBEXP_CALL )
00212 , ( SYN_GNU_REGEX_BV |
00213 ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |
00214 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME )
00215 , ONIG_OPTION_SINGLELINE
00216 ,
00217 {
00218 (OnigCodePoint )'\\'
00219 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00220 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00221 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00222 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00223 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00224 }
00225 };
00226
00227
00228 const OnigSyntaxType OnigSyntaxPerl = {
00229 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
00230 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
00231 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |
00232 ONIG_SYN_OP_ESC_C_CONTROL )
00233 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
00234 , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
00235 ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
00236 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
00237 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
00238 ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER |
00239 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION |
00240 ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |
00241 ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL |
00242 ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK |
00243 ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
00244 ONIG_SYN_OP2_QMARK_SUBEXP_CALL |
00245 ONIG_SYN_OP2_ESC_G_BRACE_BACKREF |
00246 ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP |
00247 ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP |
00248 ONIG_SYN_OP2_ESC_K_NAMED_BACKREF )
00249 , ( SYN_GNU_REGEX_BV |
00250 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME |
00251 ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL )
00252 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_CAPTURE_GROUP )
00253 ,
00254 {
00255 (OnigCodePoint )'\\'
00256 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00257 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00258 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00259 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00260 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00261 }
00262 };
00263
00264 const OnigSyntaxType OnigSyntaxPython = {
00265 (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
00266 ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
00267 ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |
00268 ONIG_SYN_OP_ESC_C_CONTROL )
00269 & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
00270 , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
00271 ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
00272 ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
00273 ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |
00274 ONIG_SYN_OP2_ESC_V_VTAB |
00275 ONIG_SYN_OP2_ESC_U_HEX4 |
00276 ONIG_SYN_OP2_QMARK_LPAREN_CONDITION |
00277 ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP )
00278 , ( SYN_GNU_REGEX_BV |
00279 ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV )
00280 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_ASCII_RANGE )
00281 ,
00282 {
00283 (OnigCodePoint )'\\'
00284 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00285 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00286 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00287 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00288 , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR
00289 }
00290 };
00291
00292
00293
00294 extern int
00295 onig_set_default_syntax(const OnigSyntaxType* syntax)
00296 {
00297 if (IS_NULL(syntax))
00298 syntax = ONIG_SYNTAX_RUBY;
00299
00300 OnigDefaultSyntax = syntax;
00301 return 0;
00302 }
00303
00304 extern void
00305 onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from)
00306 {
00307 *to = *from;
00308 }
00309
00310 extern void
00311 onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)
00312 {
00313 syntax->op = op;
00314 }
00315
00316 extern void
00317 onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)
00318 {
00319 syntax->op2 = op2;
00320 }
00321
00322 extern void
00323 onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)
00324 {
00325 syntax->behavior = behavior;
00326 }
00327
00328 extern void
00329 onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options)
00330 {
00331 syntax->options = options;
00332 }
00333
00334 extern unsigned int
00335 onig_get_syntax_op(OnigSyntaxType* syntax)
00336 {
00337 return syntax->op;
00338 }
00339
00340 extern unsigned int
00341 onig_get_syntax_op2(OnigSyntaxType* syntax)
00342 {
00343 return syntax->op2;
00344 }
00345
00346 extern unsigned int
00347 onig_get_syntax_behavior(OnigSyntaxType* syntax)
00348 {
00349 return syntax->behavior;
00350 }
00351
00352 extern OnigOptionType
00353 onig_get_syntax_options(OnigSyntaxType* syntax)
00354 {
00355 return syntax->options;
00356 }
00357
00358 #ifdef USE_VARIABLE_META_CHARS
00359 extern int onig_set_meta_char(OnigSyntaxType* enc,
00360 unsigned int what, OnigCodePoint code)
00361 {
00362 switch (what) {
00363 case ONIG_META_CHAR_ESCAPE:
00364 enc->meta_char_table.esc = code;
00365 break;
00366 case ONIG_META_CHAR_ANYCHAR:
00367 enc->meta_char_table.anychar = code;
00368 break;
00369 case ONIG_META_CHAR_ANYTIME:
00370 enc->meta_char_table.anytime = code;
00371 break;
00372 case ONIG_META_CHAR_ZERO_OR_ONE_TIME:
00373 enc->meta_char_table.zero_or_one_time = code;
00374 break;
00375 case ONIG_META_CHAR_ONE_OR_MORE_TIME:
00376 enc->meta_char_table.one_or_more_time = code;
00377 break;
00378 case ONIG_META_CHAR_ANYCHAR_ANYTIME:
00379 enc->meta_char_table.anychar_anytime = code;
00380 break;
00381 default:
00382 return ONIGERR_INVALID_ARGUMENT;
00383 break;
00384 }
00385 return 0;
00386 }
00387 #endif
00388