Annotation of embedaddon/php/ext/mbstring/oniguruma/regsyntax.c, revision 1.1

1.1     ! misho       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: 
        !            32: OnigSyntaxType OnigSyntaxASIS = {
        !            33:     0
        !            34:   , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE
        !            35:   , 0
        !            36:   , ONIG_OPTION_NONE
        !            37: };
        !            38: 
        !            39: OnigSyntaxType OnigSyntaxPosixBasic = {
        !            40:   ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |
        !            41:     ONIG_SYN_OP_ESC_BRACE_INTERVAL )
        !            42:   , 0
        !            43:   , 0
        !            44:   , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )
        !            45: };
        !            46: 
        !            47: OnigSyntaxType OnigSyntaxPosixExtended = {
        !            48:   ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP |
        !            49:     ONIG_SYN_OP_BRACE_INTERVAL |
        !            50:     ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT )
        !            51:   , 0
        !            52:   , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | 
        !            53:       ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | 
        !            54:       ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP |
        !            55:       ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC )
        !            56:   , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )
        !            57: };
        !            58: 
        !            59: OnigSyntaxType OnigSyntaxEmacs = {
        !            60:   ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC |
        !            61:     ONIG_SYN_OP_ESC_BRACE_INTERVAL |
        !            62:     ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT |
        !            63:     ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF |
        !            64:     ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_DECIMAL_BACKREF |
        !            65:     ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_CONTROL_CHARS )
        !            66:   , ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR
        !            67:   , ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC
        !            68:   , ONIG_OPTION_NONE
        !            69: };
        !            70: 
        !            71: OnigSyntaxType OnigSyntaxGrep = {
        !            72:   ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET |
        !            73:     ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |
        !            74:     ONIG_SYN_OP_ESC_VBAR_ALT |
        !            75:     ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_ESC_PLUS_ONE_INF |
        !            76:     ONIG_SYN_OP_ESC_QMARK_ZERO_ONE | ONIG_SYN_OP_LINE_ANCHOR |
        !            77:     ONIG_SYN_OP_ESC_W_WORD | ONIG_SYN_OP_ESC_B_WORD_BOUND |
        !            78:     ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_DECIMAL_BACKREF )
        !            79:   , 0
        !            80:   , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC )
        !            81:   , ONIG_OPTION_NONE
        !            82: };
        !            83: 
        !            84: OnigSyntaxType OnigSyntaxGnuRegex = {
        !            85:   SYN_GNU_REGEX_OP
        !            86:   , 0
        !            87:   , SYN_GNU_REGEX_BV
        !            88:   , ONIG_OPTION_NONE
        !            89: };
        !            90: 
        !            91: OnigSyntaxType OnigSyntaxJava = {
        !            92:   (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
        !            93:      ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL |
        !            94:      ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 )
        !            95:    & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
        !            96:   , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT |
        !            97:       ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |
        !            98:       ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP |
        !            99:       ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 |
        !           100:       ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY )
        !           101:   , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND )
        !           102:   , ONIG_OPTION_SINGLELINE
        !           103: };
        !           104: 
        !           105: OnigSyntaxType OnigSyntaxPerl = {
        !           106:   (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
        !           107:      ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
        !           108:      ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |
        !           109:      ONIG_SYN_OP_ESC_C_CONTROL )
        !           110:    & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
        !           111:   , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
        !           112:       ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
        !           113:       ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
        !           114:       ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
        !           115:       ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS )
        !           116:   , SYN_GNU_REGEX_BV
        !           117:   , ONIG_OPTION_SINGLELINE
        !           118: };
        !           119: 
        !           120: /* Perl + named group */
        !           121: OnigSyntaxType OnigSyntaxPerl_NG = {
        !           122:   (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
        !           123:      ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
        !           124:      ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |
        !           125:      ONIG_SYN_OP_ESC_C_CONTROL )
        !           126:    & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
        !           127:   , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
        !           128:       ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
        !           129:       ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY  |
        !           130:       ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
        !           131:       ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS    |
        !           132:       ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP       |
        !           133:       ONIG_SYN_OP2_ESC_K_NAMED_BACKREF        |
        !           134:       ONIG_SYN_OP2_ESC_G_SUBEXP_CALL )
        !           135:   , ( SYN_GNU_REGEX_BV |
        !           136:       ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |
        !           137:       ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME )
        !           138:   , ONIG_OPTION_SINGLELINE
        !           139: };
        !           140: 
        !           141: 
        !           142: 
        !           143: extern int
        !           144: onig_set_default_syntax(OnigSyntaxType* syntax)
        !           145: {
        !           146:   if (IS_NULL(syntax))
        !           147:     syntax = ONIG_SYNTAX_RUBY;
        !           148: 
        !           149:   OnigDefaultSyntax = syntax;
        !           150:   return 0;
        !           151: }
        !           152: 
        !           153: extern void
        !           154: onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from)
        !           155: {
        !           156:   *to = *from;
        !           157: }
        !           158: 
        !           159: extern void
        !           160: onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)
        !           161: {
        !           162:   syntax->op = op;
        !           163: }
        !           164: 
        !           165: extern void
        !           166: onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)
        !           167: {
        !           168:   syntax->op2 = op2;
        !           169: }
        !           170: 
        !           171: extern void
        !           172: onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)
        !           173: {
        !           174:   syntax->behavior = behavior;
        !           175: }
        !           176: 
        !           177: extern void
        !           178: onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options)
        !           179: {
        !           180:   syntax->options = options;
        !           181: }
        !           182: 
        !           183: extern unsigned int
        !           184: onig_get_syntax_op(OnigSyntaxType* syntax)
        !           185: {
        !           186:   return syntax->op;
        !           187: }
        !           188: 
        !           189: extern unsigned int
        !           190: onig_get_syntax_op2(OnigSyntaxType* syntax)
        !           191: {
        !           192:   return syntax->op2;
        !           193: }
        !           194: 
        !           195: extern unsigned int
        !           196: onig_get_syntax_behavior(OnigSyntaxType* syntax)
        !           197: {
        !           198:   return syntax->behavior;
        !           199: }
        !           200: 
        !           201: extern OnigOptionType
        !           202: onig_get_syntax_options(OnigSyntaxType* syntax)
        !           203: {
        !           204:   return syntax->options;
        !           205: }
        !           206: 
        !           207: #ifdef USE_VARIABLE_META_CHARS
        !           208: extern int onig_set_meta_char(OnigEncoding enc,
        !           209:                               unsigned int what, OnigCodePoint code)
        !           210: {
        !           211:   switch (what) {
        !           212:   case ONIG_META_CHAR_ESCAPE:
        !           213:     enc->meta_char_table.esc = code;
        !           214:     break;
        !           215:   case ONIG_META_CHAR_ANYCHAR:
        !           216:     enc->meta_char_table.anychar = code;
        !           217:     break;
        !           218:   case ONIG_META_CHAR_ANYTIME:
        !           219:     enc->meta_char_table.anytime = code;
        !           220:     break;
        !           221:   case ONIG_META_CHAR_ZERO_OR_ONE_TIME:
        !           222:     enc->meta_char_table.zero_or_one_time = code;
        !           223:     break;
        !           224:   case ONIG_META_CHAR_ONE_OR_MORE_TIME:
        !           225:     enc->meta_char_table.one_or_more_time = code;
        !           226:     break;
        !           227:   case ONIG_META_CHAR_ANYCHAR_ANYTIME:
        !           228:     enc->meta_char_table.anychar_anytime = code;
        !           229:     break;
        !           230:   default:
        !           231:     return ONIGERR_INVALID_ARGUMENT;
        !           232:     break;
        !           233:   }
        !           234:   return 0;
        !           235: }
        !           236: #endif /* USE_VARIABLE_META_CHARS */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>