pp_lex_guts.yy.cc File Reference

C++ preprocessor lexical analyser. More...

Go to the source code of this file.

Classes

struct  yy_buffer_state
struct  yy_trans_info

Defines

#define YY_INT_ALIGNED   short int
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION   2
#define YY_FLEX_MINOR_VERSION   5
#define YY_FLEX_SUBMINOR_VERSION   33
#define FLEX_BETA
#define INT8_MIN   (-128)
#define INT16_MIN   (-32767-1)
#define INT32_MIN   (-2147483647-1)
#define INT8_MAX   (127)
#define INT16_MAX   (32767)
#define INT32_MAX   (2147483647)
#define UINT8_MAX   (255U)
#define UINT16_MAX   (65535U)
#define UINT32_MAX   (4294967295U)
#define yyconst
#define YY_NULL   0
#define YY_SC_TO_UI(c)   ((unsigned int) (unsigned char) c)
#define BEGIN   (yy_start) = 1 + 2 *
#define YY_START   (((yy_start) - 1) / 2)
#define YYSTATE   YY_START
#define YY_STATE_EOF(state)   (YY_END_OF_BUFFER + state + 1)
#define YY_NEW_FILE   yyrestart(yyin )
#define YY_END_OF_BUFFER_CHAR   0
#define YY_BUF_SIZE   16384
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
#define EOB_ACT_CONTINUE_SCAN   0
#define EOB_ACT_END_OF_FILE   1
#define EOB_ACT_LAST_MATCH   2
#define YY_LESS_LINENO(n)
#define yyless(n)
#define unput(c)   yyunput( c, (yytext_ptr) )
#define YY_BUFFER_NEW   0
#define YY_BUFFER_NORMAL   1
#define YY_BUFFER_EOF_PENDING   2
#define YY_CURRENT_BUFFER
#define YY_CURRENT_BUFFER_LVALUE   (yy_buffer_stack)[(yy_buffer_stack_top)]
#define YY_FLUSH_BUFFER   yy_flush_buffer(YY_CURRENT_BUFFER )
#define yy_new_buffer   yy_create_buffer
#define yy_set_interactive(is_interactive)
#define yy_set_bol(at_bol)
#define YY_AT_BOL()   (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
#define yywrap(n)   1
#define YY_SKIP_YYWRAP
#define yytext_ptr   yytext
#define YY_DO_BEFORE_ACTION
#define YY_NUM_RULES   180
#define YY_END_OF_BUFFER   181
#define REJECT   reject_used_but_not_detected
#define yymore()   yymore_used_but_not_detected
#define YY_MORE_ADJ   0
#define YY_RESTORE_YY_MORE_OFFSET
#define ECHO   lassert2(false, "ECHO should not be used.")
 avoiding implicit rules
#define yyterminate()   return pp_token::create(LOCGET,pp_token::TOK_FILE_END)
 Handles encountering real EOF, which should not happen, formal definition.
#define YY_USER_ACTION
 Defines action triggered for each rule.
#define YY_INPUT(buf, result, max_size)
 Defines flex input function.
#define YY_DECL   ptr<pp_token> lexer_parse(bool line_start)
 Defines prototype for flex parser function.
#define ADVANCE   current_utb->advance(yyleng)
 Skips all tokens comprising the current rule.
#define SKIP(num)   current_utb->advance(num)
 Skips supplied count of tokens.
#define PEEK   current_utb->peek_front()
 Returns next token from buffer.
#define LOCSAVE   current_ppl->location_save()
 Saves location of the next token in buffer.
#define LOCGET   current_ppl->location_create()
 Returns the saved location.
#define EXTRACT_UNTIL(stop)   current_utb->extract_until(stop)
 Extracts ordinary sequence until stop character from buffer.
#define EXTRACT_ORDINARY(len)   current_utb->extract_ordinary(len)
 Extracts ordinary sequence of length len from buffer.
#define EXTRACT_UCN_IDENTIFIER(len)   current_utb->extract_simple_ucn(len,true)
 Extracts identifier with ucn of length len from buffer.
#define EXTRACT_UCN_NUMBER(len)   current_utb->extract_simple_ucn(len,false)
 Extracts number with ucn of length len from buffer.
#define EXTRACT_BAD_IDENTIFIER(len)   current_utb->extract_invalid_ucn(len,true)
 Extracts identifier with bad ucn of length len from buffer.
#define EXTRACT_BAD_NUMBER(len)   current_utb->extract_invalid_ucn(len,false)
 Extracts number with bad ucn of length len from buffer.
#define EXTRACT_UCN_LITERAL(len)   current_utb->extract_ucn_literal(len)
 Extracts literal of length len from buffer.
#define EXTRACT_BAD_LITERAL(len)   current_utb->extract_bad_literal(len)
 Extracts literal with invalid escape sequences of length len from buffer.
#define YY_NO_INPUT   1
#define INITIAL   0
#define include   1
#define line   2
#define directive   3
#define directive_name   4
#define YY_EXTRA_TYPE   void *
#define YY_READ_BUF_SIZE   8192
#define YY_START_STACK_INCR   25
#define YY_FATAL_ERROR(msg)   yy_fatal_error( msg )
#define YY_BREAK   break;
#define YY_RULE_SETUP   YY_USER_ACTION
#define YY_EXIT_FAILURE   2
#define yyless(n)
#define YYTABLES_NAME   "yytables"

Typedefs

typedef signed char flex_int8_t
typedef short int flex_int16_t
typedef int flex_int32_t
typedef unsigned char flex_uint8_t
typedef unsigned short int flex_uint16_t
typedef unsigned int flex_uint32_t
typedef yy_buffer_stateYY_BUFFER_STATE
typedef unsigned int yy_size_t
typedef unsigned char YY_CHAR
typedef int yy_state_type

Functions

void yyrestart (FILE *input_file)
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer)
YY_BUFFER_STATE yy_create_buffer (FILE *file, int size)
void yy_delete_buffer (YY_BUFFER_STATE b)
void yy_flush_buffer (YY_BUFFER_STATE b)
void yypush_buffer_state (YY_BUFFER_STATE new_buffer)
void yypop_buffer_state (void)
static void yyensure_buffer_stack (void)
static void yy_load_buffer_state (void)
static void yy_init_buffer (YY_BUFFER_STATE b, FILE *file)
YY_BUFFER_STATE yy_scan_buffer (char *base, yy_size_t size)
YY_BUFFER_STATE yy_scan_string (char *yy_str)
YY_BUFFER_STATE yy_scan_bytes (char *bytes, int len)
void * yyalloc (yy_size_t)
void * yyrealloc (void *, yy_size_t)
void yyfree (void *)
static yy_state_type yy_get_previous_state (void)
static yy_state_type yy_try_NUL_trans (yy_state_type current_state)
static int yy_get_next_buffer (void)
static void yy_fatal_error (char msg[])
lstring escape_nonprintable (const lstring &inp)
ptr< pp_token > lexer_parse (bool line_start)
static int yy_init_globals (void)
static void yy_fatal_error (char *msg)
int yyget_lineno (void)
FILE * yyget_in (void)
FILE * yyget_out (void)
int yyget_leng (void)
char * yyget_text (void)
void yyset_lineno (int line_number)
void yyset_in (FILE *in_str)
void yyset_out (FILE *out_str)
int yyget_debug (void)
void yyset_debug (int bdebug)
int yylex_destroy (void)

Variables

int yyleng
FILE * yyin
FILE * yyout
static size_t yy_buffer_stack_top = 0
static size_t yy_buffer_stack_max = 0
static YY_BUFFER_STATEyy_buffer_stack = 0
static char yy_hold_char
static int yy_n_chars
int yyleng
static char * yy_c_buf_p = (char *) 0
static int yy_init = 0
static int yy_start = 0
static int yy_did_buffer_switch_on_eof
FILE * yyin = (FILE *) 0
FILE * yyout = (FILE *) 0
int yylineno
int yylineno = 1
char * yytext
static flex_int16_t yy_accept [1094]
static flex_int32_t yy_ec [256]
static flex_int32_t yy_meta [100]
static flex_int16_t yy_base [1204]
static flex_int16_t yy_def [1204]
static flex_int16_t yy_nxt [15282]
static flex_int16_t yy_chk [15282]
static yy_state_type yy_last_accepting_state
static char * yy_last_accepting_cpos
int yy_flex_debug
int yy_flex_debug = 0
char * yytext
static pp_lex * current_ppl
 Current wrapper class, which will be live when used.
static ucn_token_buffer * current_utb
 Current ucn token buffer, which will be live when used.


Detailed Description

C++ preprocessor lexical analyser.

Performs lexical analysis of incoming text, forming preprocessor tokens. Should only be called by pp_lex objects, which ensure proper connection.

Because flex can only handle 7 bit input, ucn tokens are stored outside in an synchronized buffer and flex processes only the corresponding character classes: end of file, translated ucn and each basic source character is represented in its own class. Basic source characters character classes values are encoded in ASCII, independently on the character set flex operates in.

Author:
pt

Definition in file pp_lex_guts.yy.cc.


Define Documentation

#define ADVANCE   current_utb->advance(yyleng)

Skips all tokens comprising the current rule.

Definition at line 4314 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define BEGIN   (yy_start) = 1 + 2 *

Definition at line 112 of file pp_lex_guts.yy.cc.

#define directive   3

Definition at line 4389 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse(), and lestes::lang::cplus::lex::evaluator::process_directive().

#define directive_name   4

Definition at line 4390 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define ECHO   lassert2(false, "ECHO should not be used.")

avoiding implicit rules

Definition at line 4266 of file pp_lex_guts.yy.cc.

#define EOB_ACT_CONTINUE_SCAN   0

Definition at line 147 of file pp_lex_guts.yy.cc.

#define EOB_ACT_END_OF_FILE   1

Definition at line 148 of file pp_lex_guts.yy.cc.

#define EOB_ACT_LAST_MATCH   2

Definition at line 149 of file pp_lex_guts.yy.cc.

#define EXTRACT_BAD_IDENTIFIER ( len   )     current_utb->extract_invalid_ucn(len,true)

Extracts identifier with bad ucn of length len from buffer.

Definition at line 4332 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define EXTRACT_BAD_LITERAL ( len   )     current_utb->extract_bad_literal(len)

Extracts literal with invalid escape sequences of length len from buffer.

Definition at line 4338 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define EXTRACT_BAD_NUMBER ( len   )     current_utb->extract_invalid_ucn(len,false)

Extracts number with bad ucn of length len from buffer.

Definition at line 4334 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define EXTRACT_ORDINARY ( len   )     current_utb->extract_ordinary(len)

Extracts ordinary sequence of length len from buffer.

Definition at line 4326 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define EXTRACT_UCN_IDENTIFIER ( len   )     current_utb->extract_simple_ucn(len,true)

Extracts identifier with ucn of length len from buffer.

Definition at line 4328 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define EXTRACT_UCN_LITERAL ( len   )     current_utb->extract_ucn_literal(len)

Extracts literal of length len from buffer.

Definition at line 4336 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define EXTRACT_UCN_NUMBER ( len   )     current_utb->extract_simple_ucn(len,false)

Extracts number with ucn of length len from buffer.

Definition at line 4330 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define EXTRACT_UNTIL ( stop   )     current_utb->extract_until(stop)

Extracts ordinary sequence until stop character from buffer.

Definition at line 4324 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define FLEX_BETA

Definition at line 13 of file pp_lex_guts.yy.cc.

#define FLEX_SCANNER

Definition at line 8 of file pp_lex_guts.yy.cc.

#define include   1

Definition at line 4387 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define INITIAL   0

Definition at line 4386 of file pp_lex_guts.yy.cc.

#define INT16_MAX   (32767)

Definition at line 61 of file pp_lex_guts.yy.cc.

#define INT16_MIN   (-32767-1)

Definition at line 52 of file pp_lex_guts.yy.cc.

#define INT32_MAX   (2147483647)

Definition at line 64 of file pp_lex_guts.yy.cc.

#define INT32_MIN   (-2147483647-1)

Definition at line 55 of file pp_lex_guts.yy.cc.

#define INT8_MAX   (127)

Definition at line 58 of file pp_lex_guts.yy.cc.

#define INT8_MIN   (-128)

Definition at line 49 of file pp_lex_guts.yy.cc.

#define line   2

Definition at line 4388 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define LOCGET   current_ppl->location_create()

Returns the saved location.

Definition at line 4322 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define LOCSAVE   current_ppl->location_save()

Saves location of the next token in buffer.

Definition at line 4320 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define PEEK   current_utb->peek_front()

Returns next token from buffer.

Definition at line 4318 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define REJECT   reject_used_but_not_detected

Definition at line 4192 of file pp_lex_guts.yy.cc.

#define SKIP ( num   )     current_utb->advance(num)

Skips supplied count of tokens.

Definition at line 4316 of file pp_lex_guts.yy.cc.

Referenced by lexer_parse().

#define UINT16_MAX   (65535U)

Definition at line 70 of file pp_lex_guts.yy.cc.

#define UINT32_MAX   (4294967295U)

Definition at line 73 of file pp_lex_guts.yy.cc.

#define UINT8_MAX   (255U)

Definition at line 67 of file pp_lex_guts.yy.cc.

#define unput (  )     yyunput( c, (yytext_ptr) )

Definition at line 167 of file pp_lex_guts.yy.cc.

 
#define YY_AT_BOL (  )     (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

Definition at line 323 of file pp_lex_guts.yy.cc.

#define YY_BREAK   break;

Definition at line 4525 of file pp_lex_guts.yy.cc.

#define YY_BUF_SIZE   16384

Definition at line 131 of file pp_lex_guts.yy.cc.

#define YY_BUFFER_EOF_PENDING   2

Definition at line 239 of file pp_lex_guts.yy.cc.

#define YY_BUFFER_NEW   0

Definition at line 227 of file pp_lex_guts.yy.cc.

#define YY_BUFFER_NORMAL   1

Definition at line 228 of file pp_lex_guts.yy.cc.

#define YY_CURRENT_BUFFER

Value:

Definition at line 255 of file pp_lex_guts.yy.cc.

#define YY_CURRENT_BUFFER_LVALUE   (yy_buffer_stack)[(yy_buffer_stack_top)]

Definition at line 262 of file pp_lex_guts.yy.cc.

#define YY_DECL   ptr<pp_token> lexer_parse(bool line_start)

Defines prototype for flex parser function.

Definition at line 4311 of file pp_lex_guts.yy.cc.

#define YY_DO_BEFORE_ACTION

Value:

(yytext_ptr) = yy_bp; \
        yyleng = (size_t) (yy_cp - yy_bp); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;

Definition at line 351 of file pp_lex_guts.yy.cc.

#define YY_END_OF_BUFFER   181

Definition at line 359 of file pp_lex_guts.yy.cc.

#define YY_END_OF_BUFFER_CHAR   0

Definition at line 127 of file pp_lex_guts.yy.cc.

#define YY_EXIT_FAILURE   2

Definition at line 7394 of file pp_lex_guts.yy.cc.

#define YY_EXTRA_TYPE   void *

Definition at line 4401 of file pp_lex_guts.yy.cc.

#define YY_FATAL_ERROR ( msg   )     yy_fatal_error( msg )

Definition at line 4500 of file pp_lex_guts.yy.cc.

#define YY_FLEX_MAJOR_VERSION   2

Definition at line 9 of file pp_lex_guts.yy.cc.

#define YY_FLEX_MINOR_VERSION   5

Definition at line 10 of file pp_lex_guts.yy.cc.

#define YY_FLEX_SUBMINOR_VERSION   33

Definition at line 11 of file pp_lex_guts.yy.cc.

#define YY_FLUSH_BUFFER   yy_flush_buffer(YY_CURRENT_BUFFER )

Definition at line 291 of file pp_lex_guts.yy.cc.

#define YY_INPUT ( buf,
result,
max_size   ) 

Value:

{ \
        result = current_ppl->yy_input(buf,max_size); \
}
Defines flex input function.

Definition at line 4305 of file pp_lex_guts.yy.cc.

#define YY_INT_ALIGNED   short int

Definition at line 4 of file pp_lex_guts.yy.cc.

#define YY_LESS_LINENO (  ) 

Definition at line 151 of file pp_lex_guts.yy.cc.

#define YY_MORE_ADJ   0

Definition at line 4194 of file pp_lex_guts.yy.cc.

#define yy_new_buffer   yy_create_buffer

Definition at line 301 of file pp_lex_guts.yy.cc.

#define YY_NEW_FILE   yyrestart(yyin )

Definition at line 125 of file pp_lex_guts.yy.cc.

#define YY_NO_INPUT   1

Definition at line 4348 of file pp_lex_guts.yy.cc.

#define YY_NULL   0

Definition at line 99 of file pp_lex_guts.yy.cc.

#define YY_NUM_RULES   180

Definition at line 358 of file pp_lex_guts.yy.cc.

#define YY_READ_BUF_SIZE   8192

Definition at line 4438 of file pp_lex_guts.yy.cc.

#define YY_RESTORE_YY_MORE_OFFSET

Definition at line 4195 of file pp_lex_guts.yy.cc.

#define YY_RULE_SETUP   YY_USER_ACTION

Definition at line 4528 of file pp_lex_guts.yy.cc.

#define YY_SC_TO_UI (  )     ((unsigned int) (unsigned char) c)

Definition at line 106 of file pp_lex_guts.yy.cc.

#define yy_set_bol ( at_bol   ) 

Value:

Definition at line 313 of file pp_lex_guts.yy.cc.

#define yy_set_interactive ( is_interactive   ) 

Value:

{ \
        if ( ! YY_CURRENT_BUFFER ){ \
        yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        }

Definition at line 303 of file pp_lex_guts.yy.cc.

#define YY_SKIP_YYWRAP

Definition at line 328 of file pp_lex_guts.yy.cc.

#define YY_START   (((yy_start) - 1) / 2)

Definition at line 118 of file pp_lex_guts.yy.cc.

#define YY_START_STACK_INCR   25

Definition at line 4495 of file pp_lex_guts.yy.cc.

#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))

Definition at line 136 of file pp_lex_guts.yy.cc.

#define YY_STATE_EOF ( state   )     (YY_END_OF_BUFFER + state + 1)

Definition at line 122 of file pp_lex_guts.yy.cc.

#define YY_USER_ACTION

Value:

{ \
        /* avoid the warning: address requested for `yy_act', which is declared `register' */ \
        int copy_yy_act = yy_act ; \
        pp_lex_guts_logger << "Rule #" << copy_yy_act << " matched `" << escape_nonprintable(yytext) << "'\n" << msg::eolog; \
}
Defines action triggered for each rule.

Definition at line 4297 of file pp_lex_guts.yy.cc.

#define yyconst

Definition at line 95 of file pp_lex_guts.yy.cc.

#define yyless (  ) 

Value:

do \
                { \
                /* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
                yytext[yyleng] = (yy_hold_char); \
                (yy_c_buf_p) = yytext + yyless_macro_arg; \
                (yy_hold_char) = *(yy_c_buf_p); \
                *(yy_c_buf_p) = '\0'; \
                yyleng = yyless_macro_arg; \
                } \
        while ( 0 )

Definition at line 7407 of file pp_lex_guts.yy.cc.

#define yyless (  ) 

Value:

do \
                { \
                /* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
                *yy_cp = (yy_hold_char); \
                YY_RESTORE_YY_MORE_OFFSET \
                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                } \
        while ( 0 )

Definition at line 7407 of file pp_lex_guts.yy.cc.

 
#define yymore (  )     yymore_used_but_not_detected

Definition at line 4193 of file pp_lex_guts.yy.cc.

#define YYSTATE   YY_START

Definition at line 119 of file pp_lex_guts.yy.cc.

#define YYTABLES_NAME   "yytables"

Definition at line 7597 of file pp_lex_guts.yy.cc.

 
#define yyterminate (  )     return pp_token::create(LOCGET,pp_token::TOK_FILE_END)

Handles encountering real EOF, which should not happen, formal definition.

Definition at line 4279 of file pp_lex_guts.yy.cc.

#define yytext_ptr   yytext

Definition at line 341 of file pp_lex_guts.yy.cc.

#define yywrap (  )     1

Definition at line 327 of file pp_lex_guts.yy.cc.


Typedef Documentation

typedef short int flex_int16_t

Definition at line 40 of file pp_lex_guts.yy.cc.

typedef int flex_int32_t

Definition at line 41 of file pp_lex_guts.yy.cc.

typedef signed char flex_int8_t

Definition at line 39 of file pp_lex_guts.yy.cc.

typedef unsigned short int flex_uint16_t

Definition at line 43 of file pp_lex_guts.yy.cc.

typedef unsigned int flex_uint32_t

Definition at line 44 of file pp_lex_guts.yy.cc.

typedef unsigned char flex_uint8_t

Definition at line 42 of file pp_lex_guts.yy.cc.

typedef struct yy_buffer_state* YY_BUFFER_STATE

Definition at line 140 of file pp_lex_guts.yy.cc.

typedef unsigned char YY_CHAR

Definition at line 330 of file pp_lex_guts.yy.cc.

typedef unsigned int yy_size_t

Definition at line 176 of file pp_lex_guts.yy.cc.

typedef int yy_state_type

Definition at line 334 of file pp_lex_guts.yy.cc.


Function Documentation

lstring escape_nonprintable ( const lstring &  inp  ) 

Definition at line 4281 of file pp_lex_guts.yy.cc.

04282 {
04283    ::std::stringbuf sb;
04284    ::std::ostream os(&sb);
04285    
04286    for (lstring::const_iterator it = inp.begin(), end = inp.end(); it != end; ++it) {
04287       char c = *it;
04288       if (isprint(c)) 
04289          os << c;
04290       else
04291          os << "\\x" << ::std::hex << ::std::setfill('0') << ::std::setw(2) << (ulint)c;
04292    }
04293    return sb.str();
04294 }

ptr< pp_token > lexer_parse ( bool  line_start  ) 

The main scanner function which does all the work.

Definition at line 4533 of file pp_lex_guts.yy.cc.

References ADVANCE, BEGIN, directive, directive_name, ECHO, lestes::lang::cplus::lex::empty_character_constant(), EOB_ACT_CONTINUE_SCAN, EOB_ACT_END_OF_FILE, EOB_ACT_LAST_MATCH, lestes::msg::eolog, EXTRACT_BAD_IDENTIFIER, EXTRACT_BAD_LITERAL, EXTRACT_BAD_NUMBER, EXTRACT_ORDINARY, EXTRACT_UCN_IDENTIFIER, EXTRACT_UCN_LITERAL, EXTRACT_UCN_NUMBER, EXTRACT_UNTIL, include, INITIAL, line, loc, LOCGET, LOCSAVE, lestes::lang::cplus::lex::missing_terminating_dquote(), lestes::lang::cplus::lex::missing_terminating_quote(), PEEK, lestes::report(), SKIP, TOK_AMP, TOK_AMP_AMP, TOK_AMP_EQ, TOK_ASM, TOK_AUTO, TOK_BOOL, TOK_BREAK, TOK_CASE, TOK_CATCH, TOK_CHAR, TOK_CLASS, TOK_COLON, TOK_COLON_COLON, TOK_COMMA, TOK_CONST, TOK_CONST_CAST, TOK_CONTINUE, TOK_DEFAULT, TOK_DELETE, TOK_DO, TOK_DOT, TOK_DOT_DOT_DOT, TOK_DOT_STAR, TOK_DOUBLE, TOK_DYNAMIC_CAST, TOK_ELSE, TOK_ENUM, TOK_EQ, TOK_EQ_EQ, TOK_ERROR, TOK_EXPLICIT, TOK_EXPORT, TOK_EXTERN, TOK_FLOAT, TOK_FOR, TOK_FRIEND, TOK_GOTO, TOK_GT, TOK_GT_EQ, TOK_GT_GT, TOK_GT_GT_EQ, TOK_HAT, TOK_HAT_EQ, TOK_IDENT, TOK_IF, TOK_INLINE, TOK_INT, TOK_LEFT_BRACE, TOK_LEFT_BRACKET, TOK_LEFT_PAR, TOK_LONG, TOK_LT, TOK_LT_EQ, TOK_LT_LT, TOK_LT_LT_EQ, TOK_MINUS, TOK_MINUS_EQ, TOK_MINUS_GT, TOK_MINUS_GT_STAR, TOK_MINUS_MINUS, TOK_MUTABLE, TOK_NAMESPACE, TOK_NEW, TOK_OPERATOR, TOK_PERCENT, TOK_PERCENT_EQ, TOK_PLUS, TOK_PLUS_EQ, TOK_PLUS_PLUS, TOK_PRIVATE, TOK_PROTECTED, TOK_PUBLIC, TOK_QMARK, TOK_REGISTER, TOK_REINTERPRET_CAST, TOK_RETURN, TOK_RIGHT_BRACE, TOK_RIGHT_BRACKET, TOK_RIGHT_PAR, TOK_SEMICOLON, TOK_SHORT, TOK_SIGNED, TOK_SIZEOF, TOK_SLASH, TOK_SLASH_EQ, TOK_STAR, TOK_STAR_EQ, TOK_STATIC, TOK_STATIC_CAST, TOK_STRUCT, TOK_SWITCH, TOK_TEMPLATE, TOK_THIS, TOK_THROW, TOK_TILDE, TOK_TRY, TOK_TYPEDEF, TOK_TYPEID, TOK_TYPENAME, TOK_UNION, TOK_UNSIGNED, TOK_USING, TOK_VBAR, TOK_VBAR_EQ, TOK_VBAR_VBAR, TOK_VIRTUAL, TOK_VOID, TOK_VOLATILE, TOK_WHILE, lestes::lang::cplus::lex::unterminated_comment(), YY_BREAK, YY_BUF_SIZE, YY_BUFFER_NEW, YY_BUFFER_NORMAL, yy_c_buf_p, yy_create_buffer(), YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, yy_did_buffer_switch_on_eof, YY_DO_BEFORE_ACTION, YY_END_OF_BUFFER, YY_FATAL_ERROR, yy_get_next_buffer(), yy_get_previous_state(), yy_hold_char, yy_init, yy_load_buffer_state(), YY_MORE_ADJ, yy_n_chars, YY_NEW_FILE, YY_RESTORE_YY_MORE_OFFSET, YY_RULE_SETUP, YY_SC_TO_UI, YY_START, yy_start, YY_STATE_EOF, yy_try_NUL_trans(), yyensure_buffer_stack(), yyin, yyleng, yyless, yyout, yyterminate, yytext_ptr, and yywrap.

Referenced by lestes::lang::cplus::lex::pp_lex::read().

04534 {
04535         register yy_state_type yy_current_state;
04536         register char *yy_cp, *yy_bp;
04537         register int yy_act;
04538     
04539    if (line_start)
04540       BEGIN(directive);
04541 
04542         if ( !(yy_init) )
04543                 {
04544                 (yy_init) = 1;
04545 
04546 #ifdef YY_USER_INIT
04547                 YY_USER_INIT;
04548 #endif
04549 
04550                 if ( ! (yy_start) )
04551                         (yy_start) = 1; /* first start state */
04552 
04553                 if ( ! yyin )
04554                         yyin = stdin;
04555 
04556                 if ( ! yyout )
04557                         yyout = stdout;
04558 
04559                 if ( ! YY_CURRENT_BUFFER ) {
04560                         yyensure_buffer_stack ();
04561                         YY_CURRENT_BUFFER_LVALUE =
04562                                 yy_create_buffer(yyin,YY_BUF_SIZE );
04563                 }
04564 
04565                 yy_load_buffer_state( );
04566                 }
04567 
04568         while ( 1 )             /* loops until end-of-file is reached */
04569                 {
04570                 yy_cp = (yy_c_buf_p);
04571 
04572                 /* Support of yytext. */
04573                 *yy_cp = (yy_hold_char);
04574 
04575                 /* yy_bp points to the position in yy_ch_buf of the start of
04576                  * the current run.
04577                  */
04578                 yy_bp = yy_cp;
04579 
04580                 yy_current_state = (yy_start);
04581 yy_match:
04582                 do
04583                         {
04584                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
04585                         if ( yy_accept[yy_current_state] )
04586                                 {
04587                                 (yy_last_accepting_state) = yy_current_state;
04588                                 (yy_last_accepting_cpos) = yy_cp;
04589                                 }
04590                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
04591                                 {
04592                                 yy_current_state = (int) yy_def[yy_current_state];
04593                                 if ( yy_current_state >= 1094 )
04594                                         yy_c = yy_meta[(unsigned int) yy_c];
04595                                 }
04596                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
04597                         ++yy_cp;
04598                         }
04599                 while ( yy_base[yy_current_state] != 15182 );
04600 
04601 yy_find_action:
04602                 yy_act = yy_accept[yy_current_state];
04603                 if ( yy_act == 0 )
04604                         { /* have to back up */
04605                         yy_cp = (yy_last_accepting_cpos);
04606                         yy_current_state = (yy_last_accepting_state);
04607                         yy_act = yy_accept[yy_current_state];
04608                         }
04609 
04610                 YY_DO_BEFORE_ACTION;
04611 
04612 do_action:      /* This label is used only to access EOF actions. */
04613 
04614                 switch ( yy_act )
04615         { /* beginning of action switch */
04616                         case 0: /* must back up */
04617                         /* undo the effects of YY_DO_BEFORE_ACTION */
04618                         *yy_cp = (yy_hold_char);
04619                         yy_cp = (yy_last_accepting_cpos);
04620                         yy_current_state = (yy_last_accepting_state);
04621                         goto yy_find_action;
04622 
04623 case 1:
04624 /* rule 1 can match eol */
04625 YY_RULE_SETUP
04626 {
04627    pp_lex_guts_logger << "line comment\n" << msg::eolog;
04628    
04629    LOCSAVE;
04630    /* leave newline in buffer */
04631         ulint len = yyleng - 1;
04632         yyless(len);
04633         SKIP(len);
04634         return pp_token::create(LOCGET,pp_token::TOK_BLANK);
04635 }
04636         YY_BREAK
04637 case 2:
04638 /* rule 2 can match eol */
04639 YY_RULE_SETUP
04640 {
04641    pp_lex_guts_logger << "long comment\n" << msg::eolog;
04642 
04643    LOCSAVE;
04644         ADVANCE;
04645         return pp_token::create(LOCGET,pp_token::TOK_BLANK);
04646 }
04647         YY_BREAK
04648 case 3:
04649 /* rule 3 can match eol */
04650 YY_RULE_SETUP
04651 {
04652    pp_lex_guts_logger << "unterminated long comment\n" << msg::eolog;
04653 
04654    LOCSAVE;
04655 
04656    /* leave the implicit new line and EOF in buffer */
04657         ulint len = yyleng - 2;
04658    yyless(len);
04659         SKIP(len);
04660 
04661    ptr<source_location> loc = LOCGET;
04662         
04663    /* error: eof within comment == unterminated comment */
04664         report << unterminated_comment << loc;
04665 
04666         return pp_token::create(loc,pp_token::TOK_BLANK);
04667 }
04668         YY_BREAK
04669 /* character literal without ucn escape sequences */
04670 case 4:
04671 YY_RULE_SETUP
04672 {
04673    pp_lex_guts_logger << "character literal without escaped ucn\n" << msg::eolog;
04674 
04675    LOCSAVE;
04676    /* the beginning quote */
04677         SKIP(1);
04678         ptr<token_value> tv(EXTRACT_ORDINARY(yyleng - 2));
04679    /* the ending quote */
04680         SKIP(1);
04681         return pp_token::create(LOCGET,pp_token::TOK_CHAR_LIT,tv);
04682 }
04683         YY_BREAK
04684 /* wide character literal without ucn escape sequences */
04685 case 5:
04686 YY_RULE_SETUP
04687 {
04688    pp_lex_guts_logger << "wide character literal without escaped ucn\n" << msg::eolog;
04689 
04690    LOCSAVE;
04691    /* the beginning L and quote */
04692         SKIP(2);
04693         ptr<token_value> tv(EXTRACT_ORDINARY(yyleng - 3));
04694    /* the ending quote */
04695         SKIP(1);
04696         return pp_token::create(LOCGET,pp_token::TOK_WCHAR_LIT,tv);
04697 }
04698         YY_BREAK
04699 /* character literal with ucn escape sequences */
04700 case 6:
04701 YY_RULE_SETUP
04702 {
04703    pp_lex_guts_logger << "character literal with escaped ucn\n" << msg::eolog;
04704 
04705    LOCSAVE;
04706    /* the beginning quote */
04707         SKIP(1);
04708         ptr<token_value> tv(EXTRACT_UCN_LITERAL(yyleng - 2));
04709    /* the ending quote */
04710         SKIP(1);
04711         return pp_token::create(LOCGET,pp_token::TOK_CHAR_LIT,tv);
04712 }
04713         YY_BREAK
04714 /* wide character literal with ucn escape sequences */
04715 case 7:
04716 YY_RULE_SETUP
04717 {
04718    pp_lex_guts_logger << "wide character literal with escaped ucn\n" << msg::eolog;
04719 
04720    LOCSAVE;
04721    /* the beginning L and quote */
04722         SKIP(2);
04723         ptr<token_value> tv(EXTRACT_UCN_LITERAL(yyleng - 3));
04724    /* the ending quote */
04725         SKIP(1);
04726         return pp_token::create(LOCGET,pp_token::TOK_WCHAR_LIT,tv);
04727 }
04728         YY_BREAK
04729 /* empty, malformed or unterminated character literal */
04730 case 8:
04731 /* rule 8 can match eol */
04732 YY_RULE_SETUP
04733 {
04734    pp_lex_guts_logger << "character literal with errors\n" << msg::eolog;
04735 
04736    LOCSAVE;
04737 
04738    ptr<source_location> loc = LOCGET;
04739    
04740    bool empty = false;
04741    /* the beginning quote */
04742         SKIP(1);
04743         ptr<token_value> tv;
04744    if (yyleng == 2) {
04745       /* empty character literal */
04746       report << empty_character_constant << loc;
04747       empty = true;
04748    } else {
04749       tv = EXTRACT_BAD_LITERAL(yyleng - 2);
04750       empty = tv->content_get().size() == 0;
04751    }
04752    
04753    if (empty) {
04754       /* make nonempty character literal */
04755       tv = token_value::create("\\0");
04756    }
04757 
04758    ptr<ucn_token> ut = PEEK;
04759    /* check ending quote */
04760    if (ut->type_get() == ucn_token::TOK_BASIC &&
04761          ut->value_get() == character::ascii_quote) {
04762       /* skip the quote */
04763            SKIP(1);
04764    } else {
04765       /* return the last character */
04766       yyless(yyleng - 1);
04767       /* missing terminating ' character */
04768       report << missing_terminating_quote << loc;
04769    }
04770 
04771         return pp_token::create(loc,pp_token::TOK_CHAR_LIT,tv);
04772 }
04773         YY_BREAK
04774 /* empty, malformed or unterminated wide character literal */
04775 case 9:
04776 /* rule 9 can match eol */
04777 YY_RULE_SETUP
04778 {
04779    pp_lex_guts_logger << "wide character literal with errors\n" << msg::eolog;
04780 
04781    LOCSAVE;
04782    ptr<source_location> loc = LOCGET;
04783 
04784    bool empty = false;
04785    /* the beginning L and quote */
04786         SKIP(2);
04787         ptr<token_value> tv;
04788    if (yyleng == 3) {
04789       /* empty character constant */
04790       report << empty_character_constant << loc;
04791       empty = true;
04792    } else {
04793       tv = EXTRACT_BAD_LITERAL(yyleng - 3);
04794       empty = tv->content_get().size() == 0;
04795    }
04796    
04797    if (empty) {
04798       /* make nonempty wide character literal */
04799       tv = token_value::create("\\0");
04800    }
04801 
04802    ptr<ucn_token> ut = PEEK;
04803    /* check ending quote */
04804    if (ut->type_get() == ucn_token::TOK_BASIC &&
04805          ut->value_get() == character::ascii_quote) {
04806       /* skip the quote */
04807            SKIP(1);
04808    } else {
04809       /* return the last character */
04810       yyless(yyleng - 1);
04811       /* missing terminating ' character */
04812       report << missing_terminating_quote << loc;
04813    }
04814 
04815         return pp_token::create(LOCGET,pp_token::TOK_WCHAR_LIT,tv);
04816 }
04817         YY_BREAK
04818 /* string literal without ucn escape sequences */
04819 case 10:
04820 YY_RULE_SETUP
04821 {
04822    pp_lex_guts_logger << "string literal without escaped ucn\n" << msg::eolog;
04823 
04824    LOCSAVE;
04825    /* the beginning dquote */
04826         SKIP(1);
04827         ptr<token_value> tv(EXTRACT_ORDINARY(yyleng - 2));
04828    /* the ending dquote */
04829         SKIP(1);
04830         return pp_token::create(LOCGET,pp_token::TOK_STRING_LIT,tv);
04831 }
04832         YY_BREAK
04833 /* wide string literal without ucn escape sequences */
04834 case 11:
04835 YY_RULE_SETUP
04836 {
04837    pp_lex_guts_logger << "wide string literal without escaped ucn\n" << msg::eolog;
04838 
04839    LOCSAVE;
04840    /* the beginning L and dquote */
04841         SKIP(2);
04842         ptr<token_value> tv(EXTRACT_ORDINARY(yyleng - 3));
04843    /* the ending dquote */
04844         SKIP(1);
04845         return pp_token::create(LOCGET,pp_token::TOK_WSTRING_LIT,tv);
04846 }
04847         YY_BREAK
04848 /* string literal with ucn escape sequences */
04849 case 12:
04850 YY_RULE_SETUP
04851 {
04852    pp_lex_guts_logger << "string literal with escaped ucn\n" << msg::eolog;
04853 
04854    LOCSAVE;
04855    /* the beginning dquote */
04856         SKIP(1);
04857         ptr<token_value> tv(EXTRACT_UCN_LITERAL(yyleng - 2));
04858    /* the ending dquote */
04859         SKIP(1);
04860         return pp_token::create(LOCGET,pp_token::TOK_STRING_LIT,tv);
04861 }
04862         YY_BREAK
04863 /* wide string literal with ucn escape sequences */
04864 case 13:
04865 YY_RULE_SETUP
04866 {
04867    pp_lex_guts_logger << "wide string literal with escaped ucn\n" << msg::eolog;
04868 
04869    LOCSAVE;
04870    /* the beginning L and dquote */
04871         SKIP(2);
04872         ptr<token_value> tv(EXTRACT_UCN_LITERAL(yyleng - 3));
04873    /* the ending dquote */
04874         SKIP(1);
04875         return pp_token::create(LOCGET,pp_token::TOK_WSTRING_LIT,tv);
04876 }
04877         YY_BREAK
04878 /* malformed or unterminated string literal */
04879 case 14:
04880 /* rule 14 can match eol */
04881 YY_RULE_SETUP
04882 {
04883    pp_lex_guts_logger << "wide string literal with errors\n" << msg::eolog;
04884 
04885    LOCSAVE;
04886    ptr<source_location> loc = LOCGET;
04887 
04888    /* the beginning dquote */
04889         SKIP(1);
04890         ptr<token_value> tv(EXTRACT_BAD_LITERAL(yyleng - 2));
04891 
04892    ptr<ucn_token> ut = PEEK;
04893    /* check ending dquote */
04894    if (ut->type_get() == ucn_token::TOK_BASIC &&
04895          ut->value_get() == character::ascii_dquote) {
04896       /* skip the dquote */
04897            SKIP(1);
04898    } else {
04899       /* return the last character */
04900       yyless(yyleng - 1);
04901       /* missing terminating " character */
04902       report << missing_terminating_dquote << loc;
04903    }
04904 
04905         return pp_token::create(loc,pp_token::TOK_STRING_LIT,tv);
04906 }
04907         YY_BREAK
04908 /* malformed or unterminated wide string literal */
04909 case 15:
04910 /* rule 15 can match eol */
04911 YY_RULE_SETUP
04912 {
04913    pp_lex_guts_logger << "wide string literal with errors\n" << msg::eolog;
04914 
04915    LOCSAVE;
04916    ptr<source_location> loc = LOCGET;
04917    
04918    /* the beginning L and dquote */
04919         SKIP(2);
04920         ptr<token_value> tv(EXTRACT_BAD_LITERAL(yyleng - 3));
04921 
04922    ptr<ucn_token> ut = PEEK;
04923    /* check ending dquote */
04924    if (ut->type_get() == ucn_token::TOK_BASIC &&
04925          ut->value_get() == character::ascii_dquote) {
04926       /* skip the dquote */
04927            SKIP(1);
04928    } else {
04929       /* return the last character */
04930       yyless(yyleng - 1);
04931       /* missing terminating " character */
04932       report << missing_terminating_dquote << loc;
04933    }
04934 
04935         return pp_token::create(loc,pp_token::TOK_WSTRING_LIT,tv);
04936 }
04937         YY_BREAK
04938 case 16:
04939 YY_RULE_SETUP
04940 {
04941    pp_lex_guts_logger << "blanks\n" << msg::eolog;
04942 
04943         LOCSAVE;
04944         ADVANCE;
04945         return pp_token::create(LOCGET,pp_token::TOK_BLANK);
04946 }
04947         YY_BREAK
04948 case 17:
04949 /* rule 17 can match eol */
04950 YY_RULE_SETUP
04951 {
04952    pp_lex_guts_logger << "new line\n" << msg::eolog;
04953 
04954         LOCSAVE;
04955         ADVANCE;
04956         return pp_token::create(LOCGET,pp_token::TOK_LINE_END);
04957 }
04958         YY_BREAK
04959 case 18:
04960 YY_RULE_SETUP
04961 {
04962         pp_lex_guts_logger << "left_bracket\n" << msg::eolog;
04963 
04964         LOCSAVE;
04965         ADVANCE;
04966         return pp_token::create(LOCGET,pp_token::TOK_LEFT_BRACKET);
04967 }
04968         YY_BREAK
04969 case 19:
04970 YY_RULE_SETUP
04971 {
04972         pp_lex_guts_logger << "left_bracket\n" << msg::eolog;
04973 
04974         LOCSAVE;
04975         ADVANCE;
04976         return pp_token::create_alternative(LOCGET,pp_token::TOK_LEFT_BRACKET);
04977 }
04978         YY_BREAK
04979 case 20:
04980 YY_RULE_SETUP
04981 {
04982         pp_lex_guts_logger << "right_bracket\n" << msg::eolog;
04983 
04984         LOCSAVE;
04985         ADVANCE;
04986         return pp_token::create(LOCGET,pp_token::TOK_RIGHT_BRACKET);
04987 }
04988         YY_BREAK
04989 case 21:
04990 YY_RULE_SETUP
04991 {
04992         pp_lex_guts_logger << "right_bracket\n" << msg::eolog;
04993 
04994         LOCSAVE;
04995         ADVANCE;
04996         return pp_token::create_alternative(LOCGET,pp_token::TOK_RIGHT_BRACKET);
04997 }
04998         YY_BREAK
04999 case 22:
05000 YY_RULE_SETUP
05001 {
05002         pp_lex_guts_logger << "left_brace\n" << msg::eolog;
05003 
05004         LOCSAVE;
05005         ADVANCE;
05006         return pp_token::create(LOCGET,pp_token::TOK_LEFT_BRACE);
05007 }
05008         YY_BREAK
05009 case 23:
05010 YY_RULE_SETUP
05011 {
05012         pp_lex_guts_logger << "left_brace\n" << msg::eolog;
05013 
05014         LOCSAVE;
05015         ADVANCE;
05016         return pp_token::create_alternative(LOCGET,pp_token::TOK_LEFT_BRACE);
05017 }
05018         YY_BREAK
05019 case 24:
05020 YY_RULE_SETUP
05021 {
05022         pp_lex_guts_logger << "right_brace\n" << msg::eolog;
05023 
05024         LOCSAVE;
05025         ADVANCE;
05026         return pp_token::create(LOCGET,pp_token::TOK_RIGHT_BRACE);
05027 }
05028         YY_BREAK
05029 case 25:
05030 YY_RULE_SETUP
05031 {
05032         pp_lex_guts_logger << "right_brace\n" << msg::eolog;
05033 
05034         LOCSAVE;
05035         ADVANCE;
05036         return pp_token::create_alternative(LOCGET,pp_token::TOK_RIGHT_BRACE);
05037 }
05038         YY_BREAK
05039 case 26:
05040 YY_RULE_SETUP
05041 {
05042         pp_lex_guts_logger << "hash\n" << msg::eolog;
05043 
05044         LOCSAVE;
05045         ADVANCE;
05046         return pp_token::create(LOCGET,pp_token::TOK_HASH);
05047 }
05048         YY_BREAK
05049 case 27:
05050 YY_RULE_SETUP
05051 {
05052         pp_lex_guts_logger << "hash\n" << msg::eolog;
05053 
05054         LOCSAVE;
05055         ADVANCE;
05056         return pp_token::create_alternative(LOCGET,pp_token::TOK_HASH);
05057 }
05058         YY_BREAK
05059 case 28:
05060 YY_RULE_SETUP
05061 {
05062         pp_lex_guts_logger << "hash_hash\n" << msg::eolog;
05063 
05064         LOCSAVE;
05065         ADVANCE;
05066         return pp_token::create(LOCGET,pp_token::TOK_HASH_HASH);
05067 }
05068         YY_BREAK
05069 case 29:
05070 YY_RULE_SETUP
05071 {
05072         pp_lex_guts_logger << "hash_hash\n" << msg::eolog;
05073 
05074         LOCSAVE;
05075         ADVANCE;
05076         return pp_token::create_alternative(LOCGET,pp_token::TOK_HASH_HASH);
05077 }
05078         YY_BREAK
05079 case 30:
05080 YY_RULE_SETUP
05081 {
05082         pp_lex_guts_logger << "left_par\n" << msg::eolog;
05083 
05084         LOCSAVE;
05085         ADVANCE;
05086         return pp_token::create(LOCGET,pp_token::TOK_LEFT_PAR);
05087 }
05088         YY_BREAK
05089 case 31:
05090 YY_RULE_SETUP
05091 {
05092         pp_lex_guts_logger << "right_par\n" << msg::eolog;
05093 
05094         LOCSAVE;
05095         ADVANCE;
05096         return pp_token::create(LOCGET,pp_token::TOK_RIGHT_PAR);
05097 }
05098         YY_BREAK
05099 case 32:
05100 YY_RULE_SETUP
05101 {
05102         pp_lex_guts_logger << "semicolon\n" << msg::eolog;
05103 
05104         LOCSAVE;
05105         ADVANCE;
05106         return pp_token::create(LOCGET,pp_token::TOK_SEMICOLON);
05107 }
05108         YY_BREAK
05109 case 33:
05110 YY_RULE_SETUP
05111 {
05112         pp_lex_guts_logger << "colon\n" << msg::eolog;
05113 
05114         LOCSAVE;
05115         ADVANCE;
05116         return pp_token::create(LOCGET,pp_token::TOK_COLON);
05117 }
05118         YY_BREAK
05119 case 34:
05120 YY_RULE_SETUP
05121 {
05122         pp_lex_guts_logger << "qmark\n" << msg::eolog;
05123 
05124         LOCSAVE;
05125         ADVANCE;
05126         return pp_token::create(LOCGET,pp_token::TOK_QMARK);
05127 }
05128         YY_BREAK
05129 case 35:
05130 YY_RULE_SETUP
05131 {
05132         pp_lex_guts_logger << "dot\n" << msg::eolog;
05133 
05134         LOCSAVE;
05135         ADVANCE;
05136         return pp_token::create(LOCGET,pp_token::TOK_DOT);
05137 }
05138         YY_BREAK
05139 case 36:
05140 YY_RULE_SETUP
05141 {
05142         pp_lex_guts_logger << "plus\n" << msg::eolog;
05143 
05144         LOCSAVE;
05145         ADVANCE;
05146         return pp_token::create(LOCGET,pp_token::TOK_PLUS);
05147 }
05148         YY_BREAK
05149 case 37:
05150 YY_RULE_SETUP
05151 {
05152         pp_lex_guts_logger << "star\n" << msg::eolog;
05153 
05154         LOCSAVE;
05155         ADVANCE;
05156         return pp_token::create(LOCGET,pp_token::TOK_STAR);
05157 }
05158         YY_BREAK
05159 case 38:
05160 YY_RULE_SETUP
05161 {
05162         pp_lex_guts_logger << "percent\n" << msg::eolog;
05163 
05164         LOCSAVE;
05165         ADVANCE;
05166         return pp_token::create(LOCGET,pp_token::TOK_PERCENT);
05167 }
05168         YY_BREAK
05169 case 39:
05170 YY_RULE_SETUP
05171 {
05172         pp_lex_guts_logger << "slash\n" << msg::eolog;
05173 
05174         LOCSAVE;
05175         ADVANCE;
05176         return pp_token::create(LOCGET,pp_token::TOK_SLASH);
05177 }
05178         YY_BREAK
05179 case 40:
05180 YY_RULE_SETUP
05181 {
05182         pp_lex_guts_logger << "hat\n" << msg::eolog;
05183 
05184         LOCSAVE;
05185         ADVANCE;
05186         return pp_token::create(LOCGET,pp_token::TOK_HAT);
05187 }
05188         YY_BREAK
05189 case 41:
05190 YY_RULE_SETUP
05191 {
05192         pp_lex_guts_logger << "hat\n" << msg::eolog;
05193 
05194         LOCSAVE;
05195         ADVANCE;
05196         return pp_token::create_alternative(LOCGET,pp_token::TOK_HAT);
05197 }
05198         YY_BREAK
05199 case 42:
05200 YY_RULE_SETUP
05201 {
05202         pp_lex_guts_logger << "amp\n" << msg::eolog;
05203 
05204         LOCSAVE;
05205         ADVANCE;
05206         return pp_token::create(LOCGET,pp_token::TOK_AMP);
05207 }
05208         YY_BREAK
05209 case 43:
05210 YY_RULE_SETUP
05211 {
05212         pp_lex_guts_logger << "amp\n" << msg::eolog;
05213 
05214         LOCSAVE;
05215         ADVANCE;
05216         return pp_token::create_alternative(LOCGET,pp_token::TOK_AMP);
05217 }
05218         YY_BREAK
05219 case 44:
05220 YY_RULE_SETUP
05221 {
05222         pp_lex_guts_logger << "vbar\n" << msg::eolog;
05223 
05224         LOCSAVE;
05225         ADVANCE;
05226         return pp_token::create(LOCGET,pp_token::TOK_VBAR);
05227 }
05228         YY_BREAK
05229 case 45:
05230 YY_RULE_SETUP
05231 {
05232         pp_lex_guts_logger << "vbar\n" << msg::eolog;
05233 
05234         LOCSAVE;
05235         ADVANCE;
05236         return pp_token::create_alternative(LOCGET,pp_token::TOK_VBAR);
05237 }
05238         YY_BREAK
05239 case 46:
05240 YY_RULE_SETUP
05241 {
05242         pp_lex_guts_logger << "tilde\n" << msg::eolog;
05243 
05244         LOCSAVE;
05245         ADVANCE;
05246         return pp_token::create(LOCGET,pp_token::TOK_TILDE);
05247 }
05248         YY_BREAK
05249 case 47:
05250 YY_RULE_SETUP
05251 {
05252         pp_lex_guts_logger << "tilde\n" << msg::eolog;
05253 
05254         LOCSAVE;
05255         ADVANCE;
05256         return pp_token::create_alternative(LOCGET,pp_token::TOK_TILDE);
05257 }
05258         YY_BREAK
05259 case 48:
05260 YY_RULE_SETUP
05261 {
05262         pp_lex_guts_logger << "emark\n" << msg::eolog;
05263 
05264         LOCSAVE;
05265         ADVANCE;
05266         return pp_token::create(LOCGET,pp_token::TOK_EMARK);
05267 }
05268         YY_BREAK
05269 case 49:
05270 YY_RULE_SETUP
05271 {
05272         pp_lex_guts_logger << "emark\n" << msg::eolog;
05273 
05274         LOCSAVE;
05275         ADVANCE;
05276         return pp_token::create_alternative(LOCGET,pp_token::TOK_EMARK);
05277 }
05278         YY_BREAK
05279 case 50:
05280 YY_RULE_SETUP
05281 {
05282         pp_lex_guts_logger << "eq\n" << msg::eolog;
05283 
05284         LOCSAVE;
05285         ADVANCE;
05286         return pp_token::create(LOCGET,pp_token::TOK_EQ);
05287 }
05288         YY_BREAK
05289 case 51:
05290 YY_RULE_SETUP
05291 {
05292         pp_lex_guts_logger << "lt\n" << msg::eolog;
05293 
05294         LOCSAVE;
05295         ADVANCE;
05296         return pp_token::create(LOCGET,pp_token::TOK_LT);
05297 }
05298         YY_BREAK
05299 case 52:
05300 YY_RULE_SETUP
05301 {
05302         pp_lex_guts_logger << "gt\n" << msg::eolog;
05303 
05304         LOCSAVE;
05305         ADVANCE;
05306         return pp_token::create(LOCGET,pp_token::TOK_GT);
05307 }
05308         YY_BREAK
05309 case 53:
05310 YY_RULE_SETUP
05311 {
05312         pp_lex_guts_logger << "comma\n" << msg::eolog;
05313 
05314         LOCSAVE;
05315         ADVANCE;
05316         return pp_token::create(LOCGET,pp_token::TOK_COMMA);
05317 }
05318         YY_BREAK
05319 case 54:
05320 YY_RULE_SETUP
05321 {
05322         pp_lex_guts_logger << "minus\n" << msg::eolog;
05323 
05324         LOCSAVE;
05325         ADVANCE;
05326         return pp_token::create(LOCGET,pp_token::TOK_MINUS);
05327 }
05328         YY_BREAK
05329 case 55:
05330 YY_RULE_SETUP
05331 {
05332         pp_lex_guts_logger << "colon_colon\n" << msg::eolog;
05333 
05334         LOCSAVE;
05335         ADVANCE;
05336         return pp_token::create(LOCGET,pp_token::TOK_COLON_COLON);
05337 }
05338         YY_BREAK
05339 case 56:
05340 YY_RULE_SETUP
05341 {
05342         pp_lex_guts_logger << "dot_star\n" << msg::eolog;
05343 
05344         LOCSAVE;
05345         ADVANCE;
05346         return pp_token::create(LOCGET,pp_token::TOK_DOT_STAR);
05347 }
05348         YY_BREAK
05349 case 57:
05350 YY_RULE_SETUP
05351 {
05352         pp_lex_guts_logger << "plus_eq\n" << msg::eolog;
05353 
05354         LOCSAVE;
05355         ADVANCE;
05356         return pp_token::create(LOCGET,pp_token::TOK_PLUS_EQ);
05357 }
05358         YY_BREAK
05359 case 58:
05360 YY_RULE_SETUP
05361 {
05362         pp_lex_guts_logger << "minus_eq\n" << msg::eolog;
05363 
05364         LOCSAVE;
05365         ADVANCE;
05366         return pp_token::create(LOCGET,pp_token::TOK_MINUS_EQ);
05367 }
05368         YY_BREAK
05369 case 59:
05370 YY_RULE_SETUP
05371 {
05372         pp_lex_guts_logger << "star_eq\n" << msg::eolog;
05373 
05374         LOCSAVE;
05375         ADVANCE;
05376         return pp_token::create(LOCGET,pp_token::TOK_STAR_EQ);
05377 }
05378         YY_BREAK
05379 case 60:
05380 YY_RULE_SETUP
05381 {
05382         pp_lex_guts_logger << "slash_eq\n" << msg::eolog;
05383 
05384         LOCSAVE;
05385         ADVANCE;
05386         return pp_token::create(LOCGET,pp_token::TOK_SLASH_EQ);
05387 }
05388         YY_BREAK
05389 case 61:
05390 YY_RULE_SETUP
05391 {
05392         pp_lex_guts_logger << "percent_eq\n" << msg::eolog;
05393 
05394         LOCSAVE;
05395         ADVANCE;
05396         return pp_token::create(LOCGET,pp_token::TOK_PERCENT_EQ);
05397 }
05398         YY_BREAK
05399 case 62:
05400 YY_RULE_SETUP
05401 {
05402         pp_lex_guts_logger << "hat_eq\n" << msg::eolog;
05403 
05404         LOCSAVE;
05405         ADVANCE;
05406         return pp_token::create(LOCGET,pp_token::TOK_HAT_EQ);
05407 }
05408         YY_BREAK
05409 case 63:
05410 YY_RULE_SETUP
05411 {
05412         pp_lex_guts_logger << "hat_eq\n" << msg::eolog;
05413 
05414         LOCSAVE;
05415         ADVANCE;
05416         return pp_token::create_alternative(LOCGET,pp_token::TOK_HAT_EQ);
05417 }
05418         YY_BREAK
05419 case 64:
05420 YY_RULE_SETUP
05421 {
05422         pp_lex_guts_logger << "amp_eq\n" << msg::eolog;
05423 
05424         LOCSAVE;
05425         ADVANCE;
05426         return pp_token::create(LOCGET,pp_token::TOK_AMP_EQ);
05427 }
05428         YY_BREAK
05429 case 65:
05430 YY_RULE_SETUP
05431 {
05432         pp_lex_guts_logger << "amp_eq\n" << msg::eolog;
05433 
05434         LOCSAVE;
05435         ADVANCE;
05436         return pp_token::create_alternative(LOCGET,pp_token::TOK_AMP_EQ);
05437 }
05438         YY_BREAK
05439 case 66:
05440 YY_RULE_SETUP
05441 {
05442         pp_lex_guts_logger << "vbar_eq\n" << msg::eolog;
05443 
05444         LOCSAVE;
05445         ADVANCE;
05446         return pp_token::create(LOCGET,pp_token::TOK_VBAR_EQ);
05447 }
05448         YY_BREAK
05449 case 67:
05450 YY_RULE_SETUP
05451 {
05452         pp_lex_guts_logger << "vbar_eq\n" << msg::eolog;
05453 
05454         LOCSAVE;
05455         ADVANCE;
05456         return pp_token::create_alternative(LOCGET,pp_token::TOK_VBAR_EQ);
05457 }
05458         YY_BREAK
05459 case 68:
05460 YY_RULE_SETUP
05461 {
05462         pp_lex_guts_logger << "lt_lt\n" << msg::eolog;
05463 
05464         LOCSAVE;
05465         ADVANCE;
05466         return pp_token::create(LOCGET,pp_token::TOK_LT_LT);
05467 }
05468         YY_BREAK
05469 case 69:
05470 YY_RULE_SETUP
05471 {
05472         pp_lex_guts_logger << "gt_gt\n" << msg::eolog;
05473 
05474         LOCSAVE;
05475         ADVANCE;
05476         return pp_token::create(LOCGET,pp_token::TOK_GT_GT);
05477 }
05478         YY_BREAK
05479 case 70:
05480 YY_RULE_SETUP
05481 {
05482         pp_lex_guts_logger << "gt_gt_eq\n" << msg::eolog;
05483 
05484         LOCSAVE;
05485         ADVANCE;
05486         return pp_token::create(LOCGET,pp_token::TOK_GT_GT_EQ);
05487 }
05488         YY_BREAK
05489 case 71:
05490 YY_RULE_SETUP
05491 {
05492         pp_lex_guts_logger << "lt_lt_eq\n" << msg::eolog;
05493 
05494         LOCSAVE;
05495         ADVANCE;
05496         return pp_token::create(LOCGET,pp_token::TOK_LT_LT_EQ);
05497 }
05498         YY_BREAK
05499 case 72:
05500 YY_RULE_SETUP
05501 {
05502         pp_lex_guts_logger << "eq_eq\n" << msg::eolog;
05503 
05504         LOCSAVE;
05505         ADVANCE;
05506         return pp_token::create(LOCGET,pp_token::TOK_EQ_EQ);
05507 }
05508         YY_BREAK
05509 case 73:
05510 YY_RULE_SETUP
05511 {
05512         pp_lex_guts_logger << "emark_eq\n" << msg::eolog;
05513 
05514         LOCSAVE;
05515         ADVANCE;
05516         return pp_token::create(LOCGET,pp_token::TOK_EMARK_EQ);
05517 }
05518         YY_BREAK
05519 case 74:
05520 YY_RULE_SETUP
05521 {
05522         pp_lex_guts_logger << "emark_eq\n" << msg::eolog;
05523 
05524         LOCSAVE;
05525         ADVANCE;
05526         return pp_token::create_alternative(LOCGET,pp_token::TOK_EMARK_EQ);
05527 }
05528         YY_BREAK
05529 case 75:
05530 YY_RULE_SETUP
05531 {
05532         pp_lex_guts_logger << "lt_eq\n" << msg::eolog;
05533 
05534         LOCSAVE;
05535         ADVANCE;
05536         return pp_token::create(LOCGET,pp_token::TOK_LT_EQ);
05537 }
05538         YY_BREAK
05539 case 76:
05540 YY_RULE_SETUP
05541 {
05542         pp_lex_guts_logger << "gt_eq\n" << msg::eolog;
05543 
05544         LOCSAVE;
05545         ADVANCE;
05546         return pp_token::create(LOCGET,pp_token::TOK_GT_EQ);
05547 }
05548         YY_BREAK
05549 case 77:
05550 YY_RULE_SETUP
05551 {
05552         pp_lex_guts_logger << "amp_amp\n" << msg::eolog;
05553 
05554         LOCSAVE;
05555         ADVANCE;
05556         return pp_token::create(LOCGET,pp_token::TOK_AMP_AMP);
05557 }
05558         YY_BREAK
05559 case 78:
05560 YY_RULE_SETUP
05561 {
05562         pp_lex_guts_logger << "amp_amp\n" << msg::eolog;
05563 
05564         LOCSAVE;
05565         ADVANCE;
05566         return pp_token::create_alternative(LOCGET,pp_token::TOK_AMP_AMP);
05567 }
05568         YY_BREAK
05569 case 79:
05570 YY_RULE_SETUP
05571 {
05572         pp_lex_guts_logger << "vbar_vbar\n" << msg::eolog;
05573 
05574         LOCSAVE;
05575         ADVANCE;
05576         return pp_token::create(LOCGET,pp_token::TOK_VBAR_VBAR);
05577 }
05578         YY_BREAK
05579 case 80:
05580 YY_RULE_SETUP
05581 {
05582         pp_lex_guts_logger << "vbar_vbar\n" << msg::eolog;
05583 
05584         LOCSAVE;
05585         ADVANCE;
05586         return pp_token::create_alternative(LOCGET,pp_token::TOK_VBAR_VBAR);
05587 }
05588         YY_BREAK
05589 case 81:
05590 YY_RULE_SETUP
05591 {
05592         pp_lex_guts_logger << "plus_plus\n" << msg::eolog;
05593 
05594         LOCSAVE;
05595         ADVANCE;
05596         return pp_token::create(LOCGET,pp_token::TOK_PLUS_PLUS);
05597 }
05598         YY_BREAK
05599 case 82:
05600 YY_RULE_SETUP
05601 {
05602         pp_lex_guts_logger << "minus_minus\n" << msg::eolog;
05603 
05604         LOCSAVE;
05605         ADVANCE;
05606         return pp_token::create(LOCGET,pp_token::TOK_MINUS_MINUS);
05607 }
05608         YY_BREAK
05609 case 83:
05610 YY_RULE_SETUP
05611 {
05612         pp_lex_guts_logger << "minus_gt_star\n" << msg::eolog;
05613 
05614         LOCSAVE;
05615         ADVANCE;
05616         return pp_token::create(LOCGET,pp_token::TOK_MINUS_GT_STAR);
05617 }
05618         YY_BREAK
05619 case 84:
05620 YY_RULE_SETUP
05621 {
05622         pp_lex_guts_logger << "minus_gt\n" << msg::eolog;
05623 
05624         LOCSAVE;
05625         ADVANCE;
05626         return pp_token::create(LOCGET,pp_token::TOK_MINUS_GT);
05627 }
05628         YY_BREAK
05629 case 85:
05630 YY_RULE_SETUP
05631 {
05632         pp_lex_guts_logger << "dot_dot_dot\n" << msg::eolog;
05633 
05634         LOCSAVE;
05635         ADVANCE;
05636         return pp_token::create(LOCGET,pp_token::TOK_DOT_DOT_DOT);
05637 }
05638         YY_BREAK
05639 case 86:
05640 YY_RULE_SETUP
05641 {
05642         pp_lex_guts_logger << "asm\n" << msg::eolog;
05643 
05644         LOCSAVE;
05645         ADVANCE;
05646         return pp_token::create(LOCGET,pp_token::TOK_ASM);
05647 }
05648         YY_BREAK
05649 case 87:
05650 YY_RULE_SETUP
05651 {
05652         pp_lex_guts_logger << "auto\n" << msg::eolog;
05653 
05654         LOCSAVE;
05655         ADVANCE;
05656         return pp_token::create(LOCGET,pp_token::TOK_AUTO);
05657 }
05658         YY_BREAK
05659 case 88:
05660 YY_RULE_SETUP
05661 {
05662         pp_lex_guts_logger << "bool\n" << msg::eolog;
05663 
05664         LOCSAVE;
05665         ADVANCE;
05666         return pp_token::create(LOCGET,pp_token::TOK_BOOL);
05667 }
05668         YY_BREAK
05669 case 89:
05670 YY_RULE_SETUP
05671 {
05672         pp_lex_guts_logger << "break\n" << msg::eolog;
05673 
05674         LOCSAVE;
05675         ADVANCE;
05676         return pp_token::create(LOCGET,pp_token::TOK_BREAK);
05677 }
05678         YY_BREAK
05679 case 90:
05680 YY_RULE_SETUP
05681 {
05682         pp_lex_guts_logger << "case\n" << msg::eolog;
05683 
05684         LOCSAVE;
05685         ADVANCE;
05686         return pp_token::create(LOCGET,pp_token::TOK_CASE);
05687 }
05688         YY_BREAK
05689 case 91:
05690 YY_RULE_SETUP
05691 {
05692         pp_lex_guts_logger << "catch\n" << msg::eolog;
05693 
05694         LOCSAVE;
05695         ADVANCE;
05696         return pp_token::create(LOCGET,pp_token::TOK_CATCH);
05697 }
05698         YY_BREAK
05699 case 92:
05700 YY_RULE_SETUP
05701 {
05702         pp_lex_guts_logger << "char\n" << msg::eolog;
05703 
05704         LOCSAVE;
05705         ADVANCE;
05706         return pp_token::create(LOCGET,pp_token::TOK_CHAR);
05707 }
05708         YY_BREAK
05709 case 93:
05710 YY_RULE_SETUP
05711 {
05712         pp_lex_guts_logger << "class\n" << msg::eolog;
05713 
05714         LOCSAVE;
05715         ADVANCE;
05716         return pp_token::create(LOCGET,pp_token::TOK_CLASS);
05717 }
05718         YY_BREAK
05719 case 94:
05720 YY_RULE_SETUP
05721 {
05722         pp_lex_guts_logger << "const\n" << msg::eolog;
05723 
05724         LOCSAVE;
05725         ADVANCE;
05726         return pp_token::create(LOCGET,pp_token::TOK_CONST);
05727 }
05728         YY_BREAK
05729 case 95:
05730 YY_RULE_SETUP
05731 {
05732         pp_lex_guts_logger << "const_cast\n" << msg::eolog;
05733 
05734         LOCSAVE;
05735         ADVANCE;
05736         return pp_token::create(LOCGET,pp_token::TOK_CONST_CAST);
05737 }
05738         YY_BREAK
05739 case 96:
05740 YY_RULE_SETUP
05741 {
05742         pp_lex_guts_logger << "continue\n" << msg::eolog;
05743 
05744         LOCSAVE;
05745         ADVANCE;
05746         return pp_token::create(LOCGET,pp_token::TOK_CONTINUE);
05747 }
05748         YY_BREAK
05749 case 97:
05750 YY_RULE_SETUP
05751 {
05752         pp_lex_guts_logger << "default\n" << msg::eolog;
05753 
05754         LOCSAVE;
05755         ADVANCE;
05756         return pp_token::create(LOCGET,pp_token::TOK_DEFAULT);
05757 }
05758         YY_BREAK
05759 case 98:
05760 YY_RULE_SETUP
05761 {
05762         pp_lex_guts_logger << "delete\n" << msg::eolog;
05763 
05764         LOCSAVE;
05765         ADVANCE;
05766         return pp_token::create(LOCGET,pp_token::TOK_DELETE);
05767 }
05768         YY_BREAK
05769 case 99:
05770 YY_RULE_SETUP
05771 {
05772         pp_lex_guts_logger << "do\n" << msg::eolog;
05773 
05774         LOCSAVE;
05775         ADVANCE;
05776         return pp_token::create(LOCGET,pp_token::TOK_DO);
05777 }
05778         YY_BREAK
05779 case 100:
05780 YY_RULE_SETUP
05781 {
05782         pp_lex_guts_logger << "double\n" << msg::eolog;
05783 
05784         LOCSAVE;
05785         ADVANCE;
05786         return pp_token::create(LOCGET,pp_token::TOK_DOUBLE);
05787 }
05788         YY_BREAK
05789 case 101:
05790 YY_RULE_SETUP
05791 {
05792         pp_lex_guts_logger << "dynamic_cast\n" << msg::eolog;
05793 
05794         LOCSAVE;
05795         ADVANCE;
05796         return pp_token::create(LOCGET,pp_token::TOK_DYNAMIC_CAST);
05797 }
05798         YY_BREAK
05799 case 102:
05800 YY_RULE_SETUP
05801 {
05802         pp_lex_guts_logger << "else\n" << msg::eolog;
05803 
05804         LOCSAVE;
05805         ADVANCE;
05806         return pp_token::create(LOCGET,pp_token::TOK_ELSE);
05807 }
05808         YY_BREAK
05809 case 103:
05810 YY_RULE_SETUP
05811 {
05812         pp_lex_guts_logger << "enum\n" << msg::eolog;
05813 
05814         LOCSAVE;
05815         ADVANCE;
05816         return pp_token::create(LOCGET,pp_token::TOK_ENUM);
05817 }
05818         YY_BREAK
05819 case 104:
05820 YY_RULE_SETUP
05821 {
05822         pp_lex_guts_logger << "explicit\n" << msg::eolog;
05823 
05824         LOCSAVE;
05825         ADVANCE;
05826         return pp_token::create(LOCGET,pp_token::TOK_EXPLICIT);
05827 }
05828         YY_BREAK
05829 case 105:
05830 YY_RULE_SETUP
05831 {
05832         pp_lex_guts_logger << "export\n" << msg::eolog;
05833 
05834         LOCSAVE;
05835         ADVANCE;
05836         return pp_token::create(LOCGET,pp_token::TOK_EXPORT);
05837 }
05838         YY_BREAK
05839 case 106:
05840 YY_RULE_SETUP
05841 {
05842         pp_lex_guts_logger << "extern\n" << msg::eolog;
05843 
05844         LOCSAVE;
05845         ADVANCE;
05846         return pp_token::create(LOCGET,pp_token::TOK_EXTERN);
05847 }
05848         YY_BREAK
05849 case 107:
05850 YY_RULE_SETUP
05851 {
05852         pp_lex_guts_logger << "float\n" << msg::eolog;
05853 
05854         LOCSAVE;
05855         ADVANCE;
05856         return pp_token::create(LOCGET,pp_token::TOK_FLOAT);
05857 }
05858         YY_BREAK
05859 case 108:
05860 YY_RULE_SETUP
05861 {
05862         pp_lex_guts_logger << "for\n" << msg::eolog;
05863 
05864         LOCSAVE;
05865         ADVANCE;
05866         return pp_token::create(LOCGET,pp_token::TOK_FOR);
05867 }
05868         YY_BREAK
05869 case 109:
05870 YY_RULE_SETUP
05871 {
05872         pp_lex_guts_logger << "friend\n" << msg::eolog;
05873 
05874         LOCSAVE;
05875         ADVANCE;
05876         return pp_token::create(LOCGET,pp_token::TOK_FRIEND);
05877 }
05878         YY_BREAK
05879 case 110:
05880 YY_RULE_SETUP
05881 {
05882         pp_lex_guts_logger << "goto\n" << msg::eolog;
05883 
05884         LOCSAVE;
05885         ADVANCE;
05886         return pp_token::create(LOCGET,pp_token::TOK_GOTO);
05887 }
05888         YY_BREAK
05889 case 111:
05890 YY_RULE_SETUP
05891 {
05892         pp_lex_guts_logger << "if\n" << msg::eolog;
05893 
05894         LOCSAVE;
05895         ADVANCE;
05896         return pp_token::create(LOCGET,pp_token::TOK_IF);
05897 }
05898         YY_BREAK
05899 case 112:
05900 YY_RULE_SETUP
05901 {
05902         pp_lex_guts_logger << "inline\n" << msg::eolog;
05903 
05904         LOCSAVE;
05905         ADVANCE;
05906         return pp_token::create(LOCGET,pp_token::TOK_INLINE);
05907 }
05908         YY_BREAK
05909 case 113:
05910 YY_RULE_SETUP
05911 {
05912         pp_lex_guts_logger << "int\n" << msg::eolog;
05913 
05914         LOCSAVE;
05915         ADVANCE;
05916         return pp_token::create(LOCGET,pp_token::TOK_INT);
05917 }
05918         YY_BREAK
05919 case 114:
05920 YY_RULE_SETUP
05921 {
05922         pp_lex_guts_logger << "long\n" << msg::eolog;
05923 
05924         LOCSAVE;
05925         ADVANCE;
05926         return pp_token::create(LOCGET,pp_token::TOK_LONG);
05927 }
05928         YY_BREAK
05929 case 115:
05930 YY_RULE_SETUP
05931 {
05932         pp_lex_guts_logger << "mutable\n" << msg::eolog;
05933 
05934         LOCSAVE;
05935         ADVANCE;
05936         return pp_token::create(LOCGET,pp_token::TOK_MUTABLE);
05937 }
05938         YY_BREAK
05939 case 116:
05940 YY_RULE_SETUP
05941 {
05942         pp_lex_guts_logger << "namespace\n" << msg::eolog;
05943 
05944         LOCSAVE;
05945         ADVANCE;
05946         return pp_token::create(LOCGET,pp_token::TOK_NAMESPACE);
05947 }
05948         YY_BREAK
05949 case 117:
05950 YY_RULE_SETUP
05951 {
05952         pp_lex_guts_logger << "new\n" << msg::eolog;
05953 
05954         LOCSAVE;
05955         ADVANCE;
05956         return pp_token::create(LOCGET,pp_token::TOK_NEW);
05957 }
05958         YY_BREAK
05959 case 118:
05960 YY_RULE_SETUP
05961 {
05962         pp_lex_guts_logger << "operator\n" << msg::eolog;
05963 
05964         LOCSAVE;
05965         ADVANCE;
05966         return pp_token::create(LOCGET,pp_token::TOK_OPERATOR);
05967 }
05968         YY_BREAK
05969 case 119:
05970 YY_RULE_SETUP
05971 {
05972         pp_lex_guts_logger << "private\n" << msg::eolog;
05973 
05974         LOCSAVE;
05975         ADVANCE;
05976         return pp_token::create(LOCGET,pp_token::TOK_PRIVATE);
05977 }
05978         YY_BREAK
05979 case 120:
05980 YY_RULE_SETUP
05981 {
05982         LOCSAVE;
05983         ADVANCE;
05984         return pp_token::create(LOCGET,pp_token::TOK_PROTECTED);
05985         pp_lex_guts_logger << "protected\n" << msg::eolog;
05986 }
05987         YY_BREAK
05988 case 121:
05989 YY_RULE_SETUP
05990 {
05991         pp_lex_guts_logger << "public\n" << msg::eolog;
05992 
05993         LOCSAVE;
05994         ADVANCE;
05995         return pp_token::create(LOCGET,pp_token::TOK_PUBLIC);
05996 }
05997         YY_BREAK
05998 case 122:
05999 YY_RULE_SETUP
06000 {
06001         pp_lex_guts_logger << "register\n" << msg::eolog;
06002 
06003         LOCSAVE;
06004         ADVANCE;
06005         return pp_token::create(LOCGET,pp_token::TOK_REGISTER);
06006 }
06007         YY_BREAK
06008 case 123:
06009 YY_RULE_SETUP
06010 {
06011         pp_lex_guts_logger << "reinterpret_cast\n" << msg::eolog;
06012 
06013         LOCSAVE;
06014         ADVANCE;
06015         return pp_token::create(LOCGET,pp_token::TOK_REINTERPRET_CAST);
06016 }
06017         YY_BREAK
06018 case 124:
06019 YY_RULE_SETUP
06020 {
06021         pp_lex_guts_logger << "return\n" << msg::eolog;
06022 
06023         LOCSAVE;
06024         ADVANCE;
06025         return pp_token::create(LOCGET,pp_token::TOK_RETURN);
06026 }
06027         YY_BREAK
06028 case 125:
06029 YY_RULE_SETUP
06030 {
06031         pp_lex_guts_logger << "short\n" << msg::eolog;
06032 
06033         LOCSAVE;
06034         ADVANCE;
06035         return pp_token::create(LOCGET,pp_token::TOK_SHORT);
06036 }
06037         YY_BREAK
06038 case 126:
06039 YY_RULE_SETUP
06040 {
06041         pp_lex_guts_logger << "signed\n" << msg::eolog;
06042 
06043         LOCSAVE;
06044         ADVANCE;
06045         return pp_token::create(LOCGET,pp_token::TOK_SIGNED);
06046 }
06047         YY_BREAK
06048 case 127:
06049 YY_RULE_SETUP
06050 {
06051         pp_lex_guts_logger << "sizeof\n" << msg::eolog;
06052 
06053         LOCSAVE;
06054         ADVANCE;
06055         return pp_token::create(LOCGET,pp_token::TOK_SIZEOF);
06056 }
06057         YY_BREAK
06058 case 128:
06059 YY_RULE_SETUP
06060 {
06061         pp_lex_guts_logger << "static\n" << msg::eolog;
06062 
06063         LOCSAVE;
06064         ADVANCE;
06065         return pp_token::create(LOCGET,pp_token::TOK_STATIC);
06066 }
06067         YY_BREAK
06068 case 129:
06069 YY_RULE_SETUP
06070 {
06071         pp_lex_guts_logger << "static_cast\n" << msg::eolog;
06072 
06073         LOCSAVE;
06074         ADVANCE;
06075         return pp_token::create(LOCGET,pp_token::TOK_STATIC_CAST);
06076 }
06077         YY_BREAK
06078 case 130:
06079 YY_RULE_SETUP
06080 {
06081         pp_lex_guts_logger << "struct\n" << msg::eolog;
06082 
06083         LOCSAVE;
06084         ADVANCE;
06085         return pp_token::create(LOCGET,pp_token::TOK_STRUCT);
06086 }
06087         YY_BREAK
06088 case 131:
06089 YY_RULE_SETUP
06090 {
06091         pp_lex_guts_logger << "switch\n" << msg::eolog;
06092 
06093         LOCSAVE;
06094         ADVANCE;
06095         return pp_token::create(LOCGET,pp_token::TOK_SWITCH);
06096 }
06097         YY_BREAK
06098 case 132:
06099 YY_RULE_SETUP
06100 {
06101         pp_lex_guts_logger << "template\n" << msg::eolog;
06102 
06103         LOCSAVE;
06104         ADVANCE;
06105         return pp_token::create(LOCGET,pp_token::TOK_TEMPLATE);
06106 }
06107         YY_BREAK
06108 case 133:
06109 YY_RULE_SETUP
06110 {
06111         pp_lex_guts_logger << "this\n" << msg::eolog;
06112 
06113         LOCSAVE;
06114         ADVANCE;
06115         return pp_token::create(LOCGET,pp_token::TOK_THIS);
06116 }
06117         YY_BREAK
06118 case 134:
06119 YY_RULE_SETUP
06120 {
06121         pp_lex_guts_logger << "throw\n" << msg::eolog;
06122 
06123         LOCSAVE;
06124         ADVANCE;
06125         return pp_token::create(LOCGET,pp_token::TOK_THROW);
06126 }
06127         YY_BREAK
06128 case 135:
06129 YY_RULE_SETUP
06130 {
06131         pp_lex_guts_logger << "try\n" << msg::eolog;
06132 
06133         LOCSAVE;
06134         ADVANCE;
06135         return pp_token::create(LOCGET,pp_token::TOK_TRY);
06136 }
06137         YY_BREAK
06138 case 136:
06139 YY_RULE_SETUP
06140 {
06141         pp_lex_guts_logger << "typedef\n" << msg::eolog;
06142 
06143         LOCSAVE;
06144         ADVANCE;
06145         return pp_token::create(LOCGET,pp_token::TOK_TYPEDEF);
06146 }
06147         YY_BREAK
06148 case 137:
06149 YY_RULE_SETUP
06150 {
06151         pp_lex_guts_logger << "typeid\n" << msg::eolog;
06152 
06153         LOCSAVE;
06154         ADVANCE;
06155         return pp_token::create(LOCGET,pp_token::TOK_TYPEID);
06156 }
06157         YY_BREAK
06158 case 138:
06159 YY_RULE_SETUP
06160 {
06161         pp_lex_guts_logger << "typename\n" << msg::eolog;
06162 
06163         LOCSAVE;
06164         ADVANCE;
06165         return pp_token::create(LOCGET,pp_token::TOK_TYPENAME);
06166 }
06167         YY_BREAK
06168 case 139:
06169 YY_RULE_SETUP
06170 {
06171         pp_lex_guts_logger << "union\n" << msg::eolog;
06172 
06173         LOCSAVE;
06174         ADVANCE;
06175         return pp_token::create(LOCGET,pp_token::TOK_UNION);
06176 }
06177         YY_BREAK
06178 case 140:
06179 YY_RULE_SETUP
06180 {
06181         pp_lex_guts_logger << "unsigned\n" << msg::eolog;
06182 
06183         LOCSAVE;
06184         ADVANCE;
06185         return pp_token::create(LOCGET,pp_token::TOK_UNSIGNED);
06186 }
06187         YY_BREAK
06188 case 141:
06189 YY_RULE_SETUP
06190 {
06191         pp_lex_guts_logger << "using\n" << msg::eolog;
06192 
06193         LOCSAVE;
06194         ADVANCE;
06195         return pp_token::create(LOCGET,pp_token::TOK_USING);
06196 }
06197         YY_BREAK
06198 case 142:
06199 YY_RULE_SETUP
06200 {
06201         pp_lex_guts_logger << "virtual\n" << msg::eolog;
06202 
06203         LOCSAVE;
06204         ADVANCE;
06205         return pp_token::create(LOCGET,pp_token::TOK_VIRTUAL);
06206 }
06207         YY_BREAK
06208 case 143:
06209 YY_RULE_SETUP
06210 {
06211         pp_lex_guts_logger << "void\n" << msg::eolog;
06212 
06213         LOCSAVE;
06214         ADVANCE;
06215         return pp_token::create(LOCGET,pp_token::TOK_VOID);
06216 }
06217         YY_BREAK
06218 case 144:
06219 YY_RULE_SETUP
06220 {
06221         pp_lex_guts_logger << "volatile\n" << msg::eolog;
06222 
06223         LOCSAVE;
06224         ADVANCE;
06225         return pp_token::create(LOCGET,pp_token::TOK_VOLATILE);
06226 }
06227         YY_BREAK
06228 case 145:
06229 YY_RULE_SETUP
06230 {
06231         pp_lex_guts_logger << "wchar\n" << msg::eolog;
06232 
06233         LOCSAVE;
06234         ADVANCE;
06235         return pp_token::create(LOCGET,pp_token::TOK_WCHAR);
06236 }
06237         YY_BREAK
06238 case 146:
06239 YY_RULE_SETUP
06240 {
06241         pp_lex_guts_logger << "while\n" << msg::eolog;
06242 
06243         LOCSAVE;
06244         ADVANCE;
06245         return pp_token::create(LOCGET,pp_token::TOK_WHILE);
06246 }
06247         YY_BREAK
06248 case 147:
06249 YY_RULE_SETUP
06250 {
06251         pp_lex_guts_logger << "false\n" << msg::eolog;
06252 
06253         LOCSAVE;
06254         ADVANCE;
06255         return pp_token::create(LOCGET,pp_token::TOK_BOOL_LIT,token_value::create("false"));
06256 }
06257         YY_BREAK
06258 case 148:
06259 YY_RULE_SETUP
06260 {
06261         pp_lex_guts_logger << "false\n" << msg::eolog;
06262 
06263         LOCSAVE;
06264         ADVANCE;
06265         return pp_token::create(LOCGET,pp_token::TOK_BOOL_LIT,token_value::create("true"));
06266 }
06267         YY_BREAK
06268 /*
06269 {i}{n}{c}{l}{u}{d}{e} {
06270         pp_lex_guts_logger << "include\n" << msg::eolog;
06271 
06272         LOCSAVE;
06273         ADVANCE;
06274         return pp_token::create(LOCGET,pp_token::TOK_INCLUDE);
06275 }
06276 
06277 {d}{e}{f}{i}{n}{e} {
06278         pp_lex_guts_logger << "define\n" << msg::eolog;
06279 
06280         LOCSAVE;
06281         ADVANCE;
06282         return pp_token::create(LOCGET,pp_token::TOK_DEFINE);
06283 }
06284 
06285 {u}{n}{d}{e}{f} {
06286         pp_lex_guts_logger << "undef\n" << msg::eolog;
06287 
06288         LOCSAVE;
06289         ADVANCE;
06290         return pp_token::create(LOCGET,pp_token::TOK_UNDEF);
06291 }
06292 
06293 {l}{i}{n}{e} {
06294         pp_lex_guts_logger << "line\n" << msg::eolog;
06295 
06296         LOCSAVE;
06297         ADVANCE;
06298         return pp_token::create(LOCGET,pp_token::TOK_LINE);
06299 }
06300 
06301 {p}{r}{a}{g}{m}{a} {
06302         pp_lex_guts_logger << "pragma\n" << msg::eolog;
06303 
06304         LOCSAVE;
06305         ADVANCE;
06306         return pp_token::create(LOCGET,pp_token::TOK_PRAGMA);
06307 }
06308 
06309 {e}{r}{r}{o}{r} {
06310         pp_lex_guts_logger << "error\n" << msg::eolog;
06311 
06312         LOCSAVE;
06313         ADVANCE;
06314         return pp_token::create(LOCGET,pp_token::TOK_ERROR);
06315 }
06316 
06317 {d}{e}{f}{i}{n}{e}{d} {
06318         pp_lex_guts_logger << "defined\n" << msg::eolog;
06319 
06320         LOCSAVE;
06321         ADVANCE;
06322         return pp_token::create(LOCGET,pp_token::TOK_DEFINED);
06323 }
06324 
06325 {i}{f}{d}{e}{f} {
06326         pp_lex_guts_logger << "ifdef\n" << msg::eolog;
06327 
06328         LOCSAVE;
06329         ADVANCE;
06330         return pp_token::create(LOCGET,pp_token::TOK_IFDEF);
06331 }
06332 
06333 {i}{f}{n}{d}{e}{f} {
06334         pp_lex_guts_logger << "ifndef\n" << msg::eolog;
06335 
06336         LOCSAVE;
06337         ADVANCE;
06338         return pp_token::create(LOCGET,pp_token::TOK_IFNDEF);
06339 }
06340 
06341 {e}{l}{i}{f} {
06342         pp_lex_guts_logger << "elif\n" << msg::eolog;
06343 
06344         LOCSAVE;
06345         ADVANCE;
06346         return pp_token::create(LOCGET,pp_token::TOK_ELIF);
06347 }
06348 
06349 {e}{n}{d}{i}{f} {
06350         pp_lex_guts_logger << "endif\n" << msg::eolog;
06351 
06352         LOCSAVE;
06353         ADVANCE;
06354         return pp_token::create(LOCGET,pp_token::TOK_ENDIF);
06355 }
06356    */
06357 /* pp number, can contain underscore */
06358 case 149:
06359 YY_RULE_SETUP
06360 {
06361         pp_lex_guts_logger << "preprocessing number\n" << msg::eolog;
06362 
06363         LOCSAVE;
06364         return pp_token::create(LOCGET,pp_token::TOK_NUMBER_LIT,EXTRACT_ORDINARY(yyleng));
06365 }
06366         YY_BREAK
06367 /* pp number with ucn */
06368 case 150:
06369 YY_RULE_SETUP
06370 {
06371         pp_lex_guts_logger << "preprocessing number with ucn\n" << msg::eolog;
06372 
06373         LOCSAVE;
06374         return pp_token::create(LOCGET,pp_token::TOK_NUMBER_LIT,EXTRACT_UCN_NUMBER(yyleng));
06375 }
06376         YY_BREAK
06377 /* pp number with bad ucn */
06378 case 151:
06379 YY_RULE_SETUP
06380 {
06381         pp_lex_guts_logger << "preprocessing number with bad ucn\n" << msg::eolog;
06382 
06383         LOCSAVE;
06384         return pp_token::create(LOCGET,pp_token::TOK_NUMBER_LIT,EXTRACT_BAD_NUMBER(yyleng));
06385 }
06386         YY_BREAK
06387 /* pp alphanumeric identifier */
06388 case 152:
06389 YY_RULE_SETUP
06390 {
06391         pp_lex_guts_logger << "identifier without ucn\n" << msg::eolog;
06392 
06393         LOCSAVE;
06394         return pp_token::create(LOCGET,pp_token::TOK_IDENT,EXTRACT_ORDINARY(yyleng));
06395 }
06396         YY_BREAK
06397 /* pp identifier with ucn */
06398 case 153:
06399 YY_RULE_SETUP
06400 {
06401         pp_lex_guts_logger << "identifier with ucn\n" << msg::eolog;
06402 
06403         LOCSAVE;
06404         return pp_token::create(LOCGET,pp_token::TOK_IDENT,EXTRACT_UCN_IDENTIFIER(yyleng));
06405 }
06406         YY_BREAK
06407 /* pp identifier ucn */
06408 case 154:
06409 YY_RULE_SETUP
06410 {
06411         pp_lex_guts_logger << "identifier with bad ucn\n" << msg::eolog;
06412 
06413         LOCSAVE;
06414         return pp_token::create(LOCGET,pp_token::TOK_IDENT,EXTRACT_BAD_IDENTIFIER(yyleng));
06415 }
06416         YY_BREAK
06417 /* start of recognition of directives */
06418 case 155:
06419 /* rule 155 can match eol */
06420 YY_RULE_SETUP
06421 {
06422         pp_lex_guts_logger << "hash in directive\n" << msg::eolog;
06423 
06424    BEGIN(directive_name);
06425    
06426    SKIP(yyleng - 1);
06427    /* save the location of the # */
06428         LOCSAVE;
06429    SKIP(1);
06430 
06431         return pp_token::create(LOCGET,pp_token::TOK_HASH);
06432 }
06433         YY_BREAK
06434 /* ## is longer than # and requires special rule */
06435 case 156:
06436 /* rule 156 can match eol */
06437 YY_RULE_SETUP
06438 {
06439         pp_lex_guts_logger << "hash_hash in directive\n" << msg::eolog;
06440 
06441    BEGIN(INITIAL);
06442    /* return the characters */
06443    yyless(0);
06444 
06445 }
06446         YY_BREAK
06447 /* not a directive */
06448 case 157:
06449 /* rule 157 can match eol */
06450 YY_RULE_SETUP
06451 {
06452         pp_lex_guts_logger << "any char in directive\n" << msg::eolog;
06453 
06454    BEGIN(INITIAL);
06455    /* return the character */
06456    yyless(0);
06457 }
06458         YY_BREAK
06459 /* skip padding */
06460 case 158:
06461 /* rule 158 can match eol */
06462 YY_RULE_SETUP
06463 {
06464         pp_lex_guts_logger << "blanks and comments in directive name\n" << msg::eolog;
06465 
06466    ADVANCE;
06467    /* continue scanning */
06468 }
06469         YY_BREAK
06470 case 159:
06471 YY_RULE_SETUP
06472 {
06473         pp_lex_guts_logger << "define in directive name\n" << msg::eolog;
06474 
06475    BEGIN(INITIAL);
06476         LOCSAVE;
06477         ADVANCE;
06478         return pp_token::create(LOCGET,pp_token::TOK_DEFINE);
06479 }
06480         YY_BREAK
06481 case 160:
06482 YY_RULE_SETUP
06483 {
06484         pp_lex_guts_logger << "undef in directive name\n" << msg::eolog;
06485 
06486    BEGIN(INITIAL);
06487         LOCSAVE;
06488         ADVANCE;
06489         return pp_token::create(LOCGET,pp_token::TOK_UNDEF);
06490 }
06491         YY_BREAK
06492 case 161:
06493 YY_RULE_SETUP
06494 {
06495         pp_lex_guts_logger << "pragma in directive name\n" << msg::eolog;
06496 
06497    BEGIN(INITIAL);
06498         LOCSAVE;
06499         ADVANCE;
06500         return pp_token::create(LOCGET,pp_token::TOK_PRAGMA);
06501 }
06502         YY_BREAK
06503 case 162:
06504 YY_RULE_SETUP
06505 {
06506         pp_lex_guts_logger << "error in directive name\n" << msg::eolog;
06507 
06508    BEGIN(INITIAL);
06509         LOCSAVE;
06510         ADVANCE;
06511         return pp_token::create(LOCGET,pp_token::TOK_ERROR);
06512 }
06513         YY_BREAK
06514 case 163:
06515 YY_RULE_SETUP
06516 {
06517         pp_lex_guts_logger << "defined in directive name\n" << msg::eolog;
06518 
06519    BEGIN(INITIAL);
06520         LOCSAVE;
06521         ADVANCE;
06522         return pp_token::create(LOCGET,pp_token::TOK_DEFINED);
06523 }
06524         YY_BREAK
06525 case 164:
06526 YY_RULE_SETUP
06527 {
06528         pp_lex_guts_logger << "if in directive name\n" << msg::eolog;
06529 
06530    BEGIN(INITIAL);
06531         LOCSAVE;
06532         ADVANCE;
06533         return pp_token::create(LOCGET,pp_token::TOK_IF);
06534 }
06535         YY_BREAK
06536 case 165:
06537 YY_RULE_SETUP
06538 {
06539         pp_lex_guts_logger << "ifdef in directive name\n" << msg::eolog;
06540 
06541    BEGIN(INITIAL);
06542         LOCSAVE;
06543         ADVANCE;
06544         return pp_token::create(LOCGET,pp_token::TOK_IFDEF);
06545 }
06546         YY_BREAK
06547 case 166:
06548 YY_RULE_SETUP
06549 {
06550         pp_lex_guts_logger << "ifndef in directive name\n" << msg::eolog;
06551 
06552    BEGIN(INITIAL);
06553         LOCSAVE;
06554         ADVANCE;
06555         return pp_token::create(LOCGET,pp_token::TOK_IFNDEF);
06556 }
06557         YY_BREAK
06558 case 167:
06559 YY_RULE_SETUP
06560 {
06561         pp_lex_guts_logger << "elif in directive name\n" << msg::eolog;
06562 
06563    BEGIN(INITIAL);
06564         LOCSAVE;
06565         ADVANCE;
06566         return pp_token::create(LOCGET,pp_token::TOK_ELIF);
06567 }
06568         YY_BREAK
06569 case 168:
06570 YY_RULE_SETUP
06571 {
06572         pp_lex_guts_logger << "else in directive name\n" << msg::eolog;
06573 
06574    BEGIN(INITIAL);
06575         LOCSAVE;
06576         ADVANCE;
06577         return pp_token::create(LOCGET,pp_token::TOK_ELSE);
06578 }
06579         YY_BREAK
06580 case 169:
06581 YY_RULE_SETUP
06582 {
06583         pp_lex_guts_logger << "endif in directive name\n" << msg::eolog;
06584 
06585    BEGIN(INITIAL);
06586         LOCSAVE;
06587         ADVANCE;
06588         return pp_token::create(LOCGET,pp_token::TOK_ENDIF);
06589 }
06590         YY_BREAK
06591 case 170:
06592 YY_RULE_SETUP
06593 {
06594         pp_lex_guts_logger << "include in directive name\n" << msg::eolog;
06595 
06596    BEGIN(include);
06597         LOCSAVE;
06598    ADVANCE;
06599         return pp_token::create(LOCGET,pp_token::TOK_INCLUDE);
06600 }
06601         YY_BREAK
06602 case 171:
06603 YY_RULE_SETUP
06604 {
06605         pp_lex_guts_logger << "line in directive name\n" << msg::eolog;
06606 
06607         LOCSAVE;
06608    ADVANCE;
06609         return pp_token::create(LOCGET,pp_token::TOK_LINE);
06610 }
06611         YY_BREAK
06612 /* some other or longer identifier */
06613 case 172:
06614 YY_RULE_SETUP
06615 {
06616         pp_lex_guts_logger << "other identifier in directive name\n" << msg::eolog;
06617 
06618    BEGIN(INITIAL);
06619    /* return the identifier */
06620    yyless(0);
06621 }
06622         YY_BREAK
06623 /* something else than the above */
06624 case 173:
06625 /* rule 173 can match eol */
06626 YY_RULE_SETUP
06627 {
06628         pp_lex_guts_logger << "any char in directive name\n" << msg::eolog;
06629 
06630    BEGIN(INITIAL);
06631    /* return the character */
06632    yyless(0);
06633 }
06634         YY_BREAK
06635 /* skip spaces and comments to simplify processing of the following */
06636 case 174:
06637 /* rule 174 can match eol */
06638 YY_RULE_SETUP
06639 {
06640         pp_lex_guts_logger << "blanks and comments in include\n" << msg::eolog;
06641 
06642         ADVANCE;
06643    /* continue scanning */
06644 }
06645         YY_BREAK
06646 /* angle bracketed name */
06647 case 175:
06648 /* rule 175 can match eol */
06649 YY_RULE_SETUP
06650 {
06651         pp_lex_guts_logger << "angle bracketed name in include\n" << msg::eolog;
06652 
06653    BEGIN(INITIAL);
06654         LOCSAVE;
06655         
06656    SKIP(1);
06657         /* everything between the '<' '>' is significant */
06658         ptr<token_value> tv(EXTRACT_UNTIL(character::ascii_gt));
06659    /* skip the '>' and everything but the newline */
06660         ulint len = yyleng - tv->content_get().size() - 2;
06661         SKIP(len);
06662   
06663    /* return only the newline */
06664         yyless(yyleng - 1);
06665 
06666         return pp_token::create(LOCGET,pp_token::TOK_INCL_HCHAR,tv);
06667 }
06668         YY_BREAK
06669 /* double quoted name */
06670 case 176:
06671 /* rule 176 can match eol */
06672 YY_RULE_SETUP
06673 {
06674         pp_lex_guts_logger << "double quoted name in include\n" << msg::eolog;
06675 
06676    BEGIN(INITIAL);
06677         LOCSAVE;
06678    
06679    SKIP(1);
06680         /* everything between the "" is significant, no support for escape sequences */
06681         ptr<token_value> tv(EXTRACT_UNTIL(character::ascii_dquote));
06682    /* skip the '"' and everything till but the newline */
06683         ulint len = yyleng - tv->content_get().size() - 2;
06684         SKIP(len);
06685   
06686    /* return only the newline */
06687         yyless(yyleng - 1);
06688 
06689         return pp_token::create(LOCGET,pp_token::TOK_INCL_QCHAR,tv);
06690 }
06691         YY_BREAK
06692 /* catches errors and third type include, which is handled by normal parser */
06693 case 177:
06694 /* rule 177 can match eol */
06695 YY_RULE_SETUP
06696 {
06697         pp_lex_guts_logger << "any char in include\n" << msg::eolog;
06698 
06699    BEGIN(INITIAL);
06700         LOCSAVE;
06701    /* return the character */
06702         yyless(0);
06703         return pp_token::create(LOCGET,pp_token::TOK_INCL_SIG);
06704 }
06705         YY_BREAK
06706 /* special end of file class, not the flex <<EOF>> */
06707 case 178:
06708 YY_RULE_SETUP
06709 {
06710         pp_lex_guts_logger << "eof\n" << msg::eolog;
06711    
06712         LOCSAVE;
06713         ADVANCE;
06714         return pp_token::create(LOCGET,pp_token::TOK_FILE_END);
06715 }
06716         YY_BREAK
06717 /* anything which is not a part of a token; " or ' will not appear here */
06718 case 179:
06719 /* rule 179 can match eol */
06720 YY_RULE_SETUP
06721 {
06722         pp_lex_guts_logger << "other\n" << msg::eolog;
06723    
06724         LOCSAVE;
06725         return pp_token::create(LOCGET,pp_token::TOK_OTHER,EXTRACT_ORDINARY(yyleng));
06726 }
06727         YY_BREAK
06728 case 180:
06729 YY_RULE_SETUP
06730 ECHO;
06731         YY_BREAK
06732 case YY_STATE_EOF(INITIAL):
06733 case YY_STATE_EOF(include):
06734 case YY_STATE_EOF(line):
06735 case YY_STATE_EOF(directive):
06736 case YY_STATE_EOF(directive_name):
06737         yyterminate();
06738 
06739         case YY_END_OF_BUFFER:
06740                 {
06741                 /* Amount of text matched not including the EOB char. */
06742                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
06743 
06744                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
06745                 *yy_cp = (yy_hold_char);
06746                 YY_RESTORE_YY_MORE_OFFSET
06747 
06748                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
06749                         {
06750                         /* We're scanning a new file or input source.  It's
06751                          * possible that this happened because the user
06752                          * just pointed yyin at a new source and called
06753                          * yylex().  If so, then we have to assure
06754                          * consistency between YY_CURRENT_BUFFER and our
06755                          * globals.  Here is the right place to do so, because
06756                          * this is the first action (other than possibly a
06757                          * back-up) that will match for the new input source.
06758                          */
06759                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
06760                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
06761                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
06762                         }
06763 
06764                 /* Note that here we test for yy_c_buf_p "<=" to the position
06765                  * of the first EOB in the buffer, since yy_c_buf_p will
06766                  * already have been incremented past the NUL character
06767                  * (since all states make transitions on EOB to the
06768                  * end-of-buffer state).  Contrast this with the test
06769                  * in input().
06770                  */
06771                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
06772                         { /* This was really a NUL. */
06773                         yy_state_type yy_next_state;
06774 
06775                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
06776 
06777                         yy_current_state = yy_get_previous_state(  );
06778 
06779                         /* Okay, we're now positioned to make the NUL
06780                          * transition.  We couldn't have
06781                          * yy_get_previous_state() go ahead and do it
06782                          * for us because it doesn't know how to deal
06783                          * with the possibility of jamming (and we don't
06784                          * want to build jamming into it because then it
06785                          * will run more slowly).
06786                          */
06787 
06788                         yy_next_state = yy_try_NUL_trans( yy_current_state );
06789 
06790                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
06791 
06792                         if ( yy_next_state )
06793                                 {
06794                                 /* Consume the NUL. */
06795                                 yy_cp = ++(yy_c_buf_p);
06796                                 yy_current_state = yy_next_state;
06797                                 goto yy_match;
06798                                 }
06799 
06800                         else
06801                                 {
06802                                 yy_cp = (yy_c_buf_p);
06803                                 goto yy_find_action;
06804                                 }
06805                         }
06806 
06807                 else switch ( yy_get_next_buffer(  ) )
06808                         {
06809                         case EOB_ACT_END_OF_FILE:
06810                                 {
06811                                 (yy_did_buffer_switch_on_eof) = 0;
06812 
06813                                 if ( yywrap( ) )
06814                                         {
06815                                         /* Note: because we've taken care in
06816                                          * yy_get_next_buffer() to have set up
06817                                          * yytext, we can now set up
06818                                          * yy_c_buf_p so that if some total
06819                                          * hoser (like flex itself) wants to
06820                                          * call the scanner after we return the
06821                                          * YY_NULL, it'll still work - another
06822                                          * YY_NULL will get returned.
06823                                          */
06824                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
06825 
06826                                         yy_act = YY_STATE_EOF(YY_START);
06827                                         goto do_action;
06828                                         }
06829 
06830                                 else
06831                                         {
06832                                         if ( ! (yy_did_buffer_switch_on_eof) )
06833                                                 YY_NEW_FILE;
06834                                         }
06835                                 break;
06836                                 }
06837 
06838                         case EOB_ACT_CONTINUE_SCAN:
06839                                 (yy_c_buf_p) =
06840                                         (yytext_ptr) + yy_amount_of_matched_text;
06841 
06842                                 yy_current_state = yy_get_previous_state(  );
06843 
06844                                 yy_cp = (yy_c_buf_p);
06845                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
06846                                 goto yy_match;
06847 
06848                         case EOB_ACT_LAST_MATCH:
06849                                 (yy_c_buf_p) =
06850                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
06851 
06852                                 yy_current_state = yy_get_previous_state(  );
06853 
06854                                 yy_cp = (yy_c_buf_p);
06855                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
06856                                 goto yy_find_action;
06857                         }
06858                 break;
06859                 }
06860 
06861         default:
06862                 YY_FATAL_ERROR(
06863                         "fatal flex scanner internal error--no action found" );
06864         } /* end of action switch */
06865                 } /* end of scanning one token */
06866 } /* end of yylex */

YY_BUFFER_STATE yy_create_buffer ( FILE *  file,
int  size 
)

Allocate and initialize an input buffer state.

Parameters:
file A readable stream.
size The character buffer size in bytes. When in doubt, use YY_BUF_SIZE.
Returns:
the allocated buffer state.

void yy_delete_buffer ( YY_BUFFER_STATE  b  ) 

Destroy the buffer.

Parameters:
b a buffer created with yy_create_buffer()

static void yy_fatal_error ( char *  msg  )  [static]

Definition at line 7397 of file pp_lex_guts.yy.cc.

References YY_EXIT_FAILURE.

07398 {
07399         /* (void) fprintf( stderr, "%s\n", msg ); */
07400         (void)msg;
07401         exit( YY_EXIT_FAILURE );
07402 }

static void yy_fatal_error ( char  msg[]  )  [static]

void yy_flush_buffer ( YY_BUFFER_STATE  b  ) 

Discard all buffered characters. On the next scan, YY_INPUT will be called.

Parameters:
b the buffer state to be flushed, usually YY_CURRENT_BUFFER.

static int yy_get_next_buffer ( void   )  [static]

Definition at line 6875 of file pp_lex_guts.yy.cc.

References b, EOB_ACT_END_OF_FILE, EOB_ACT_LAST_MATCH, YY_BUFFER_EOF_PENDING, yy_c_buf_p, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, YY_FATAL_ERROR, YY_MORE_ADJ, yy_n_chars, yyrealloc(), and yytext_ptr.

06876 {
06877         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
06878         register char *source = (yytext_ptr);
06879         register int number_to_move, i;
06880         int ret_val;
06881 
06882         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
06883                 YY_FATAL_ERROR(
06884                 "fatal flex scanner internal error--end of buffer missed" );
06885 
06886         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
06887                 { /* Don't try to fill the buffer, so this is an EOF. */
06888                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
06889                         {
06890                         /* We matched a single character, the EOB, so
06891                          * treat this as a final EOF.
06892                          */
06893                         return EOB_ACT_END_OF_FILE;
06894                         }
06895 
06896                 else
06897                         {
06898                         /* We matched some text prior to the EOB, first
06899                          * process it.
06900                          */
06901                         return EOB_ACT_LAST_MATCH;
06902                         }
06903                 }
06904 
06905         /* Try to read more data. */
06906 
06907         /* First move last chars to start of buffer. */
06908         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
06909 
06910         for ( i = 0; i < number_to_move; ++i )
06911                 *(dest++) = *(source++);
06912 
06913         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
06914                 /* don't do the read, it's not guaranteed to return an EOF,
06915                  * just force an EOF
06916                  */
06917                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
06918 
06919         else
06920                 {
06921                         int num_to_read =
06922                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
06923 
06924                 while ( num_to_read <= 0 )
06925                         { /* Not enough room in the buffer - grow it. */
06926 
06927                         /* just a shorter name for the current buffer */
06928                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
06929 
06930                         int yy_c_buf_p_offset =
06931                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
06932 
06933                         if ( b->yy_is_our_buffer )
06934                                 {
06935                                 int new_size = b->yy_buf_size * 2;
06936 
06937                                 if ( new_size <= 0 )
06938                                         b->yy_buf_size += b->yy_buf_size / 8;
06939                                 else
06940                                         b->yy_buf_size *= 2;
06941 
06942                                 b->yy_ch_buf = (char *)
06943                                         /* Include room in for 2 EOB chars. */
06944                                         yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
06945                                 }
06946                         else
06947                                 /* Can't grow it, we don't own it. */
06948                                 b->yy_ch_buf = 0;
06949 
06950                         if ( ! b->yy_ch_buf )
06951                                 YY_FATAL_ERROR(
06952                                 "fatal error - scanner input buffer overflow" );
06953 
06954                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
06955 
06956                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
06957                                                 number_to_move - 1;
06958 
06959                         }
06960 
06961                 if ( num_to_read > YY_READ_BUF_SIZE )
06962                         num_to_read = YY_READ_BUF_SIZE;
06963 
06964                 /* Read in more data. */
06965                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
06966                         (yy_n_chars), num_to_read );
06967 
06968                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
06969                 }
06970 
06971         if ( (yy_n_chars) == 0 )
06972                 {
06973                 if ( number_to_move == YY_MORE_ADJ )
06974                         {
06975                         ret_val = EOB_ACT_END_OF_FILE;
06976                         yyrestart(yyin  );
06977                         }
06978 
06979                 else
06980                         {
06981                         ret_val = EOB_ACT_LAST_MATCH;
06982                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
06983                                 YY_BUFFER_EOF_PENDING;
06984                         }
06985                 }
06986 
06987         else
06988                 ret_val = EOB_ACT_CONTINUE_SCAN;
06989 
06990         (yy_n_chars) += number_to_move;
06991         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
06992         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
06993 
06994         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
06995 
06996         return ret_val;
06997 }

static yy_state_type yy_get_previous_state ( void   )  [static]

Definition at line 7001 of file pp_lex_guts.yy.cc.

References yy_c_buf_p, YY_MORE_ADJ, YY_SC_TO_UI, yy_start, and yytext_ptr.

07002 {
07003         register yy_state_type yy_current_state;
07004         register char *yy_cp;
07005     
07006         yy_current_state = (yy_start);
07007 
07008         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
07009                 {
07010                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 99);
07011                 if ( yy_accept[yy_current_state] )
07012                         {
07013                         (yy_last_accepting_state) = yy_current_state;
07014                         (yy_last_accepting_cpos) = yy_cp;
07015                         }
07016                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
07017                         {
07018                         yy_current_state = (int) yy_def[yy_current_state];
07019                         if ( yy_current_state >= 1094 )
07020                                 yy_c = yy_meta[(unsigned int) yy_c];
07021                         }
07022                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
07023                 }
07024 
07025         return yy_current_state;
07026 }

static void yy_init_buffer ( YY_BUFFER_STATE  b,
FILE *  file 
) [static]

Definition at line 7244 of file pp_lex_guts.yy.cc.

References b, YY_CURRENT_BUFFER, and yy_flush_buffer().

07246 {
07247 #if 0
07248         int oerrno = errno;
07249 #endif
07250     
07251         yy_flush_buffer(b );
07252 
07253         b->yy_input_file = file;
07254         b->yy_fill_buffer = 1;
07255 
07256     /* If b is the current buffer, then yy_init_buffer was _probably_
07257      * called from yyrestart() or through yy_get_next_buffer.
07258      * In that case, we don't want to reset the lineno or column.
07259      */
07260     if (b != YY_CURRENT_BUFFER){
07261         b->yy_bs_lineno = 1;
07262         b->yy_bs_column = 0;
07263     }
07264 
07265         b->yy_is_interactive = 1;
07266 
07267 #if 0
07268         errno = oerrno;
07269 #endif
07270 }

static int yy_init_globals ( void   )  [static]

Definition at line 7501 of file pp_lex_guts.yy.cc.

References yy_buffer_stack, yy_buffer_stack_max, yy_buffer_stack_top, yy_init, yy_start, yyin, and yyout.

07502 {
07503         /* Initialization is the same as for the non-reentrant scanner.
07504      * This function is called from yylex_destroy(), so don't allocate here.
07505      */
07506 
07507     (yy_buffer_stack) = 0;
07508     (yy_buffer_stack_top) = 0;
07509     (yy_buffer_stack_max) = 0;
07510     (yy_c_buf_p) = (char *) 0;
07511     (yy_init) = 0;
07512     (yy_start) = 0;
07513 
07514 /* Defined in main.c */
07515 #ifdef YY_STDINIT
07516     yyin = stdin;
07517     yyout = stdout;
07518 #else
07519     yyin = (FILE *) 0;
07520     yyout = (FILE *) 0;
07521 #endif
07522 
07523     /* For future reference: Set errno on error, since we are called by
07524      * yylex_init()
07525      */
07526     return 0;
07527 }

static void yy_load_buffer_state ( void   )  [static]

Definition at line 7183 of file pp_lex_guts.yy.cc.

References YY_CURRENT_BUFFER_LVALUE, yy_hold_char, yy_n_chars, yyin, and yytext_ptr.

07184 {
07185         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
07186         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
07187         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
07188         (yy_hold_char) = *(yy_c_buf_p);
07189 }

YY_BUFFER_STATE yy_scan_buffer ( char *  base,
yy_size_t  size 
)

YY_BUFFER_STATE yy_scan_bytes ( char *  bytes,
int  len 
)

YY_BUFFER_STATE yy_scan_string ( char *  yy_str  ) 

void yy_switch_to_buffer ( YY_BUFFER_STATE  new_buffer  ) 

Switch to a different input buffer.

Parameters:
new_buffer The new input buffer.

static yy_state_type yy_try_NUL_trans ( yy_state_type  current_state  )  [static]

Definition at line 7033 of file pp_lex_guts.yy.cc.

References yy_c_buf_p.

07034 {
07035         register int yy_is_jam;
07036         register char *yy_cp = (yy_c_buf_p);
07037 
07038         register YY_CHAR yy_c = 99;
07039         if ( yy_accept[yy_current_state] )
07040                 {
07041                 (yy_last_accepting_state) = yy_current_state;
07042                 (yy_last_accepting_cpos) = yy_cp;
07043                 }
07044         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
07045                 {
07046                 yy_current_state = (int) yy_def[yy_current_state];
07047                 if ( yy_current_state >= 1094 )
07048                         yy_c = yy_meta[(unsigned int) yy_c];
07049                 }
07050         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
07051         yy_is_jam = (yy_current_state == 1093);
07052 
07053         return yy_is_jam ? 0 : yy_current_state;
07054 }

void* yyalloc ( yy_size_t   ) 

static void yyensure_buffer_stack ( void   )  [static]

Definition at line 7354 of file pp_lex_guts.yy.cc.

References yy_buffer_stack, yy_buffer_stack_max, yy_buffer_stack_top, yyalloc(), and yyrealloc().

07355 {
07356         int num_to_alloc;
07357     
07358         if (!(yy_buffer_stack)) {
07359 
07360                 /* First allocation is just for 2 elements, since we don't know if this
07361                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
07362                  * immediate realloc on the next call.
07363          */
07364                 num_to_alloc = 1;
07365                 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
07366                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
07367                                                                 );
07368                 
07369                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
07370                                 
07371                 (yy_buffer_stack_max) = num_to_alloc;
07372                 (yy_buffer_stack_top) = 0;
07373                 return;
07374         }
07375 
07376         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
07377 
07378                 /* Increase the buffer to prepare for a possible push. */
07379                 int grow_size = 8 /* arbitrary grow size */;
07380 
07381                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
07382                 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
07383                                                                 ((yy_buffer_stack),
07384                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
07385                                                                 );
07386 
07387                 /* zero only the new slots.*/
07388                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
07389                 (yy_buffer_stack_max) = num_to_alloc;
07390         }
07391 }

void yyfree ( void *   ) 

int yyget_debug ( void   ) 

Definition at line 7491 of file pp_lex_guts.yy.cc.

07492 {
07493         return yy_flex_debug;
07494 }

FILE* yyget_in ( void   ) 

Get the input stream.

Definition at line 7435 of file pp_lex_guts.yy.cc.

References yyin.

07436 {
07437         return yyin;
07438 }

int yyget_leng ( void   ) 

Get the length of the current token.

Definition at line 7451 of file pp_lex_guts.yy.cc.

References yyleng.

07452 {
07453         return yyleng;
07454 }

int yyget_lineno ( void   ) 

Get the current line number.

Definition at line 7426 of file pp_lex_guts.yy.cc.

07427 {
07428         
07429     return yylineno;
07430 }

FILE* yyget_out ( void   ) 

Get the output stream.

Definition at line 7443 of file pp_lex_guts.yy.cc.

References yyout.

07444 {
07445         return yyout;
07446 }

char* yyget_text ( void   ) 

Get the current token.

Definition at line 7460 of file pp_lex_guts.yy.cc.

07461 {
07462         return yytext;
07463 }

int yylex_destroy ( void   ) 

Definition at line 7530 of file pp_lex_guts.yy.cc.

References yy_buffer_stack, YY_CURRENT_BUFFER, YY_CURRENT_BUFFER_LVALUE, yy_delete_buffer(), yy_init_globals(), yyfree(), and yypop_buffer_state().

07531 {
07532     
07533     /* Pop the buffer stack, destroying each element. */
07534         while(YY_CURRENT_BUFFER){
07535                 yy_delete_buffer(YY_CURRENT_BUFFER  );
07536                 YY_CURRENT_BUFFER_LVALUE = NULL;
07537                 yypop_buffer_state();
07538         }
07539 
07540         /* Destroy the stack itself. */
07541         yyfree((yy_buffer_stack) );
07542         (yy_buffer_stack) = NULL;
07543 
07544     /* Reset the globals. This is important in a non-reentrant scanner so the next time
07545      * yylex() is called, initialization will occur. */
07546     yy_init_globals( );
07547 
07548     return 0;
07549 }

void yypop_buffer_state ( void   ) 

Removes and deletes the top of the stack, if present. The next element becomes the new top.

void yypush_buffer_state ( YY_BUFFER_STATE  new_buffer  ) 

Pushes the new state onto the stack. The new state becomes the current state. This function will allocate the stack if necessary.

Parameters:
new_buffer The new state.

void* yyrealloc ( void *  ,
yy_size_t   
)

void yyrestart ( FILE *  input_file  ) 

Immediately switch to a different input stream.

Parameters:
input_file A readable stream.
Note:
This function does not reset the start condition to INITIAL .

void yyset_debug ( int  bdebug  ) 

Definition at line 7496 of file pp_lex_guts.yy.cc.

07497 {
07498         yy_flex_debug = bdebug ;
07499 }

void yyset_in ( FILE *  in_str  ) 

Set the input stream. This does not discard the current input buffer.

Parameters:
in_str A readable stream.
See also:
yy_switch_to_buffer

Definition at line 7481 of file pp_lex_guts.yy.cc.

References yyin.

07482 {
07483         yyin = in_str ;
07484 }

void yyset_lineno ( int  line_number  ) 

Set the current line number.

Parameters:
line_number 

Definition at line 7469 of file pp_lex_guts.yy.cc.

07470 {
07471     
07472     yylineno = line_number;
07473 }

void yyset_out ( FILE *  out_str  ) 

Definition at line 7486 of file pp_lex_guts.yy.cc.

References yyout.

07487 {
07488         yyout = out_str ;
07489 }


Variable Documentation

pp_lex* current_ppl [static]

Current wrapper class, which will be live when used.

Definition at line 4273 of file pp_lex_guts.yy.cc.

Referenced by lestes::lang::cplus::lex::pp_lex::activate(), and lestes::lang::cplus::lex::pp_lex::read().

ucn_token_buffer* current_utb [static]

Current ucn token buffer, which will be live when used.

Definition at line 4276 of file pp_lex_guts.yy.cc.

Referenced by lestes::lang::cplus::lex::pp_lex::activate().

flex_int16_t yy_accept[1094] [static]

Definition at line 367 of file pp_lex_guts.yy.cc.

flex_int16_t yy_base[1204] [static]

Definition at line 539 of file pp_lex_guts.yy.cc.

YY_BUFFER_STATE* yy_buffer_stack = 0 [static]

Stack as an array.

Definition at line 247 of file pp_lex_guts.yy.cc.

size_t yy_buffer_stack_max = 0 [static]

capacity of stack.

Definition at line 246 of file pp_lex_guts.yy.cc.

size_t yy_buffer_stack_top = 0 [static]

index of top of stack.

Definition at line 245 of file pp_lex_guts.yy.cc.

char* yy_c_buf_p = (char *) 0 [static]

Definition at line 270 of file pp_lex_guts.yy.cc.

flex_int16_t yy_chk[15282] [static]

Definition at line 2498 of file pp_lex_guts.yy.cc.

flex_int16_t yy_def[1204] [static]

Definition at line 676 of file pp_lex_guts.yy.cc.

int yy_did_buffer_switch_on_eof [static]

Definition at line 277 of file pp_lex_guts.yy.cc.

flex_int32_t yy_ec[256] [static]

Definition at line 492 of file pp_lex_guts.yy.cc.

int yy_flex_debug = 0

Definition at line 4187 of file pp_lex_guts.yy.cc.

int yy_flex_debug

Definition at line 1265 of file concat_guts.yy.cc.

char yy_hold_char [static]

Definition at line 265 of file pp_lex_guts.yy.cc.

int yy_init = 0 [static]

Definition at line 271 of file pp_lex_guts.yy.cc.

char* yy_last_accepting_cpos [static]

Definition at line 4184 of file pp_lex_guts.yy.cc.

yy_state_type yy_last_accepting_state [static]

Definition at line 4183 of file pp_lex_guts.yy.cc.

flex_int32_t yy_meta[100] [static]

Initial value:

    {   0,
        1,    1,    1,    2,    1,    1,    1,    1,    1,    1,
        1,    1,    3,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    4

    }

Definition at line 524 of file pp_lex_guts.yy.cc.

int yy_n_chars [static]

Definition at line 266 of file pp_lex_guts.yy.cc.

flex_int16_t yy_nxt[15282] [static]

Definition at line 813 of file pp_lex_guts.yy.cc.

int yy_start = 0 [static]

Definition at line 272 of file pp_lex_guts.yy.cc.

FILE* yyin = (FILE *) 0

Definition at line 332 of file pp_lex_guts.yy.cc.

FILE* yyin

Definition at line 332 of file concat_guts.yy.cc.

int yyleng

Definition at line 267 of file pp_lex_guts.yy.cc.

int yyleng

Definition at line 267 of file concat_guts.yy.cc.

int yylineno = 1

Definition at line 338 of file pp_lex_guts.yy.cc.

int yylineno

Definition at line 338 of file concat_guts.yy.cc.

FILE * yyout = (FILE *) 0

Definition at line 332 of file pp_lex_guts.yy.cc.

FILE * yyout

Definition at line 332 of file concat_guts.yy.cc.

char* yytext

Definition at line 4196 of file pp_lex_guts.yy.cc.

char* yytext

Definition at line 1274 of file concat_guts.yy.cc.


Generated on Mon Feb 12 18:23:46 2007 for lestes by doxygen 1.5.1-20070107