sheepy

build system (sheepy) and package manager (spm) for C
git clone https://spartatek.se/git/sheepy.git
Log | Files | Refs | README | LICENSE

analyzerConfigDerived (23367B)


      1 #ifdef    QUEX_OPTION_COMPUTED_GOTOS_DISABLED
      2 #   undef QUEX_OPTION_COMPUTED_GOTOS
      3 #endif
      4 #ifdef    __QUEX_OPTION_ON_ENTRY_HANDLER_PRESENT_DISABLED
      5 #   undef __QUEX_OPTION_ON_ENTRY_HANDLER_PRESENT
      6 #endif
      7 #ifdef    __QUEX_OPTION_ON_EXIT_HANDLER_PRESENT_DISABLED
      8 #   undef __QUEX_OPTION_ON_EXIT_HANDLER_PRESENT
      9 #endif
     10 #ifdef    QUEX_OPTION_CONVERTER_ICONV_DISABLED
     11 #   undef QUEX_OPTION_CONVERTER_ICONV
     12 #endif
     13 #ifdef    QUEX_OPTION_CONVERTER_ICU_DISABLED
     14 #   undef QUEX_OPTION_CONVERTER_ICU
     15 #endif
     16 #ifdef     __QUEX_OPTION_SUPPORT_BEGIN_OF_LINE_PRE_CONDITION_DISABLED
     17 #   undef  __QUEX_OPTION_SUPPORT_BEGIN_OF_LINE_PRE_CONDITION
     18 #endif
     19 #ifdef    QUEX_OPTION_INCLUDE_STACK_DISABLED
     20 #   undef QUEX_OPTION_INCLUDE_STACK
     21 #endif
     22 #ifdef    QUEX_OPTION_STRING_ACCUMULATOR_DISABLED
     23 #   undef QUEX_OPTION_STRING_ACCUMULATOR
     24 #endif
     25 #ifdef QUEX_OPTION_DEBUG_QUEX_PATTERN_MATCHES_DISABLED
     26 #   undef QUEX_OPTION_DEBUG_QUEX_PATTERN_MATCHES
     27 #endif
     28 #ifdef    QUEX_OPTION_DEBUG_SHOW_MODES_DISABLED
     29 #   undef QUEX_OPTION_DEBUG_SHOW_MODES
     30 #endif
     31 #ifdef    QUEX_OPTION_DEBUG_TOKEN_SENDING_DISABLED
     32 #   undef QUEX_OPTION_DEBUG_TOKEN_SENDING
     33 #endif
     34 #if    ! defined(QUEX_OPTION_AUTOMATIC_ANALYSIS_CONTINUATION_ON_MODE_CHANGE_DISABLED) 
     35 #        define QUEX_OPTION_AUTOMATIC_ANALYSIS_CONTINUATION_ON_MODE_CHANGE
     36 #endif
     37 #ifdef    QUEX_OPTION_RUNTIME_MODE_TRANSITION_CHECK_DISABLED
     38 #   undef QUEX_OPTION_RUNTIME_MODE_TRANSITION_CHECK
     39 #endif
     40 #ifdef    QUEX_OPTION_RUNTIME_MODE_TRANSITION_CHECK_DISABLED
     41 #   undef QUEX_OPTION_POST_CATEGORIZER
     42 #endif
     43 #ifdef    QUEX_OPTION_COLUMN_NUMBER_COUNTING_DISABLED
     44 #   undef QUEX_OPTION_COLUMN_NUMBER_COUNTING
     45 #endif
     46 #ifdef    QUEX_OPTION_LINE_NUMBER_COUNTING_DISABLED
     47 #   undef QUEX_OPTION_LINE_NUMBER_COUNTING
     48 #endif
     49 
     50 #if defined(QUEX_OPTION_TOKEN_POLICY_QUEUE)
     51 #   define __QUEX_PURE_RETURN   do { return; } while(0)
     52 #else
     53 #   define __QUEX_PURE_RETURN   do { return __self_result_token_id; } while(0)
     54 #endif
     55 
     56 #if  ! defined (QUEX_SETTING_BUFFER_MIN_FALLBACK_N)
     57 #   if ! defined (QUEX_SETTING_BUFFER_SIZE) 
     58 #      error "QUEX_SETTING_BUFFER_SIZE not defined at this place."
     59     /* If your compiler brings you here to this position, then this may be because
     60      * you defined the QUEX_SETTING_BUFFER_SIZE with something different than just
     61      * an integer number. Indeed something like
     62      *
     63      *   #define QUEX_SETTING_BUFFER_SIZE  (size_t)4096
     64      *
     65      * would be propper, but does not allow to do some math. So, please erase whatever
     66      * is not a number in the definition (e.g. delete the '(size_t)' type cast.        */
     67 #   elif      QUEX_SETTING_BUFFER_SIZE >= 1024
     68 #      define QUEX_SETTING_BUFFER_MIN_FALLBACK_N  (256)
     69 #   elif      QUEX_SETTING_BUFFER_SIZE >= 16
     70 #      define QUEX_SETTING_BUFFER_MIN_FALLBACK_N  (size_t)(QUEX_SETTING_BUFFER_SIZE >> 5)
     71 #   else
     72 #      define QUEX_SETTING_BUFFER_MIN_FALLBACK_N  (0)
     73 #   endif
     74 #endif
     75 
     76 /* Tokens may be 'stamped' with the line an column number automatically.
     77  * This happens by means of the option 
     78  *      
     79  *       QUEX_OPTION_TOKEN_STAMPING_WITH_LINE_AND_COLUMN_DISABLED
     80  *
     81  * It is active by default only for queue token policies, because after
     82  * a call to .receive(), the lexical analyzer maintains only the position
     83  * of the last token in the queue. The positions of other tokens would
     84  * not be accessible once they are in the queue. 
     85  * 
     86  * The token policy 'users_token' only communicates one token at a time
     87  * and the line and column numbers in the lexical analyzer are those
     88  * of the last token. Thus, in this case the tokens do not need to be 
     89  * stamped with the position in the file.                                */
     90 #ifdef         QUEX_OPTION_TOKEN_STAMPING_WITH_LINE_AND_COLUMN_DISABLED
     91 #    ifdef     QUEX_OPTION_TOKEN_STAMPING_WITH_LINE_AND_COLUMN
     92 #        undef QUEX_OPTION_TOKEN_STAMPING_WITH_LINE_AND_COLUMN
     93 #    endif
     94 #else
     95 #    ifndef    QUEX_OPTION_TOKEN_STAMPING_WITH_LINE_AND_COLUMN
     96 #       define QUEX_OPTION_TOKEN_STAMPING_WITH_LINE_AND_COLUMN
     97 #    endif
     98 #endif
     99 
    100 #ifdef  QUEX_OPTION_TOKEN_REPETITION_SUPPORT
    101 #   define __QUEX_IF_TOKEN_REPETITION_SUPPORT(EXPRESSION)          EXPRESSION
    102 #   define __QUEX_IF_TOKEN_REPETITION_SUPPORT_DISABLED(EXPRESSION) /* empty */
    103 #else
    104 #   define __QUEX_IF_TOKEN_REPETITION_SUPPORT(EXPRESSION)          /* empty */
    105 #   define __QUEX_IF_TOKEN_REPETITION_SUPPORT_DISABLED(EXPRESSION) EXPRESSION
    106 #endif
    107 
    108 #if defined (QUEX_OPTION_TOKEN_POLICY_QUEUE)
    109 #   define __QUEX_TYPE_ANALYZER_RETURN_VALUE            void
    110 #   define __QUEX_RETURN                                return
    111 #   define QUEX_SETTING_AFTER_SEND_CONTINUE_OR_RETURN() CONTINUE
    112 #else 
    113 #   define __QUEX_TYPE_ANALYZER_RETURN_VALUE            QUEX_TYPE_TOKEN_ID
    114 #   define __QUEX_RETURN                                return __self_result_token_id
    115 #   define QUEX_SETTING_AFTER_SEND_CONTINUE_OR_RETURN() RETURN
    116 #endif
    117 
    118 #if defined(QUEX_OPTION_CONVERTER_ICONV) || defined(QUEX_OPTION_CONVERTER_ICU)
    119 #   ifndef    __QUEX_OPTION_CONVERTER
    120 #      define __QUEX_OPTION_CONVERTER
    121 #   endif
    122 #   if defined(__QUEX_OPTION_ENGINE_RUNNING_ON_CODEC)
    123 #      error "Cannot specify QUEX_OPTION_CONVERTER_ICU or QUEX_OPTION_CONVERTER_ICU if the engine is running directly on a codec."
    124 #   endif
    125 #endif
    126 #if ! defined(QUEX_SETTING_BUFFER_FILLERS_CONVERTER_NEW)
    127 #   if   defined (QUEX_OPTION_CONVERTER_ICONV)
    128 #        define  QUEX_SETTING_BUFFER_FILLERS_CONVERTER_NEW  QUEX_NAME(Converter_IConv_new)
    129 #   elif defined (QUEX_OPTION_CONVERTER_ICU)
    130 #        define  QUEX_SETTING_BUFFER_FILLERS_CONVERTER_NEW  QUEX_NAME(Converter_ICU_new)
    131 #   else
    132 #        define  QUEX_SETTING_BUFFER_FILLERS_CONVERTER_NEW  QUEX_NAME(__Converter_EMPTY_new)
    133 #   endif
    134 #endif
    135 
    136 #ifndef    __QUEX_OPTION_CONVERTER_HELPER
    137 #   if    defined(QUEX_OPTION_INFORMATIVE_BUFFER_OVERFLOW_MESSAGE) \
    138        || defined(QUEX_OPTION_CONVERTER_ICU)                       \
    139        || defined(QUEX_OPTION_CONVERTER_ICONV) 
    140 #   define __QUEX_OPTION_CONVERTER_HELPER
    141 #   endif
    142 #endif
    143 
    144 #if    defined(QUEX_OPTION_LINE_NUMBER_COUNTING)   \
    145     || defined(QUEX_OPTION_COLUMN_NUMBER_COUNTING) \
    146     || defined(QUEX_OPTION_INDENTATION_TRIGGER)       
    147 #     define  __QUEX_OPTION_COUNTER
    148 #     define  __QUEX_IF_COUNT(EXPRESSION)             EXPRESSION
    149 #     define  __QUEX_IF_COUNT_IF(EXPRESSION)          if( EXPRESSION )
    150 #     define  __QUEX_IF_COUNT_SHIFT_VALUES()  \
    151               __QUEX_COUNTER_SHIFT_COLUMNS(); \
    152               __QUEX_COUNTER_SHIFT_LINES();
    153 #else
    154 #     if defined(__QUEX_OPTION_COUNTER)  
    155 #        undef   __QUEX_OPTION_COUNTER
    156 #     endif
    157 #     define  __QUEX_IF_COUNT(EXPRESSION)             /* empty */
    158 #     define  __QUEX_IF_COUNT_IF(EXPRESSION)          /* empty */
    159 #     define  __QUEX_IF_COUNT_SHIFT_VALUES()          /* empty */
    160 #endif
    161 
    162 #if defined(QUEX_OPTION_LINE_NUMBER_COUNTING)   
    163 #   define     __QUEX_IF_COUNT_LINES(EXPRESSION)      EXPRESSION
    164 #   define     __QUEX_IF_COUNT_LINES_IF(EXPRESSION)   if( EXPRESSION )
    165 #   define     __QUEX_IF_COUNT_LINES_ADD(X)                      \
    166                do {                                              \
    167                    me->counter._line_number_at_end   += (X);     \
    168                    __quex_debug_counter();                       \
    169                } while(0) 
    170 #   define     __QUEX_COUNTER_SHIFT_LINES() \
    171                me->counter._line_number_at_begin = me->counter._line_number_at_end; 
    172 
    173 #else
    174 #   define     __QUEX_IF_COUNT_LINES(EXPRESSION)      /* empty */
    175 #   define     __QUEX_IF_COUNT_LINES_IF(EXPRESSION)   /* empty */
    176 #   define     __QUEX_IF_COUNT_LINES_ADD(X)           /* empty */
    177 #   define     __QUEX_COUNTER_SHIFT_LINES()           /* empty */
    178 #endif
    179 
    180 #if defined(QUEX_OPTION_COLUMN_NUMBER_COUNTING)   
    181 #   define     __QUEX_IF_COUNT_COLUMNS(EXPRESSION)    EXPRESSION
    182 #   define     __QUEX_IF_COUNT_COLUMNS_SET(X) \
    183                do {                                              \
    184                    me->counter._column_number_at_end   = (X);    \
    185                    __quex_debug_counter();                       \
    186                } while(0) 
    187 #   define     __QUEX_IF_COUNT_COLUMNS_ADD(X) \
    188                do {                                              \
    189                    me->counter._column_number_at_end   += (X);   \
    190                    __quex_debug_counter();                       \
    191                } while(0) 
    192 #   define     __QUEX_COUNTER_SHIFT_COLUMNS() \
    193                me->counter._column_number_at_begin = me->counter._column_number_at_end; 
    194 
    195 #else
    196 #   define     __QUEX_IF_COUNT_COLUMNS(EXPRESSION)     /* empty */
    197 #   define     __QUEX_IF_COUNT_COLUMNS_SET(X)          /* empty */
    198 #   define     __QUEX_IF_COUNT_COLUMNS_ADD(X)          /* empty */
    199 #   define     __QUEX_COUNTER_SHIFT_COLUMNS()          /* empty */
    200 #endif
    201 
    202 #if defined(QUEX_OPTION_INDENTATION_TRIGGER)
    203 #   ifndef    QUEX_OPTION_INDENTATION_DEFAULT_HANDLER_DISABLED
    204 #      define QUEX_OPTION_INDENTATION_DEFAULT_HANDLER
    205 #   endif
    206 #   define    __QUEX_IF_COUNT_INDENTATION(EXPRESSION) EXPRESSION
    207 #else
    208 #   define    __QUEX_IF_COUNT_INDENTATION(EXPRESSION) /* empty */
    209 #endif
    210 
    211 /* Default Counter Rules */
    212 #if ! defined(__QUEX_COUNTER_RULES)
    213     /* NOTE: 'x - x % 4' == 'x with the last two bits deleted'
    214      *                   == 'x & (~3)'                          */
    215 #   if QUEX_SETTING_CHAR_CODEC == utf8
    216 #       define __QUEX_COUNTER_RULES(counter, iterator)                    \
    217                switch( (int)(*iterator) ) {                               \
    218                case (int)(QUEX_TYPE_LEXATOM)'\t':                       \
    219                    (counter)._column_number_at_end &= (~(size_t)0x3) + 4; \
    220                    ++(iterator);                                          \
    221                    break;                                                 \
    222                case (int)(QUEX_TYPE_LEXATOM)'\n':                       \
    223                    (counter)._line_number_at_end   += 1;                  \
    224                    (counter)._column_number_at_end  = 1;                  \
    225                    ++(iterator);                                          \
    226                    break;                                                 \
    227                default:                                                   \
    228                    if     ( (*iterator & 0x80) == 0 ) { iterator += 1; } /* 1byte character */ \
    229                    /* NOT ( (*iterator & 0x40) == 0 ) { iterator += 2; }    2byte character */ \
    230                    else if( (*iterator & 0x20) == 0 ) { iterator += 2; } /* 3byte character */ \
    231                    else if( (*iterator & 0x10) == 0 ) { iterator += 3; } /* 3byte character */ \
    232                    else if( (*iterator & 0x08) == 0 ) { iterator += 4; } /* 4byte character */ \
    233                    else if( (*iterator & 0x04) == 0 ) { iterator += 5; } /* 5byte character */ \
    234                    else if( (*iterator & 0x02) == 0 ) { iterator += 6; } /* 6byte character */ \
    235                    else if( (*iterator & 0x01) == 0 ) { iterator += 7; } /* 7byte character */ \
    236                    else                               { iterator += 1; } /* default 1       */ \
    237                    (counter)._column_number_at_end += 1;                  \
    238                    break;                                                 \
    239                }
    240 #   elif QUEX_SETTING_CHAR_CODEC == utf16
    241 #       define __QUEX_COUNTER_RULES(counter, iterator) \
    242                switch( (int)(QUEX_TYPE_LEXATOM)(*iterator) ) {         \
    243                case (int)(QUEX_TYPE_LEXATOM)'\t':                      \
    244                    (counter)._column_number_at_end &= (~(size_t)0x3) + 4;\
    245                    ++(iterator);                            \
    246                    break;                                   \
    247                case (int)(QUEX_TYPE_LEXATOM)'\n':         \
    248                    (counter)._line_number_at_end  += 1;     \
    249                    (counter)._column_number_at_end  = 1;    \
    250                    ++(iterator);                            \
    251                    break;                                   \
    252                default:                                     \
    253                    if     ( *iterator < 0xD800 )  { iterator += 1; } /* 1 chunk character */  \
    254                    else if( *iterator > 0xDBFF )  { iterator += 1; } /* 1 chunk character */  \
    255                    else                           { iterator += 2; } /* 2 chunk character */  \
    256                    (counter)._column_number_at_end += 1;    \
    257                    break;                                   \
    258                }
    259 #   else
    260 #       define __QUEX_COUNTER_RULES(counter, iterator) \
    261                switch( (int)(*iterator) ) {                                      \
    262                case (int)(QUEX_TYPE_LEXATOM)'\t':    \
    263                    (counter)._column_number_at_end &= (~(size_t)0x3) + 4; break; \
    264                case (int)(QUEX_TYPE_LEXATOM)'\n':    \
    265                    (counter)._line_number_at_end   += 1;                         \
    266                    (counter)._column_number_at_end  = 1;                  break; \
    267                default:                                \
    268                    (counter)._column_number_at_end += 1;                  break; \
    269                }                                                                 \
    270                ++(iterator);
    271 #   endif
    272 
    273 #endif
    274 
    275 /* Special Case MinGW: At the time of this writing (2009y09m23d) it does 
    276  * not support 'wchart_t'.                                                */
    277 #if      (defined (__GLIBCPP__) || defined(__GLIBCXX__)) \
    278     && ! defined  (_GLIBCXX_USE_WCHAR_T)
    279 #   define  __QUEX_OPTION_WCHAR_T_DISABLED
    280 #endif
    281 #ifndef     __QUEX_OPTION_WCHAR_T_DISABLED
    282 #   define  __QUEX_OPTION_WCHAR_T
    283 #endif
    284 
    285 /* If you have a different setup, define the macros QUEX_SETTING_WCHAR_CODEC
    286  * and QUEX_SETTING_CHAR_CODEC before the inclusion of this file.
    287  *
    288  * NOTE: '8' stands for UTF8, '16' stands for UTF16, and '32' for UTF32.
    289  *       Do not add anything around those numbers, otherwise the macros
    290  *       will not trigger the right mappings.                             */
    291 #if ! defined(QUEX_SETTING_WCHAR_CODEC)
    292 #   if defined(_WIN32) || defined(_WIN64)
    293        /* Default: Map 'wchar' to 'utf16' */
    294 #      define QUEX_SETTING_WCHAR_CODEC  16
    295 #   else
    296        /* Default: Map 'wchar' to 'utf32' */
    297 #      define QUEX_SETTING_WCHAR_CODEC  32
    298 #   endif
    299 #endif
    300 
    301 /* Default: Map 'char' to 'utf8' */
    302 #if ! defined(QUEX_SETTING_CHAR_CODEC)
    303 #   define    QUEX_SETTING_CHAR_CODEC   utf8
    304 #endif
    305 
    306 #if ! defined(__QUEX_OPTION_PLAIN_C)
    307     /* Cannot/must not go through '__QUEX_APPEND'. QUEX_FUNCTION_PREFIX ends 
    308      * with '::'. No '##' is required for concatination.                     */
    309 #   define QUEX_FUNCTION_DEF(NAME)                      NAME
    310 #   define QUEX_FUNCTION(NAME)                          QUEX_FUNCTION_PREFIX NAME
    311 
    312     /* Avoid __VA_ARGS__ because some compilers still cannot handle it
    313      * properly.                                                             */
    314 #   define QUEX_SIGNATURE(CLASS, FUNCTION)              CLASS  ## :: ## FUNCTION
    315 #   define QUEX_THIS_IS_ME(C)                           C* me = this;
    316 #   define QUEX_MEMBERF(C, F)                           QUEX_SIGNATURE(C, F)()
    317 #   define QUEX_MEMBERF1(C, F, ARG0)                    QUEX_SIGNATURE(C, F)(ARG0)
    318 #   define QUEX_MEMBERF2(C, F, ARG0, ARG1)              QUEX_SIGNATURE(C, F)(ARG0, ARG1)
    319 #   define QUEX_MEMBERF3(C, F, ARG0, ARG1, ARG2)        QUEX_SIGNATURE(C, F)(ARG0, ARG1, ARG2)
    320 #   define QUEX_MEMBERF4(C, F, ARG0, ARG1, ARG2, ARG3)  QUEX_SIGNATURE(C, F)(ARG0, ARG1, ARG2, ARG3)
    321 
    322 #   define QUEX_DESTRUCTOR()                            QUEX_MEMBER(~QUEX_TYPE0_ANALYZER)()
    323 #   define QUEX_MEMBER_FUNCTION(N, SFX)                 QUEX_MEMBER(N)()
    324 #   define QUEX_MEMBER_FUNCTIONO(N)                     QUEX_MEMBER(N)()
    325 #   define QUEX_MEMBER_FUNCTION1(N, SFX, A)             QUEX_MEMBER(N)(A)      
    326 #   define QUEX_MEMBER_FUNCTIONO1(N, A)                 QUEX_MEMBER(N)(A)      
    327 #   define QUEX_MEMBER_FUNCTION2(N, SFX, A, B)          QUEX_MEMBER(N)(A, B)   
    328 #   define QUEX_MEMBER_FUNCTIONO2(N, A, B)              QUEX_MEMBER(N)(A, B)      
    329 #   define QUEX_MEMBER_FUNCTION3(N, SFX, A, B, C)       QUEX_MEMBER(N)(A, B, C)
    330 #   define QUEX_MEMBER_FUNCTION4(N, SFX, A, B, C, D)    QUEX_MEMBER(N)(A, B, C, D)
    331 #   define QUEX_MEMBER_FUNCTION_CALL(N, SFX)            this->N()
    332 #   define QUEX_MEMBER_FUNCTION_CALLO(N)                this->N()
    333 #   define QUEX_MEMBER_FUNCTION_CALL1(N, SFX, A)        this->N(A)      
    334 #   define QUEX_MEMBER_FUNCTION_CALLO1(N, A)            this->N(A)      
    335 #   define QUEX_MEMBER_FUNCTION_CALL2(N, SFX, A, B)     this->N(A, B)   
    336 #   define QUEX_MEMBER_FUNCTION_CALLO2(N, A, B)         this->N(A, B)      
    337 #   define QUEX_MEMBER_FUNCTION_CALL3(N, SFX, A, B, C)  this->N(A, B, C)
    338 #   define QUEX_MEMBER_FUNCTION_CALL4(N, SFX, A, B, C, D)  this->N(A, B, C, D)
    339 
    340 #else
    341     /* Go through '__QUEX_APPEND' to ensure macro expansion, before concatination. */
    342 #   define QUEX_FUNCTION_DEF(NAME)                      __QUEX_APPEND(QUEX_FUNCTION_DEF_PREFIX, NAME)
    343 #   define QUEX_FUNCTION(NAME)                          __QUEX_APPEND(QUEX_FUNCTION_PREFIX, NAME)
    344 
    345 #   define QUEX_SIGNATURE(CLASS, FUNCTION)              CLASS    ## _ ## FUNCTION
    346 #   define QUEX_THIS(C)                                 struct C ## _tag* me
    347 #   define QUEX_THIS_IS_ME(C)                           /* Nothing To Do */
    348 #   define QUEX_MEMBERF(C, F)                           QUEX_SIGNATURE(C, F)(QUEX_THIS(C))
    349 #   define QUEX_MEMBERF1(C, F, ARG0)                    QUEX_SIGNATURE(C, F)(QUEX_THIS(C), ARG0)
    350 #   define QUEX_MEMBERF2(C, F, ARG0, ARG1)              QUEX_SIGNATURE(C, F)(QUEX_THIS(C), ARG0, ARG1)
    351 #   define QUEX_MEMBERF3(C, F, ARG0, ARG1, ARG2)        QUEX_SIGNATURE(C, F)(QUEX_THIS(C), ARG0, ARG1, ARG2)
    352 #   define QUEX_MEMBERF4(C, F, ARG0, ARG1, ARG2, ARG3)  QUEX_SIGNATURE(C, F)(QUEX_THIS(C), ARG0, ARG1, ARG2, ARG3)
    353 
    354     /* Avoid __VA_ARGS__ because some compilers still cannot handle it
    355      * properly.                                                             */
    356 #   define QUEX_DESTRUCTOR()                            void QUEX_NAME(destruct)(QUEX_TYPE_ANALYZER* me)
    357 #   define QUEX_MEMBER_FUNCTION(N, SFX)                 QUEX_NAME(N ## _ ## SFX)(QUEX_TYPE_ANALYZER* me)
    358 #   define QUEX_MEMBER_FUNCTIONO(N)                     QUEX_NAME(N)(QUEX_TYPE_ANALYZER* me)
    359 #   define QUEX_MEMBER_FUNCTION1(N, SFX, A)             QUEX_NAME(N ## _ ## SFX)(QUEX_TYPE_ANALYZER* me, A)      
    360 #   define QUEX_MEMBER_FUNCTIONO1(N, A)                 QUEX_NAME(N)(QUEX_TYPE_ANALYZER* me, A)      
    361 #   define QUEX_MEMBER_FUNCTION2(N, SFX, A, B)          QUEX_NAME(N ## _ ## SFX)(QUEX_TYPE_ANALYZER* me, A, B)   
    362 #   define QUEX_MEMBER_FUNCTIONO2(N, A, B)              QUEX_NAME(N)(QUEX_TYPE_ANALYZER* me, A, B)      
    363 #   define QUEX_MEMBER_FUNCTION3(N, SFX, A, B, C)       QUEX_NAME(N ## _ ## SFX)(QUEX_TYPE_ANALYZER* me, A, B, C)
    364 #   define QUEX_MEMBER_FUNCTION4(N, SFX, A, B, C, D)    QUEX_NAME(N ## _ ## SFX)(QUEX_TYPE_ANALYZER* me, A, B, C, D)
    365 #   define QUEX_MEMBER_FUNCTION_CALL(N, SFX)            QUEX_NAME(N ## _ ## SFX)(me)
    366 #   define QUEX_MEMBER_FUNCTION_CALLO(N)                QUEX_NAME(N)(me)
    367 #   define QUEX_MEMBER_FUNCTION_CALL1(N, SFX, A)        QUEX_NAME(N ## _ ## SFX)(me, A)      
    368 #   define QUEX_MEMBER_FUNCTION_CALLO1(N, A)            QUEX_NAME(N)(me, A)      
    369 #   define QUEX_MEMBER_FUNCTION_CALL2(N, SFX, A, B)     QUEX_NAME(N ## _ ## SFX)(me, A, B)   
    370 #   define QUEX_MEMBER_FUNCTION_CALLO2(N, A, B)         QUEX_NAME(N)(me, A, B)      
    371 #   define QUEX_MEMBER_FUNCTION_CALL3(N, SFX, A, B, C)  QUEX_NAME(N ## _ ## SFX)(me, A, B, C)
    372 #   define QUEX_MEMBER_FUNCTION_CALL4(N, SFX, A, B, C, D)  QUEX_NAME(N ## _ ## SFX)(me, A, B, C, D)
    373 
    374 #endif
    375 
    376 #define QUEX_A_MEMBERF (FUNCTION)                          QUEX_MEMBERF(QUEX_TYPE0_ANALYZER, FUNCTION)
    377 #define QUEX_A_MEMBERF1(FUNCTION, ARG0)                    QUEX_MEMBERF1(QUEX_TYPE0_ANALYZER, FUNCTION, ARG0)
    378 #define QUEX_A_MEMBERF2(FUNCTION, ARG0, ARG1)              QUEX_MEMBERF2(QUEX_TYPE0_ANALYZER, FUNCTION, ARG0, ARG1)
    379 #define QUEX_A_MEMBERF3(FUNCTION, ARG0, ARG1, ARG2)        QUEX_MEMBERF3(QUEX_TYPE0_ANALYZER, FUNCTION, ARG0, ARG1, ARG2)
    380 #define QUEX_A_MEMBERF4(FUNCTION, ARG0, ARG1, ARG2, ARG3)  QUEX_MEMBERF4(QUEX_TYPE0_ANALYZER, FUNCTION, ARG0, ARG1, ARG2, ARG3)
    381                                                            
    382 #define QUEX_T_MEMBERF (FUNCTION)                          QUEX_MEMBERF(QUEX_NAME_COMPLETE_TOKEN, FUNCTION)
    383 #define QUEX_T_MEMBERF1(FUNCTION, ARG0)                    QUEX_MEMBERF1(QUEX_NAME_COMPLETE_TOKEN, FUNCTION, ARG0)
    384 #define QUEX_T_MEMBERF2(FUNCTION, ARG0, ARG1)              QUEX_MEMBERF2(QUEX_NAME_COMPLETE_TOKEN, FUNCTION, ARG0, ARG1)
    385 #define QUEX_T_MEMBERF3(FUNCTION, ARG0, ARG1, ARG2)        QUEX_MEMBERF3(QUEX_NAME_COMPLETE_TOKEN, FUNCTION, ARG0, ARG1, ARG2)
    386 #define QUEX_T_MEMBERF4(FUNCTION, ARG0, ARG1, ARG2, ARG3)  QUEX_MEMBERF4(QUEX_NAME_COMPLETE_TOKEN, FUNCTION, ARG0, ARG1, ARG2, ARG3)
    387 
    388 /* For function definitions, the 'namespace::' is not required. => QUEX_FUNCTION0 */
    389 #define __QUEX_CONVERTER_CHAR_DEF(FROM, TO)    QUEX_FUNCTION_DEF(FROM ## _to_ ## TO ## _character)
    390 #define __QUEX_CONVERTER_STRING_DEF(FROM, TO)  QUEX_FUNCTION_DEF(FROM ## _to_ ## TO)
    391 #define QUEX_CONVERTER_CHAR_DEF(FROM, TO)      __QUEX_CONVERTER_CHAR_DEF(FROM, TO)
    392 #define QUEX_CONVERTER_STRING_DEF(FROM, TO)    __QUEX_CONVERTER_STRING_DEF(FROM, TO)
    393 
    394 /* For function calls, the 'namespace::' IS required. => QUEX_FUNCTION */
    395 #define __QUEX_CONVERTER_CHAR(FROM, TO)    QUEX_FUNCTION(FROM ## _to_ ## TO ## _character)
    396 #define __QUEX_CONVERTER_STRING(FROM, TO)  QUEX_FUNCTION(FROM ## _to_ ## TO)
    397 #define QUEX_CONVERTER_CHAR(FROM, TO)      __QUEX_CONVERTER_CHAR(FROM, TO)
    398 #define QUEX_CONVERTER_STRING(FROM, TO)    __QUEX_CONVERTER_STRING(FROM, TO)
    399 
    400 /* If '--token-class-only' we need to restore overwritten macros. */
    401 #define __QUEX_CONVERTER_CHAR_DEF_BACKUP(FROM, TO)    QUEX_FUNCTION_DEF(FROM ## _to_ ## TO ## _character)
    402 #define __QUEX_CONVERTER_STRING_DEF_BACKUP(FROM, TO)  QUEX_FUNCTION_DEF(FROM ## _to_ ## TO)
    403 #define QUEX_CONVERTER_CHAR_DEF_BACKUP(FROM, TO)      __QUEX_CONVERTER_CHAR_DEF(FROM, TO)
    404 #define QUEX_CONVERTER_STRING_DEF_BACKUP(FROM, TO)    __QUEX_CONVERTER_STRING_DEF(FROM, TO)
    405 #define __QUEX_CONVERTER_CHAR_BACKUP(FROM, TO)        QUEX_FUNCTION(FROM ## _to_ ## TO ## _character)
    406 #define __QUEX_CONVERTER_STRING_BACKUP(FROM, TO)      QUEX_FUNCTION(FROM ## _to_ ## TO)
    407 #define QUEX_CONVERTER_CHAR_BACKUP(FROM, TO)          __QUEX_CONVERTER_CHAR(FROM, TO)
    408 #define QUEX_CONVERTER_STRING_BACKUP(FROM, TO)        __QUEX_CONVERTER_STRING(FROM, TO)
    409 
    410 #if defined (QUEX_OPTION_ASSERTS) 
    411 #   define __QUEX_IF_ASSERT(X)  X
    412 #else
    413 #   define __QUEX_IF_ASSERT(X)  /* Ignore */
    414 #endif
    415 
    416 #ifdef QUEX_OPTION_STRING_ACCUMULATOR
    417 #    define __QUEX_IF_STRING_ACCUMULATOR(X) X
    418 #else
    419 #    define __QUEX_IF_STRING_ACCUMULATOR(X) /* No operation */
    420 #endif
    421 #ifdef QUEX_OPTION_POST_CATEGORIZER
    422 #    define __QUEX_IF_POST_CATEGORIZER(X) X
    423 #else
    424 #    define __QUEX_IF_POST_CATEGORIZER(X) /* No operation */
    425 #endif
    426 #ifdef  QUEX_OPTION_INCLUDE_STACK
    427 #    define __QUEX_IF_INCLUDE_STACK(X) X
    428 #else
    429 #    define __QUEX_IF_INCLUDE_STACK(X) /* No operation */
    430 #endif
    431 
    432 /* If the user does not define a class declaration epilog, 
    433  * define it as empty.                                        */
    434 #ifndef     QUEX_SETTING_USER_CLASS_DECLARATION_EPILOG
    435 #    define QUEX_SETTING_USER_CLASS_DECLARATION_EPILOG
    436 #endif