bintools/rcomp/src/rcompl.cpp
changeset 0 044383f39525
child 590 360bd6b35136
equal deleted inserted replaced
-1:000000000000 0:044383f39525
       
     1 /*
       
     2 * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 * A lexical scanner generated by flex.
       
    16 * Scanner skeleton version:
       
    17 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
       
    18 *
       
    19 */
       
    20 
       
    21 
       
    22 #define FLEX_SCANNER
       
    23 #define YY_FLEX_MAJOR_VERSION 2
       
    24 #define YY_FLEX_MINOR_VERSION 5
       
    25 
       
    26 #include <stdio.h>
       
    27 
       
    28 
       
    29 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
       
    30 #ifdef c_plusplus
       
    31 #ifndef __cplusplus
       
    32 #define __cplusplus
       
    33 #endif
       
    34 #endif
       
    35 
       
    36 
       
    37 #ifdef __cplusplus
       
    38 
       
    39 #include <stdlib.h>
       
    40 #include <unistd.h>
       
    41 
       
    42 /* Use prototypes in function declarations. */
       
    43 #define YY_USE_PROTOS
       
    44 
       
    45 /* The "const" storage-class-modifier is valid. */
       
    46 #define YY_USE_CONST
       
    47 
       
    48 #else	/* ! __cplusplus */
       
    49 
       
    50 #if __STDC__
       
    51 
       
    52 #define YY_USE_PROTOS
       
    53 #define YY_USE_CONST
       
    54 
       
    55 #endif	/* __STDC__ */
       
    56 #endif	/* ! __cplusplus */
       
    57 
       
    58 #ifdef __TURBOC__
       
    59  #pragma warn -rch
       
    60  #pragma warn -use
       
    61 #include <io.h>
       
    62 #include <stdlib.h>
       
    63 #define YY_USE_CONST
       
    64 #define YY_USE_PROTOS
       
    65 #endif
       
    66 
       
    67 #ifdef YY_USE_CONST
       
    68 #define yyconst const
       
    69 #else
       
    70 #define yyconst
       
    71 #endif
       
    72 
       
    73 
       
    74 #ifdef YY_USE_PROTOS
       
    75 #define YY_PROTO(proto) proto
       
    76 #else
       
    77 #define YY_PROTO(proto) ()
       
    78 #endif
       
    79 
       
    80 /* Returned upon end-of-file. */
       
    81 #define YY_NULL 0
       
    82 
       
    83 /* Promotes a possibly negative, possibly signed char to an unsigned
       
    84  * integer for use as an array index.  If the signed char is negative,
       
    85  * we want to instead treat it as an 8-bit unsigned char, hence the
       
    86  * double cast.
       
    87  */
       
    88 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
       
    89 
       
    90 /* Enter a start condition.  This macro really ought to take a parameter,
       
    91  * but we do it the disgusting crufty way forced on us by the ()-less
       
    92  * definition of BEGIN.
       
    93  */
       
    94 #define BEGIN yy_start = 1 + 2 *
       
    95 
       
    96 /* Translate the current start state into a value that can be later handed
       
    97  * to BEGIN to return to the state.  The YYSTATE alias is for lex
       
    98  * compatibility.
       
    99  */
       
   100 #define YY_START ((yy_start - 1) / 2)
       
   101 #define YYSTATE YY_START
       
   102 
       
   103 /* Action number for EOF rule of a given start state. */
       
   104 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
       
   105 
       
   106 /* Special action meaning "start processing a new file". */
       
   107 #define YY_NEW_FILE yyrestart( yyin )
       
   108 
       
   109 #define YY_END_OF_BUFFER_CHAR 0
       
   110 
       
   111 /* Size of default input buffer. */
       
   112 #define YY_BUF_SIZE 16384
       
   113 
       
   114 typedef struct yy_buffer_state *YY_BUFFER_STATE;
       
   115 
       
   116 extern int yyleng;
       
   117 extern FILE *yyin, *yyout;
       
   118 
       
   119 #define EOB_ACT_CONTINUE_SCAN 0
       
   120 #define EOB_ACT_END_OF_FILE 1
       
   121 #define EOB_ACT_LAST_MATCH 2
       
   122 
       
   123 /* The funky do-while in the following #define is used to turn the definition
       
   124  * int a single C statement (which needs a semi-colon terminator).  This
       
   125  * avoids problems with code like:
       
   126  *
       
   127  * 	if ( condition_holds )
       
   128  *		yyless( 5 );
       
   129  *	else
       
   130  *		do_something_else();
       
   131  *
       
   132  * Prior to using the do-while the compiler would get upset at the
       
   133  * "else" because it interpreted the "if" statement as being all
       
   134  * done when it reached the ';' after the yyless() call.
       
   135  */
       
   136 
       
   137 /* Return all but the first 'n' matched characters back to the input stream. */
       
   138 
       
   139 #define yyless(n) \
       
   140 	do \
       
   141 		{ \
       
   142 		/* Undo effects of setting up yytext. */ \
       
   143 		*yy_cp = yy_hold_char; \
       
   144 		YY_RESTORE_YY_MORE_OFFSET \
       
   145 		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
       
   146 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
       
   147 		} \
       
   148 	while ( 0 )
       
   149 
       
   150 #define unput(c) yyunput( c, yytext_ptr )
       
   151 
       
   152 /* The following is because we cannot portably get our hands on size_t
       
   153  * (without autoconf's help, which isn't available because we want
       
   154  * flex-generated scanners to compile on their own).
       
   155  */
       
   156 typedef unsigned int yy_size_t;
       
   157 
       
   158 
       
   159 struct yy_buffer_state
       
   160 	{
       
   161 	FILE *yy_input_file;
       
   162 
       
   163 	char *yy_ch_buf;		/* input buffer */
       
   164 	char *yy_buf_pos;		/* current position in input buffer */
       
   165 
       
   166 	/* Size of input buffer in bytes, not including room for EOB
       
   167 	 * characters.
       
   168 	 */
       
   169 	yy_size_t yy_buf_size;
       
   170 
       
   171 	/* Number of characters read into yy_ch_buf, not including EOB
       
   172 	 * characters.
       
   173 	 */
       
   174 	int yy_n_chars;
       
   175 
       
   176 	/* Whether we "own" the buffer - i.e., we know we created it,
       
   177 	 * and can realloc() it to grow it, and should free() it to
       
   178 	 * delete it.
       
   179 	 */
       
   180 	int yy_is_our_buffer;
       
   181 
       
   182 	/* Whether this is an "interactive" input source; if so, and
       
   183 	 * if we're using stdio for input, then we want to use getc()
       
   184 	 * instead of fread(), to make sure we stop fetching input after
       
   185 	 * each newline.
       
   186 	 */
       
   187 	int yy_is_interactive;
       
   188 
       
   189 	/* Whether we're considered to be at the beginning of a line.
       
   190 	 * If so, '^' rules will be active on the next match, otherwise
       
   191 	 * not.
       
   192 	 */
       
   193 	int yy_at_bol;
       
   194 
       
   195 	/* Whether to try to fill the input buffer when we reach the
       
   196 	 * end of it.
       
   197 	 */
       
   198 	int yy_fill_buffer;
       
   199 
       
   200 	int yy_buffer_status;
       
   201 #define YY_BUFFER_NEW 0
       
   202 #define YY_BUFFER_NORMAL 1
       
   203 	/* When an EOF's been seen but there's still some text to process
       
   204 	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
       
   205 	 * shouldn't try reading from the input source any more.  We might
       
   206 	 * still have a bunch of tokens to match, though, because of
       
   207 	 * possible backing-up.
       
   208 	 *
       
   209 	 * When we actually see the EOF, we change the status to "new"
       
   210 	 * (via yyrestart()), so that the user can continue scanning by
       
   211 	 * just pointing yyin at a new input file.
       
   212 	 */
       
   213 #define YY_BUFFER_EOF_PENDING 2
       
   214 	};
       
   215 
       
   216 static YY_BUFFER_STATE yy_current_buffer = 0;
       
   217 
       
   218 /* We provide macros for accessing buffer states in case in the
       
   219  * future we want to put the buffer states in a more general
       
   220  * "scanner state".
       
   221  */
       
   222 #define YY_CURRENT_BUFFER yy_current_buffer
       
   223 
       
   224 
       
   225 /* yy_hold_char holds the character lost when yytext is formed. */
       
   226 static char yy_hold_char;
       
   227 
       
   228 static int yy_n_chars;		/* number of characters read into yy_ch_buf */
       
   229 
       
   230 
       
   231 int yyleng;
       
   232 
       
   233 /* Points to current character in buffer. */
       
   234 static char *yy_c_buf_p = (char *) 0;
       
   235 static int yy_init = 1;		/* whether we need to initialize */
       
   236 static int yy_start = 0;	/* start state number */
       
   237 
       
   238 /* Flag which is used to allow yywrap()'s to do buffer switches
       
   239  * instead of setting up a fresh yyin.  A bit of a hack ...
       
   240  */
       
   241 static int yy_did_buffer_switch_on_eof;
       
   242 
       
   243 void yyrestart YY_PROTO(( FILE *input_file ));
       
   244 
       
   245 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
       
   246 void yy_load_buffer_state YY_PROTO(( void ));
       
   247 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
       
   248 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
       
   249 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
       
   250 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
       
   251 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
       
   252 
       
   253 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
       
   254 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
       
   255 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
       
   256 
       
   257 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
       
   258 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
       
   259 static void yy_flex_free YY_PROTO(( void * ));
       
   260 
       
   261 #define yy_new_buffer yy_create_buffer
       
   262 
       
   263 #define yy_set_interactive(is_interactive) \
       
   264 	{ \
       
   265 	if ( ! yy_current_buffer ) \
       
   266 		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
       
   267 	yy_current_buffer->yy_is_interactive = is_interactive; \
       
   268 	}
       
   269 
       
   270 #define yy_set_bol(at_bol) \
       
   271 	{ \
       
   272 	if ( ! yy_current_buffer ) \
       
   273 		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
       
   274 	yy_current_buffer->yy_at_bol = at_bol; \
       
   275 	}
       
   276 
       
   277 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
       
   278 
       
   279 
       
   280 #define YY_USES_REJECT
       
   281 typedef unsigned char YY_CHAR;
       
   282 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
       
   283 typedef int yy_state_type;
       
   284 extern int yylineno;
       
   285 int yylineno = 1;
       
   286 extern char *yytext;
       
   287 #define yytext_ptr yytext
       
   288 
       
   289 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
       
   290 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
       
   291 static int yy_get_next_buffer YY_PROTO(( void ));
       
   292 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
       
   293 
       
   294 /* Done after the current pattern has been matched and before the
       
   295  * corresponding action - sets up yytext.
       
   296  */
       
   297 #define YY_DO_BEFORE_ACTION \
       
   298 	yytext_ptr = yy_bp; \
       
   299 	yyleng = (int) (yy_cp - yy_bp); \
       
   300 	yy_hold_char = *yy_cp; \
       
   301 	*yy_cp = '\0'; \
       
   302 	yy_c_buf_p = yy_cp;
       
   303 
       
   304 #define YY_NUM_RULES 81
       
   305 #define YY_END_OF_BUFFER 82
       
   306 static yyconst short int yy_acclist[363] =
       
   307     {   0,
       
   308        82,   80,   81,   62,   80,   81,   63,   81,   63,   80,
       
   309        81,   37,   80,   81,   80,   81,   38,   80,   81,   79,
       
   310        80,   81,   79,   80,   81,   79,   80,   81,   49,   80,
       
   311        81,   49,   80,   81,   48,   80,   81,   48,   80,   81,
       
   312        48,   80,   81,   48,   80,   81,   48,   80,   81,   48,
       
   313        80,   81,   48,   80,   81,   48,   80,   81,   48,   80,
       
   314        81,   48,   80,   81,   48,   80,   81,   48,   80,   81,
       
   315        48,   80,   81,   48,   80,   81,   48,   80,   81,   48,
       
   316        80,   81,   48,   80,   81,   47,   80,   81,   44,   81,
       
   317        47,   80,   81,   45,   47,   80,   81,   46,   47,   80,
       
   318 
       
   319        81,   47,   80,   81,   80,   81,   62,   80,   81,   64,
       
   320        81,   64,   80,   81,   80,   81,   80,   81,   67,   80,
       
   321        81,   66,   81,   66,   67,   80,   81,   72,   80,   81,
       
   322        71,   81,   71,   72,   80,   81,   72,   80,   81,   76,
       
   323        80,   81,   78,   80,   81,   77,   81,   77,   80,   81,
       
   324        78,   80,   81,   80,   81,   65,   49,   48,   48,   48,
       
   325        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
       
   326        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
       
   327        48,   44,   43,   39,   40,   42,   41,   58,   59,   65,
       
   328        70,   76,   74,   75,   68,   69,   68,   69,   73,   53,
       
   329 
       
   330        55,   50,   20,   48,   48,   48,   48,   48,   48,   36,
       
   331        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
       
   332        48,   48,   48,   48,   48,   48,   48,   48,   59,   68,
       
   333        69,   68,   69,   68,   73,   54,   56,   48,   21,   48,
       
   334        24,   48,   48,   48,    9,   48,   48,   33,   48,   48,
       
   335        48,   25,   48,   48,    3,   48,   48,   48,   48,   48,
       
   336        48,   27,   48,   11,   48,   12,   48,   23,   48,   10,
       
   337        48,   48,   48,   60,   61,   57,   51,   22,   48,   48,
       
   338        48,   48,   34,   48,    8,   48,   28,   48,   48,   48,
       
   339        48,   48,   48,   48,   29,   48,   19,   48,   48,   48,
       
   340 
       
   341        48,   48,   48,   52,   48,   26,   48,    7,   48,   48,
       
   342        30,   48,    5,   48,   48,   35,   48,    1,   48,    6,
       
   343        48,   31,   48,   48,   48,   48,   48,   48,   48,   32,
       
   344        48,   48,   48,   48,   48,   48,   48,   48,    2,   48,
       
   345        16,   48,   48,   18,   48,   48,   17,   48,   48,   48,
       
   346        48,   48,   15,   48,   13,   48,   48,   14,   48,   48,
       
   347         4,   48
       
   348     } ;
       
   349 
       
   350 static yyconst short int yy_accept[270] =
       
   351     {   0,
       
   352         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   353         1,    1,    1,    2,    4,    7,    9,   12,   15,   17,
       
   354        20,   23,   26,   29,   32,   35,   38,   41,   44,   47,
       
   355        50,   53,   56,   59,   62,   65,   68,   71,   74,   77,
       
   356        80,   83,   86,   89,   91,   94,   98,  102,  105,  107,
       
   357       110,  112,  115,  117,  119,  122,  124,  128,  131,  133,
       
   358       137,  140,  143,  146,  148,  151,  154,  156,  156,  156,
       
   359       156,  156,  156,  157,  157,  158,  158,  158,  159,  160,
       
   360       161,  162,  163,  164,  165,  166,  167,  168,  169,  170,
       
   361       171,  172,  173,  174,  175,  176,  177,  178,  179,  180,
       
   362 
       
   363       181,  182,  183,  184,  185,  186,  187,  188,  188,  188,
       
   364       188,  188,  190,  190,  190,  190,  191,  192,  193,  194,
       
   365       195,  195,  195,  195,  195,  196,  197,  199,  200,  201,
       
   366       202,  203,  205,  206,  207,  208,  209,  210,  212,  213,
       
   367       214,  215,  216,  217,  218,  219,  220,  221,  222,  223,
       
   368       224,  225,  226,  227,  228,  229,  230,  230,  230,  230,
       
   369       230,  231,  232,  234,  235,  236,  236,  237,  238,  238,
       
   370       239,  241,  243,  244,  245,  247,  248,  250,  251,  252,
       
   371       254,  255,  257,  258,  259,  260,  261,  262,  264,  266,
       
   372       268,  270,  272,  273,  274,  275,  275,  275,  276,  276,
       
   373 
       
   374       276,  277,  277,  278,  280,  281,  282,  283,  285,  287,
       
   375       289,  290,  291,  292,  293,  294,  295,  297,  299,  300,
       
   376       301,  302,  303,  304,  304,  304,  305,  306,  308,  310,
       
   377       311,  313,  315,  316,  318,  320,  322,  324,  325,  326,
       
   378       327,  328,  329,  330,  332,  333,  334,  335,  336,  337,
       
   379       338,  339,  341,  343,  344,  346,  347,  349,  350,  351,
       
   380       352,  353,  355,  357,  358,  360,  361,  363,  363
       
   381     } ;
       
   382 
       
   383 static yyconst int yy_ec[256] =
       
   384     {   0,
       
   385         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
       
   386         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
       
   387         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   388         1,    5,    1,    6,    7,    1,    1,    8,    9,   10,
       
   389        10,   11,   10,   10,   12,   13,   14,   15,   16,   17,
       
   390        18,   19,   19,   20,   19,   21,   19,    1,   10,   10,
       
   391        10,   10,    1,   22,   23,   24,   25,   26,   27,   28,
       
   392        29,   30,   31,   32,   33,   34,   35,   36,   37,   32,
       
   393        32,   38,   39,   40,   41,   32,   42,   43,   44,   32,
       
   394        10,   45,   10,    1,   46,    1,   47,   48,   47,   49,
       
   395 
       
   396        50,   51,   52,   53,   54,   53,   53,   55,   56,   57,
       
   397        58,   53,   53,   59,   60,   61,   62,   63,   64,   65,
       
   398        66,   53,   10,   10,   10,    1,    1,    1,    1,    1,
       
   399         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   400         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   401         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   402         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   403         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   404         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   405         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   406 
       
   407         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   408         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   409         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   410         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   411         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   412         1,    1,    1,    1,    1
       
   413     } ;
       
   414 
       
   415 static yyconst int yy_meta[67] =
       
   416     {   0,
       
   417         1,    2,    3,    2,    2,    4,    1,    1,    4,    1,
       
   418         2,    1,    5,    1,    6,    6,    6,    6,    6,    6,
       
   419         6,    1,    7,    7,    7,    7,    6,    7,    8,    8,
       
   420         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
       
   421         8,    8,    8,    8,    4,    8,    7,    9,    7,    6,
       
   422         9,    8,    8,    8,    8,    8,   10,    8,   10,    8,
       
   423        10,    8,   10,    8,   11,    8
       
   424     } ;
       
   425 
       
   426 static yyconst short int yy_base[284] =
       
   427     {   0,
       
   428         0,    0,   64,   68,   76,   81,   72,   85,   88,   90,
       
   429       100,  112,  566,  567,  105,  567,  567,  567,  560,  567,
       
   430       567,  109,   86,   85,   93,    0,   77,  534,  526,  526,
       
   431       527,  105,  537,  531,  531,   93,  530,  525,  518,  497,
       
   432       491,  497,  567,  567,  548,  567,  567,  135,  544,  146,
       
   433       543,  542,  150,  150,  567,  567,  567,  567,  567,  567,
       
   434       533,    0,  567,  567,  567,  532,    0,  157,  534,  157,
       
   435       136,  162,  567,  172,    0,  179,    0,    0,  516,  503,
       
   436       519,  500,  499,  502,  502,  501,  505,  121,  508,  499,
       
   437       505,  493,  497,  492,  490,  485,  501,  488,  463,  469,
       
   438 
       
   439       463,  567,  567,  567,  567,  567,  567,  516,  164,  199,
       
   440       173,  567,  518,  165,  203,  514,  567,    0,  567,    0,
       
   441       511,  203,  210,  217,  567,  567,  567,  567,  224,  237,
       
   442         0,  194,  491,  479,  492,  480,  490,    0,  480,  476,
       
   443       488,  481,  466,  481,  468,  469,  474,  463,  463,  462,
       
   444       185,  475,  444,  438,  452,  567,  494,  177,  243,  256,
       
   445       490,  489,  488,  259,  487,  486,  250,  263,  270,  471,
       
   446         0,    0,  467,  455,    0,  465,    0,  454,  452,    0,
       
   447       445,    0,  457,  442,  446,  456,  453,  196,    0,    0,
       
   448         0,    0,  425,  244,  567,  475,  459,  567,  473,  457,
       
   449 
       
   450       567,  294,  301,    0,  449,  446,  438,    0,    0,  280,
       
   451       431,  432,  436,  428,  432,  434,    0,    0,  364,  371,
       
   452       361,  357,  345,  246,  269,  308,  362,    0,    0,  381,
       
   453         0,    0,  375,    0,    0,    0,    0,  329,  327,  331,
       
   454       328,  248,  279,    0,  278,  253,  254,  246,  243,  246,
       
   455       256,    0,    0,  221,    0,  218,    0,  170,  164,   95,
       
   456       101,    0,   87,   69,    0,   29,    0,  567,  329,  340,
       
   457       351,  362,  373,  380,  386,  395,  405,  416,  427,  434,
       
   458       440,  446,  455
       
   459     } ;
       
   460 
       
   461 static yyconst short int yy_def[284] =
       
   462     {   0,
       
   463       268,    1,  269,  269,  270,  270,  271,  271,  272,  272,
       
   464       273,  273,  268,  268,  268,  268,  268,  268,  268,  268,
       
   465       268,  268,  268,  274,  274,  275,  275,  275,  275,  275,
       
   466       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   467       275,  275,  268,  268,  268,  268,  268,  276,  277,  277,
       
   468       277,  277,  268,  277,  268,  268,  268,  268,  268,  268,
       
   469       268,  278,  268,  268,  268,  268,  279,  268,  268,  268,
       
   470       280,  281,  268,  268,   25,  268,  282,  275,  275,  275,
       
   471       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   472       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   473 
       
   474       275,  268,  268,  268,  268,  268,  268,  277,  268,  277,
       
   475       277,  268,  268,  268,  283,  277,  268,  278,  268,  279,
       
   476       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   477       282,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   478       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   479       275,  275,  275,  275,  275,  268,  268,  277,  268,  268,
       
   480       277,  277,  277,  268,  277,  268,  268,  268,  268,  275,
       
   481       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   482       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   483       275,  275,  275,  275,  268,  268,  268,  268,  268,  268,
       
   484 
       
   485       268,  268,  268,  275,  275,  275,  275,  275,  275,  275,
       
   486       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   487       275,  275,  275,  268,  268,  268,  275,  275,  275,  275,
       
   488       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   489       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   490       275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
       
   491       275,  275,  275,  275,  275,  275,  275,    0,  268,  268,
       
   492       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   493       268,  268,  268
       
   494     } ;
       
   495 
       
   496 static yyconst short int yy_nxt[634] =
       
   497     {   0,
       
   498        14,   15,   16,   17,   15,   18,   19,   14,   20,   21,
       
   499        21,   22,   21,   23,   24,   25,   25,   25,   25,   25,
       
   500        25,   14,   26,   27,   28,   29,   30,   26,   31,   26,
       
   501        26,   26,   26,   32,   26,   33,   34,   35,   36,   37,
       
   502        38,   39,   26,   26,   14,   26,   26,   26,   26,   40,
       
   503        26,   26,   26,   26,   26,   41,   26,   26,   42,   26,
       
   504        26,   26,   26,   26,   26,   26,   44,   45,  267,   46,
       
   505        44,   45,   47,   46,   56,   57,   47,   50,   51,   52,
       
   506        50,   53,   50,   51,   52,   50,   53,   56,   57,   54,
       
   507        59,   60,   59,   60,   54,  266,   72,   74,   61,   73,
       
   508 
       
   509        61,   63,   64,   65,   63,   74,   68,  265,   48,   68,
       
   510        66,   76,   48,   63,   64,   65,   63,   79,   69,   76,
       
   511        80,   67,   66,   71,   71,   71,   71,   71,   71,   71,
       
   512        93,   85,   94,   67,   76,   86,   95,  103,   87,  264,
       
   513       104,   88,   76,  105,   89,  141,  263,  110,  123,   77,
       
   514       110,  109,  112,  113,  114,  109,  142,  268,   68,  111,
       
   515       115,   68,  124,  116,  126,  127,  156,  157,  114,  128,
       
   516        69,  122,  122,  122,  122,  122,  122,  122,  109,  106,
       
   517       159,  160,  109,  158,  165,  124,  129,  129,  129,  129,
       
   518       129,  129,  129,  130,  130,  130,  130,  130,  130,  130,
       
   519 
       
   520       110,  189,  190,  110,  109,  162,  163,  166,  164,  170,
       
   521       165,  216,  111,  262,  171,  261,  217,  122,  122,  122,
       
   522       122,  122,  122,  122,  167,  167,  167,  167,  167,  167,
       
   523       167,  168,  168,  168,  168,  168,  168,  168,  129,  129,
       
   524       129,  129,  129,  129,  129,  195,  196,  197,  195,  196,
       
   525       169,  130,  130,  130,  130,  130,  130,  130,  198,  199,
       
   526       200,  156,  157,  114,  167,  167,  167,  167,  167,  167,
       
   527       167,  198,  199,  169,  260,  259,  202,  168,  168,  168,
       
   528       168,  168,  168,  168,  203,  203,  203,  203,  203,  203,
       
   529       203,  219,  220,  258,  257,  230,  256,  255,  221,  202,
       
   530 
       
   531       231,  254,  253,  222,  252,  251,  250,  223,  226,  226,
       
   532       226,  226,  226,  226,  226,  203,  203,  203,  203,  203,
       
   533       203,  203,  226,  226,  226,  226,  226,  226,  226,   43,
       
   534        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
       
   535        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
       
   536        49,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       
   537        55,   55,   58,   58,   58,   58,   58,   58,   58,   58,
       
   538        58,   58,   58,   62,   62,   62,   62,   62,   62,   62,
       
   539        62,   62,   62,   62,   75,   75,  249,  248,  247,  246,
       
   540        75,   78,   78,   78,   78,   78,   78,  107,  107,  245,
       
   541 
       
   542       244,  243,  242,  107,  107,  108,  108,  108,  108,  108,
       
   543       108,  108,  108,  108,  108,  108,  118,  241,  240,  118,
       
   544       118,  118,  118,  118,  118,  118,  118,  120,  239,  238,
       
   545       120,  120,  120,  120,  120,  120,  120,  120,   71,   71,
       
   546       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
       
   547       125,  131,  131,  237,  131,  161,  161,  161,  161,  161,
       
   548       161,  161,  161,  161,  161,  161,  236,  235,  234,  233,
       
   549       232,  229,  228,  227,  225,  198,  224,  195,  218,  215,
       
   550       214,  213,  212,  211,  210,  209,  208,  207,  206,  205,
       
   551       204,  201,  109,  109,  109,  109,  156,  194,  193,  192,
       
   552 
       
   553       191,  188,  187,  186,  185,  184,  183,  182,  181,  180,
       
   554       179,  178,  177,  176,  175,  174,  173,  172,  128,  109,
       
   555       112,  109,  155,  154,  153,  152,  151,  150,  149,  148,
       
   556       147,  146,  145,  144,  143,  140,  139,  138,  137,  136,
       
   557       135,  134,  133,  132,  121,  119,  117,  109,  109,  109,
       
   558       102,  101,  100,   99,   98,   97,   96,   92,   91,   90,
       
   559        84,   83,   82,   81,   70,  268,   13,  268,  268,  268,
       
   560       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   561       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   562       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   563 
       
   564       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   565       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   566       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   567       268,  268,  268
       
   568     } ;
       
   569 
       
   570 static yyconst short int yy_chk[634] =
       
   571     {   0,
       
   572         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   573         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   574         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   575         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   576         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   577         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
       
   578         1,    1,    1,    1,    1,    1,    3,    3,  266,    3,
       
   579         4,    4,    3,    4,    7,    7,    4,    5,    5,    5,
       
   580         5,    5,    6,    6,    6,    6,    6,    8,    8,    5,
       
   581         9,    9,   10,   10,    6,  264,   23,   24,    9,   23,
       
   582 
       
   583        10,   11,   11,   11,   11,   25,   15,  263,    3,   15,
       
   584        11,   24,    4,   12,   12,   12,   12,   27,   15,   25,
       
   585        27,   11,   12,   22,   22,   22,   22,   22,   22,   22,
       
   586        36,   32,   36,   12,   24,   32,   36,   48,   32,  261,
       
   587        48,   32,   25,   48,   32,   88,  260,   50,   71,   24,
       
   588        50,   50,   53,   53,   53,   54,   88,   25,   68,   50,
       
   589        54,   68,   71,   54,   72,   72,  109,  109,  109,   72,
       
   590        68,   70,   70,   70,   70,   70,   70,   70,  111,   48,
       
   591       114,  114,  158,  111,  158,   71,   74,   74,   74,   74,
       
   592        74,   74,   74,   76,   76,   76,   76,   76,   76,   76,
       
   593 
       
   594       110,  151,  151,  110,  110,  115,  115,  122,  115,  132,
       
   595       115,  188,  110,  259,  132,  258,  188,  122,  122,  122,
       
   596       122,  122,  122,  122,  123,  123,  123,  123,  123,  123,
       
   597       123,  124,  124,  124,  124,  124,  124,  124,  129,  129,
       
   598       129,  129,  129,  129,  129,  159,  159,  159,  224,  224,
       
   599       129,  130,  130,  130,  130,  130,  130,  130,  160,  160,
       
   600       160,  164,  164,  164,  167,  167,  167,  167,  167,  167,
       
   601       167,  225,  225,  129,  256,  254,  167,  168,  168,  168,
       
   602       168,  168,  168,  168,  169,  169,  169,  169,  169,  169,
       
   603       169,  194,  194,  251,  250,  210,  249,  248,  194,  167,
       
   604 
       
   605       210,  247,  246,  194,  245,  243,  242,  194,  202,  202,
       
   606       202,  202,  202,  202,  202,  203,  203,  203,  203,  203,
       
   607       203,  203,  226,  226,  226,  226,  226,  226,  226,  269,
       
   608       269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
       
   609       270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
       
   610       270,  271,  271,  271,  271,  271,  271,  271,  271,  271,
       
   611       271,  271,  272,  272,  272,  272,  272,  272,  272,  272,
       
   612       272,  272,  272,  273,  273,  273,  273,  273,  273,  273,
       
   613       273,  273,  273,  273,  274,  274,  241,  240,  239,  238,
       
   614       274,  275,  275,  275,  275,  275,  275,  276,  276,  233,
       
   615 
       
   616       230,  227,  223,  276,  276,  277,  277,  277,  277,  277,
       
   617       277,  277,  277,  277,  277,  277,  278,  222,  221,  278,
       
   618       278,  278,  278,  278,  278,  278,  278,  279,  220,  219,
       
   619       279,  279,  279,  279,  279,  279,  279,  279,  280,  280,
       
   620       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
       
   621       281,  282,  282,  216,  282,  283,  283,  283,  283,  283,
       
   622       283,  283,  283,  283,  283,  283,  215,  214,  213,  212,
       
   623       211,  207,  206,  205,  200,  199,  197,  196,  193,  187,
       
   624       186,  185,  184,  183,  181,  179,  178,  176,  174,  173,
       
   625       170,  166,  165,  163,  162,  161,  157,  155,  154,  153,
       
   626 
       
   627       152,  150,  149,  148,  147,  146,  145,  144,  143,  142,
       
   628       141,  140,  139,  137,  136,  135,  134,  133,  121,  116,
       
   629       113,  108,  101,  100,   99,   98,   97,   96,   95,   94,
       
   630        93,   92,   91,   90,   89,   87,   86,   85,   84,   83,
       
   631        82,   81,   80,   79,   69,   66,   61,   52,   51,   49,
       
   632        45,   42,   41,   40,   39,   38,   37,   35,   34,   33,
       
   633        31,   30,   29,   28,   19,   13,  268,  268,  268,  268,
       
   634       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   635       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   636       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   637 
       
   638       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   639       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   640       268,  268,  268,  268,  268,  268,  268,  268,  268,  268,
       
   641       268,  268,  268
       
   642     } ;
       
   643 
       
   644 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
       
   645 static char *yy_full_match;
       
   646 static int yy_lp;
       
   647 #define REJECT \
       
   648 { \
       
   649 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
       
   650 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
       
   651 ++yy_lp; \
       
   652 goto find_rule; \
       
   653 }
       
   654 #define yymore() yymore_used_but_not_detected
       
   655 #define YY_MORE_ADJ 0
       
   656 #define YY_RESTORE_YY_MORE_OFFSET
       
   657 char *yytext;
       
   658 #line 1 "RCOMP.LEX"
       
   659 #define INITIAL 0
       
   660 #line 3 "RCOMP.LEX"
       
   661 
       
   662 #include <limits.h>
       
   663 #include <string.h>
       
   664 #include "main.h"
       
   665 #include "structst.h"
       
   666 #include "parser.h"
       
   667 #include "localise.h"
       
   668 
       
   669 #define YY_SKIP_YYWRAP 1
       
   670 #define YY_NEVER_INTERACTIVE 1
       
   671 int yywrap();
       
   672 void yyerror(const char* string, ...);
       
   673 
       
   674 // Redefine YY_INPUT so we can parse binary data.
       
   675 #undef YY_INPUT
       
   676 #define YY_INPUT(buf, result, max_size) (result = new_yy_input(buf, max_size))
       
   677 
       
   678 int new_yy_input(char *buf, int max_size)
       
   679 {
       
   680    int result;
       
   681    result = fread(buf, 1, max_size, yyin);
       
   682    if (result == 0)
       
   683       return YY_NULL;
       
   684    
       
   685    // check for utf8 (BOM) header in buf
       
   686    for (int i = 0; i < result-3; i++)
       
   687    {
       
   688       if (buf[i] == 0xffffffef && buf[i+1] == 0xffffffbb && buf[i+2] == 0xffffffbf)
       
   689       {
       
   690 		buf[i] = ' ';
       
   691 		buf[i+1] = ' ';
       
   692 		buf[i+2] = ' ';
       
   693       }
       
   694    }
       
   695    return result;
       
   696 }
       
   697 
       
   698 #include "rcomp.hpp"
       
   699 #include "fileline.h"
       
   700 
       
   701 #define VALUE_LEN   (1024*8)	// must match sizeof(YYSTYPE.Value)
       
   702 char buf[VALUE_LEN];
       
   703 char * pCh;
       
   704 #define CHECK_APPEND(x)	\
       
   705     if (pCh-buf==VALUE_LEN-1) { yyerror("string too long - %c ignored", (x)); } else {*pCh++ = (x); }
       
   706 
       
   707 int isCharLiteral;
       
   708 
       
   709 extern String		InputBaseName;
       
   710 extern FileLineManager* pFileLineHandler;
       
   711 extern int*		pCurrentLineNumber;
       
   712 char RealLineNumber[200];
       
   713 //
       
   714 // Disable MSVC warnings
       
   715 //
       
   716 #ifdef __VC32__
       
   717 #if 0
       
   718 ..\src\RCOMP.L(95) : warning C4127: conditional expression is constant
       
   719 ..\src\RCOMP.L(114) : warning C4244: 'initializing' : conversion from 'const int' to 'YY_CHAR', possible loss of data
       
   720 ..\src\RCOMP.L(119) : warning C4244: '=' : conversion from 'const int' to 'YY_CHAR', possible loss of data
       
   721 ..\src\RCOMP.L(130) : warning C4102: 'find_rule' : unreferenced label
       
   722 ..\src\RCOMP.L(513) : warning C4244: 'initializing' : conversion from 'int' to 'YY_CHAR', possible loss of data
       
   723 ..\src\RCOMP.L(518) : warning C4244: '=' : conversion from 'const int' to 'YY_CHAR', possible loss of data
       
   724 ..\src\RCOMP.L(548) : warning C4244: '=' : conversion from 'const int' to 'YY_CHAR', possible loss of data
       
   725 ..\src\RCOMP.L(63) : warning C4505: 'yyunput' : unreferenced local function has been removed
       
   726 \epoc32\BUILD\generatedcpp\rcomp\rcompl.cpp(243) : warning C4505: 'yy_flex_realloc' : unreferenced local function has been removed
       
   727 #endif
       
   728 
       
   729 #pragma warning( disable : 4100 )
       
   730 #pragma warning( disable : 4102 )
       
   731 #pragma warning( disable : 4127 )
       
   732 #pragma warning( disable : 4244 )
       
   733 #pragma warning( disable : 4245 )
       
   734 #pragma warning( disable : 4505 )
       
   735 #endif //__VC32__
       
   736 
       
   737 #include "errorhan.h"
       
   738 
       
   739 #define REGISTER_LINE	ErrorHandler::Register(pFileLineHandler->GetCurrentFile(), pFileLineHandler->GetErrorLine(* pCurrentLineNumber))
       
   740 
       
   741 
       
   742 #define string_rules 1
       
   743 
       
   744 /* Rule set for string literals.			        */
       
   745 /* n.b. Exclusive rule sets i.e. %x are available in MKS only	*/
       
   746 /* so they are not used here; hence all the <INITIAL>'s.        */
       
   747 #define file_line_rules 2
       
   748 
       
   749 /* Rule set for file_line_directive.*/
       
   750 #define cpp_comment 3
       
   751 
       
   752 /* C++ comment to end of line */
       
   753 #define c_comment 4
       
   754 
       
   755 /* C comment */
       
   756 #define comment_tag 5
       
   757 
       
   758 /* Doxygen-style comment tag */
       
   759 #line 761 "lex.yy.c"
       
   760 
       
   761 /* Macros after this point can all be overridden by user definitions in
       
   762  * section 1.
       
   763  */
       
   764 
       
   765 #ifndef YY_SKIP_YYWRAP
       
   766 #ifdef __cplusplus
       
   767 extern "C" int yywrap YY_PROTO(( void ));
       
   768 #else
       
   769 extern int yywrap YY_PROTO(( void ));
       
   770 #endif
       
   771 #endif
       
   772 
       
   773 #ifndef YY_NO_UNPUT
       
   774 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
       
   775 #endif
       
   776 
       
   777 #ifndef yytext_ptr
       
   778 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
       
   779 #endif
       
   780 
       
   781 #ifdef YY_NEED_STRLEN
       
   782 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
       
   783 #endif
       
   784 
       
   785 #ifndef YY_NO_INPUT
       
   786 #ifdef __cplusplus
       
   787 static int yyinput YY_PROTO(( void ));
       
   788 #else
       
   789 static int input YY_PROTO(( void ));
       
   790 #endif
       
   791 #endif
       
   792 
       
   793 #if YY_STACK_USED
       
   794 static int yy_start_stack_ptr = 0;
       
   795 static int yy_start_stack_depth = 0;
       
   796 static int *yy_start_stack = 0;
       
   797 #ifndef YY_NO_PUSH_STATE
       
   798 static void yy_push_state YY_PROTO(( int new_state ));
       
   799 #endif
       
   800 #ifndef YY_NO_POP_STATE
       
   801 static void yy_pop_state YY_PROTO(( void ));
       
   802 #endif
       
   803 #ifndef YY_NO_TOP_STATE
       
   804 static int yy_top_state YY_PROTO(( void ));
       
   805 #endif
       
   806 
       
   807 #else
       
   808 #define YY_NO_PUSH_STATE 1
       
   809 #define YY_NO_POP_STATE 1
       
   810 #define YY_NO_TOP_STATE 1
       
   811 #endif
       
   812 
       
   813 #ifdef YY_MALLOC_DECL
       
   814 YY_MALLOC_DECL
       
   815 #else
       
   816 #if __STDC__
       
   817 #ifndef __cplusplus
       
   818 #include <stdlib.h>
       
   819 #endif
       
   820 #else
       
   821 /* Just try to get by without declaring the routines.  This will fail
       
   822  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
       
   823  * or sizeof(void*) != sizeof(int).
       
   824  */
       
   825 #endif
       
   826 #endif
       
   827 
       
   828 /* Amount of stuff to slurp up with each read. */
       
   829 #ifndef YY_READ_BUF_SIZE
       
   830 #define YY_READ_BUF_SIZE 8192
       
   831 #endif
       
   832 
       
   833 /* Copy whatever the last rule matched to the standard output. */
       
   834 
       
   835 #ifndef ECHO
       
   836 /* This used to be an fputs(), but since the string might contain NUL's,
       
   837  * we now use fwrite().
       
   838  */
       
   839 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
       
   840 #endif
       
   841 
       
   842 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
       
   843  * is returned in "result".
       
   844  */
       
   845 #ifndef YY_INPUT
       
   846 #define YY_INPUT(buf,result,max_size) \
       
   847 	if ( yy_current_buffer->yy_is_interactive ) \
       
   848 		{ \
       
   849 		int c = '*', n; \
       
   850 		for ( n = 0; n < max_size && \
       
   851 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
       
   852 			buf[n] = (char) c; \
       
   853 		if ( c == '\n' ) \
       
   854 			buf[n++] = (char) c; \
       
   855 		if ( c == EOF && ferror( yyin ) ) \
       
   856 			YY_FATAL_ERROR( "input in flex scanner failed" ); \
       
   857 		result = n; \
       
   858 		} \
       
   859 	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
       
   860 		  && ferror( yyin ) ) \
       
   861 		YY_FATAL_ERROR( "input in flex scanner failed" );
       
   862 #endif
       
   863 
       
   864 /* No semi-colon after return; correct usage is to write "yyterminate();" -
       
   865  * we don't want an extra ';' after the "return" because that will cause
       
   866  * some compilers to complain about unreachable statements.
       
   867  */
       
   868 #ifndef yyterminate
       
   869 #define yyterminate() return YY_NULL
       
   870 #endif
       
   871 
       
   872 /* Number of entries by which start-condition stack grows. */
       
   873 #ifndef YY_START_STACK_INCR
       
   874 #define YY_START_STACK_INCR 25
       
   875 #endif
       
   876 
       
   877 /* Report a fatal error. */
       
   878 #ifndef YY_FATAL_ERROR
       
   879 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
       
   880 #endif
       
   881 
       
   882 /* Default declaration of generated scanner - a define so the user can
       
   883  * easily add parameters.
       
   884  */
       
   885 #ifndef YY_DECL
       
   886 #define YY_DECL int yylex YY_PROTO(( void ))
       
   887 #endif
       
   888 
       
   889 /* Code executed at the beginning of each rule, after yytext and yyleng
       
   890  * have been set up.
       
   891  */
       
   892 #ifndef YY_USER_ACTION
       
   893 #define YY_USER_ACTION
       
   894 #endif
       
   895 
       
   896 /* Code executed at the end of each rule. */
       
   897 #ifndef YY_BREAK
       
   898 #define YY_BREAK break;
       
   899 #endif
       
   900 
       
   901 #define YY_RULE_SETUP \
       
   902 	YY_USER_ACTION
       
   903 
       
   904 YY_DECL
       
   905 	{
       
   906 	register yy_state_type yy_current_state;
       
   907 	register char *yy_cp, *yy_bp;
       
   908 	register int yy_act;
       
   909 
       
   910 #line 130 "RCOMP.LEX"
       
   911 
       
   912 
       
   913 
       
   914 	/* Translations section */
       
   915 	/* ==================== */
       
   916 
       
   917 	/*******************************************/
       
   918 	/* Main keywords                           */
       
   919 	/*******************************************/
       
   920 #line 922 "lex.yy.c"
       
   921 
       
   922 	if ( yy_init )
       
   923 		{
       
   924 		yy_init = 0;
       
   925 
       
   926 #ifdef YY_USER_INIT
       
   927 		YY_USER_INIT;
       
   928 #endif
       
   929 
       
   930 		if ( ! yy_start )
       
   931 			yy_start = 1;	/* first start state */
       
   932 
       
   933 		if ( ! yyin )
       
   934 			yyin = stdin;
       
   935 
       
   936 		if ( ! yyout )
       
   937 			yyout = stdout;
       
   938 
       
   939 		if ( ! yy_current_buffer )
       
   940 			yy_current_buffer =
       
   941 				yy_create_buffer( yyin, YY_BUF_SIZE );
       
   942 
       
   943 		yy_load_buffer_state();
       
   944 		}
       
   945 
       
   946 	while ( 1 )		/* loops until end-of-file is reached */
       
   947 		{
       
   948 		yy_cp = yy_c_buf_p;
       
   949 
       
   950 		/* Support of yytext. */
       
   951 		*yy_cp = yy_hold_char;
       
   952 
       
   953 		/* yy_bp points to the position in yy_ch_buf of the start of
       
   954 		 * the current run.
       
   955 		 */
       
   956 		yy_bp = yy_cp;
       
   957 
       
   958 		yy_current_state = yy_start;
       
   959 		yy_state_ptr = yy_state_buf;
       
   960 		*yy_state_ptr++ = yy_current_state;
       
   961 yy_match:
       
   962 		do
       
   963 			{
       
   964 			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
       
   965 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
       
   966 				{
       
   967 				yy_current_state = (int) yy_def[yy_current_state];
       
   968 				if ( yy_current_state >= 269 )
       
   969 					yy_c = yy_meta[(unsigned int) yy_c];
       
   970 				}
       
   971 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
       
   972 			*yy_state_ptr++ = yy_current_state;
       
   973 			++yy_cp;
       
   974 			}
       
   975 		while ( yy_base[yy_current_state] != 567 );
       
   976 
       
   977 yy_find_action:
       
   978 		yy_current_state = *--yy_state_ptr;
       
   979 		yy_lp = yy_accept[yy_current_state];
       
   980 find_rule: /* we branch to this label when backing up */
       
   981 		for ( ; ; ) /* until we find what rule we matched */
       
   982 			{
       
   983 			if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
       
   984 				{
       
   985 				yy_act = yy_acclist[yy_lp];
       
   986 					{
       
   987 					yy_full_match = yy_cp;
       
   988 					break;
       
   989 					}
       
   990 				}
       
   991 			--yy_cp;
       
   992 			yy_current_state = *--yy_state_ptr;
       
   993 			yy_lp = yy_accept[yy_current_state];
       
   994 			}
       
   995 
       
   996 		YY_DO_BEFORE_ACTION;
       
   997 
       
   998 		if ( yy_act != YY_END_OF_BUFFER )
       
   999 			{
       
  1000 			int yyl;
       
  1001 			for ( yyl = 0; yyl < yyleng; ++yyl )
       
  1002 				if ( yytext[yyl] == '\n' )
       
  1003 					++yylineno;
       
  1004 			}
       
  1005 
       
  1006 do_action:	/* This label is used only to access EOF actions. */
       
  1007 
       
  1008 
       
  1009 		switch ( yy_act )
       
  1010 	{ /* beginning of action switch */
       
  1011 case 1:
       
  1012 YY_RULE_SETUP
       
  1013 #line 139 "RCOMP.LEX"
       
  1014 return L_STRUCT;
       
  1015 	YY_BREAK
       
  1016 case 2:
       
  1017 YY_RULE_SETUP
       
  1018 #line 140 "RCOMP.LEX"
       
  1019 return L_RESOURCE;
       
  1020 	YY_BREAK
       
  1021 case 3:
       
  1022 YY_RULE_SETUP
       
  1023 #line 141 "RCOMP.LEX"
       
  1024 return L_NAME;
       
  1025 	YY_BREAK
       
  1026 case 4:
       
  1027 YY_RULE_SETUP
       
  1028 #line 142 "RCOMP.LEX"
       
  1029 return L_CHARACTER_SET;
       
  1030 	YY_BREAK
       
  1031 case 5:
       
  1032 YY_RULE_SETUP
       
  1033 #line 143 "RCOMP.LEX"
       
  1034 return L_OFFSET;
       
  1035 	YY_BREAK
       
  1036 case 6:
       
  1037 YY_RULE_SETUP
       
  1038 #line 144 "RCOMP.LEX"
       
  1039 return L_SYSTEM;
       
  1040 	YY_BREAK
       
  1041 case 7:
       
  1042 YY_RULE_SETUP
       
  1043 #line 145 "RCOMP.LEX"
       
  1044 return L_GLOBAL;
       
  1045 	YY_BREAK
       
  1046 case 8:
       
  1047 YY_RULE_SETUP
       
  1048 #line 146 "RCOMP.LEX"
       
  1049 return L_LOCAL;
       
  1050 	YY_BREAK
       
  1051 case 9:
       
  1052 YY_RULE_SETUP
       
  1053 #line 147 "RCOMP.LEX"
       
  1054 return L_ENUM;
       
  1055 	YY_BREAK
       
  1056 case 10:
       
  1057 YY_RULE_SETUP
       
  1058 #line 148 "RCOMP.LEX"
       
  1059 return L_ENUM;
       
  1060 	YY_BREAK
       
  1061 case 11:
       
  1062 YY_RULE_SETUP
       
  1063 #line 149 "RCOMP.LEX"
       
  1064 return L_UID_TWO;
       
  1065 	YY_BREAK
       
  1066 case 12:
       
  1067 YY_RULE_SETUP
       
  1068 #line 150 "RCOMP.LEX"
       
  1069 return L_UID_THREE;
       
  1070 	YY_BREAK
       
  1071 case 13:
       
  1072 YY_RULE_SETUP
       
  1073 #line 151 "RCOMP.LEX"
       
  1074 return L_RLS_STRING;
       
  1075 	YY_BREAK
       
  1076 case 14:
       
  1077 YY_RULE_SETUP
       
  1078 #line 152 "RCOMP.LEX"
       
  1079 return L_RLS_STRING8;
       
  1080 	YY_BREAK
       
  1081 case 15:
       
  1082 YY_RULE_SETUP
       
  1083 #line 153 "RCOMP.LEX"
       
  1084 return L_RLS_DOUBLE;
       
  1085 	YY_BREAK
       
  1086 case 16:
       
  1087 YY_RULE_SETUP
       
  1088 #line 154 "RCOMP.LEX"
       
  1089 return L_RLS_BYTE;
       
  1090 	YY_BREAK
       
  1091 case 17:
       
  1092 YY_RULE_SETUP
       
  1093 #line 155 "RCOMP.LEX"
       
  1094 return L_RLS_WORD;
       
  1095 	YY_BREAK
       
  1096 case 18:
       
  1097 YY_RULE_SETUP
       
  1098 #line 156 "RCOMP.LEX"
       
  1099 return L_RLS_LONG;
       
  1100 	YY_BREAK
       
  1101 case 19:
       
  1102 YY_RULE_SETUP
       
  1103 #line 157 "RCOMP.LEX"
       
  1104 return L_MULTI;
       
  1105 	YY_BREAK
       
  1106 /*******************************************/
       
  1107 /* Types                                   */
       
  1108 /*******************************************/
       
  1109 case 20:
       
  1110 YY_RULE_SETUP
       
  1111 #line 162 "RCOMP.LEX"
       
  1112 return L_BUF;
       
  1113 	YY_BREAK
       
  1114 case 21:
       
  1115 YY_RULE_SETUP
       
  1116 #line 163 "RCOMP.LEX"
       
  1117 return L_BUF8;
       
  1118 	YY_BREAK
       
  1119 case 22:
       
  1120 YY_RULE_SETUP
       
  1121 #line 164 "RCOMP.LEX"
       
  1122 return L_BUF16;
       
  1123 	YY_BREAK
       
  1124 case 23:
       
  1125 YY_RULE_SETUP
       
  1126 #line 165 "RCOMP.LEX"
       
  1127 return L_WORD;
       
  1128 	YY_BREAK
       
  1129 case 24:
       
  1130 YY_RULE_SETUP
       
  1131 #line 166 "RCOMP.LEX"
       
  1132 return L_BYTE;
       
  1133 	YY_BREAK
       
  1134 case 25:
       
  1135 YY_RULE_SETUP
       
  1136 #line 167 "RCOMP.LEX"
       
  1137 return L_LONG;
       
  1138 	YY_BREAK
       
  1139 case 26:
       
  1140 YY_RULE_SETUP
       
  1141 #line 168 "RCOMP.LEX"
       
  1142 return L_DOUBLE;
       
  1143 	YY_BREAK
       
  1144 case 27:
       
  1145 YY_RULE_SETUP
       
  1146 #line 169 "RCOMP.LEX"
       
  1147 return L_TEXT;
       
  1148 	YY_BREAK
       
  1149 case 28:
       
  1150 YY_RULE_SETUP
       
  1151 #line 170 "RCOMP.LEX"
       
  1152 return L_LTEXT;
       
  1153 	YY_BREAK
       
  1154 case 29:
       
  1155 YY_RULE_SETUP
       
  1156 #line 171 "RCOMP.LEX"
       
  1157 return L_TEXT8;
       
  1158 	YY_BREAK
       
  1159 case 30:
       
  1160 YY_RULE_SETUP
       
  1161 #line 172 "RCOMP.LEX"
       
  1162 return L_LTEXT8;
       
  1163 	YY_BREAK
       
  1164 case 31:
       
  1165 YY_RULE_SETUP
       
  1166 #line 173 "RCOMP.LEX"
       
  1167 return L_TEXT16;
       
  1168 	YY_BREAK
       
  1169 case 32:
       
  1170 YY_RULE_SETUP
       
  1171 #line 174 "RCOMP.LEX"
       
  1172 return L_LTEXT16;
       
  1173 	YY_BREAK
       
  1174 case 33:
       
  1175 YY_RULE_SETUP
       
  1176 #line 175 "RCOMP.LEX"
       
  1177 return L_LINK;
       
  1178 	YY_BREAK
       
  1179 case 34:
       
  1180 YY_RULE_SETUP
       
  1181 #line 176 "RCOMP.LEX"
       
  1182 return L_LLINK;
       
  1183 	YY_BREAK
       
  1184 case 35:
       
  1185 YY_RULE_SETUP
       
  1186 #line 177 "RCOMP.LEX"
       
  1187 return L_SRLINK;
       
  1188 	YY_BREAK
       
  1189 /*******************************************/
       
  1190 /* Others                                  */
       
  1191 /*******************************************/
       
  1192 case 36:
       
  1193 YY_RULE_SETUP
       
  1194 #line 183 "RCOMP.LEX"
       
  1195 return L_LEN;
       
  1196 	YY_BREAK
       
  1197 /*******************************************/
       
  1198 /* String & character literals             */
       
  1199 /*******************************************/
       
  1200 case 37:
       
  1201 YY_RULE_SETUP
       
  1202 #line 189 "RCOMP.LEX"
       
  1203 { BEGIN(string_rules); pCh = buf; isCharLiteral=0; }
       
  1204 	YY_BREAK
       
  1205 case 38:
       
  1206 YY_RULE_SETUP
       
  1207 #line 190 "RCOMP.LEX"
       
  1208 { BEGIN(string_rules); pCh = buf; isCharLiteral=1; }
       
  1209 	YY_BREAK
       
  1210 /* Escaped single- and double-quotes.*/
       
  1211 case 39:
       
  1212 YY_RULE_SETUP
       
  1213 #line 193 "RCOMP.LEX"
       
  1214 { CHECK_APPEND('"'); }
       
  1215 	YY_BREAK
       
  1216 case 40:
       
  1217 YY_RULE_SETUP
       
  1218 #line 194 "RCOMP.LEX"
       
  1219 { CHECK_APPEND('\''); };
       
  1220 	YY_BREAK
       
  1221 /* Convert escaped character into corresponding actual character e.g. \t to tab. */
       
  1222 case 41:
       
  1223 YY_RULE_SETUP
       
  1224 #line 197 "RCOMP.LEX"
       
  1225 { CHECK_APPEND( * ( strchr("\rr\bb\ff\nn\tt\vv\aa", yytext[1])-1));}
       
  1226 	YY_BREAK
       
  1227 /* Escaped backslash */
       
  1228 case 42:
       
  1229 YY_RULE_SETUP
       
  1230 #line 200 "RCOMP.LEX"
       
  1231 { CHECK_APPEND('\\'); }
       
  1232 	YY_BREAK
       
  1233 case 43:
       
  1234 YY_RULE_SETUP
       
  1235 #line 202 "RCOMP.LEX"
       
  1236 /* Escaped newline ignored*/ ;
       
  1237 	YY_BREAK
       
  1238 /* End of line before terminating double-quotes.*/
       
  1239 case 44:
       
  1240 YY_RULE_SETUP
       
  1241 #line 205 "RCOMP.LEX"
       
  1242 { yyerror( isCharLiteral?"Unterminated character literal":"Unterminated string"); BEGIN 0; }
       
  1243 	YY_BREAK
       
  1244 /* End of string reached.*/
       
  1245 case 45:
       
  1246 YY_RULE_SETUP
       
  1247 #line 208 "RCOMP.LEX"
       
  1248 { 
       
  1249     if (!isCharLiteral) 
       
  1250 	    {
       
  1251 	    *pCh = '\0'; BEGIN(0); strcpy( yylval.Value, buf); 
       
  1252 		return L_STRING_LITERAL; 
       
  1253 	    }
       
  1254     CHECK_APPEND(*yytext);
       
  1255     }
       
  1256 	YY_BREAK
       
  1257 case 46:
       
  1258 YY_RULE_SETUP
       
  1259 #line 217 "RCOMP.LEX"
       
  1260 { 
       
  1261     if (isCharLiteral) 
       
  1262 	    {
       
  1263 	    *pCh = '\0'; BEGIN(0); strcpy( yylval.Value, buf); return L_CHAR_LITERAL;
       
  1264 	    }
       
  1265     CHECK_APPEND(*yytext);
       
  1266     }
       
  1267 	YY_BREAK
       
  1268 /* Anything other than \n is stored.*/
       
  1269 case 47:
       
  1270 YY_RULE_SETUP
       
  1271 #line 226 "RCOMP.LEX"
       
  1272 { CHECK_APPEND(*yytext); }
       
  1273 	YY_BREAK
       
  1274 /*******************************************/
       
  1275 /* Labels                                  */
       
  1276 /*******************************************/
       
  1277 case 48:
       
  1278 YY_RULE_SETUP
       
  1279 #line 232 "RCOMP.LEX"
       
  1280 {	
       
  1281     BEGIN(0);
       
  1282     strcpy( yylval.Value, yytext);
       
  1283     return L_LABEL;
       
  1284     }
       
  1285 	YY_BREAK
       
  1286 /*******************************************/
       
  1287 /* Numbers                                 */
       
  1288 /*******************************************/
       
  1289 case 49:
       
  1290 YY_RULE_SETUP
       
  1291 #line 241 "RCOMP.LEX"
       
  1292 {	strcpy( yylval.Value, yytext); return L_NUM_NATURAL; }
       
  1293 	YY_BREAK
       
  1294 case 50:
       
  1295 YY_RULE_SETUP
       
  1296 #line 242 "RCOMP.LEX"
       
  1297 {	strcpy( yylval.Value, yytext); return L_NUM_NATURAL; }
       
  1298 	YY_BREAK
       
  1299 case 51:
       
  1300 YY_RULE_SETUP
       
  1301 #line 243 "RCOMP.LEX"
       
  1302 {	strcpy( yylval.Value, yytext); return L_NUM_FLOAT;}
       
  1303 	YY_BREAK
       
  1304 case 52:
       
  1305 YY_RULE_SETUP
       
  1306 #line 244 "RCOMP.LEX"
       
  1307 {	strcpy( yylval.Value, yytext); return L_NUM_FLOAT;}
       
  1308 	YY_BREAK
       
  1309 case 53:
       
  1310 YY_RULE_SETUP
       
  1311 #line 245 "RCOMP.LEX"
       
  1312 {	strcpy( yylval.Value, yytext); return L_NUM_FLOAT;}
       
  1313 	YY_BREAK
       
  1314 case 54:
       
  1315 YY_RULE_SETUP
       
  1316 #line 246 "RCOMP.LEX"
       
  1317 {	strcpy( yylval.Value, yytext); return L_NUM_FLOAT;}
       
  1318 	YY_BREAK
       
  1319 case 55:
       
  1320 YY_RULE_SETUP
       
  1321 #line 247 "RCOMP.LEX"
       
  1322 {	strcpy( yylval.Value, yytext); return L_NUM_FLOAT;}
       
  1323 	YY_BREAK
       
  1324 case 56:
       
  1325 YY_RULE_SETUP
       
  1326 #line 248 "RCOMP.LEX"
       
  1327 {	strcpy( yylval.Value, yytext); return L_NUM_FLOAT;}
       
  1328 	YY_BREAK
       
  1329 /*******************************************/
       
  1330 /* file_line_directive                     */
       
  1331 /*******************************************/
       
  1332 case 57:
       
  1333 YY_RULE_SETUP
       
  1334 #line 253 "RCOMP.LEX"
       
  1335 {	BEGIN(file_line_rules); strcpy( RealLineNumber, yytext+2); }
       
  1336 	YY_BREAK
       
  1337 case 58:
       
  1338 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
       
  1339 yy_c_buf_p = yy_cp -= 1;
       
  1340 YY_DO_BEFORE_ACTION; /* set up yytext again */
       
  1341 YY_RULE_SETUP
       
  1342 #line 255 "RCOMP.LEX"
       
  1343 {	BEGIN(0); // # <line> "" means start of base file.
       
  1344 											pFileLineHandler->SetBase( InputBaseName, * pCurrentLineNumber);
       
  1345 										}
       
  1346 	YY_BREAK
       
  1347 case 59:
       
  1348 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
       
  1349 yy_c_buf_p = yy_cp -= 1;
       
  1350 YY_DO_BEFORE_ACTION; /* set up yytext again */
       
  1351 YY_RULE_SETUP
       
  1352 #line 259 "RCOMP.LEX"
       
  1353 {	BEGIN(0); // # <line> <filename> means @ line <line> of named base file.
       
  1354 											pFileLineHandler->PostInclude( yytext, RealLineNumber, * pCurrentLineNumber);
       
  1355 										}
       
  1356 	YY_BREAK
       
  1357 case 60:
       
  1358 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
       
  1359 yy_c_buf_p = yy_cp -= 1;
       
  1360 YY_DO_BEFORE_ACTION; /* set up yytext again */
       
  1361 YY_RULE_SETUP
       
  1362 #line 263 "RCOMP.LEX"
       
  1363 {
       
  1364 											BEGIN(0); // # <line> <filename> 1 means start of an included file.
       
  1365 											pFileLineHandler->SetInclude( yytext, * pCurrentLineNumber);
       
  1366 										}
       
  1367 	YY_BREAK
       
  1368 case 61:
       
  1369 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
       
  1370 yy_c_buf_p = yy_cp -= 1;
       
  1371 YY_DO_BEFORE_ACTION; /* set up yytext again */
       
  1372 YY_RULE_SETUP
       
  1373 #line 268 "RCOMP.LEX"
       
  1374 {
       
  1375 											BEGIN(0); // # <line> <filename> 2 means end of an included file and now at <line> in <filename>.
       
  1376 											pFileLineHandler->PostInclude( yytext, RealLineNumber, * pCurrentLineNumber);
       
  1377 										}
       
  1378 	YY_BREAK
       
  1379 /*******************************************/
       
  1380 /* White space                             */
       
  1381 /*******************************************/
       
  1382 case 62:
       
  1383 YY_RULE_SETUP
       
  1384 #line 278 "RCOMP.LEX"
       
  1385 ; // skipped
       
  1386 	YY_BREAK
       
  1387 case 63:
       
  1388 YY_RULE_SETUP
       
  1389 #line 279 "RCOMP.LEX"
       
  1390 ; // skipped
       
  1391 	YY_BREAK
       
  1392 case 64:
       
  1393 YY_RULE_SETUP
       
  1394 #line 280 "RCOMP.LEX"
       
  1395 ; // skipped
       
  1396 	YY_BREAK
       
  1397 case 65:
       
  1398 YY_RULE_SETUP
       
  1399 #line 281 "RCOMP.LEX"
       
  1400 { BEGIN(cpp_comment); }
       
  1401 	YY_BREAK
       
  1402 case 66:
       
  1403 YY_RULE_SETUP
       
  1404 #line 282 "RCOMP.LEX"
       
  1405 { BEGIN(0); }
       
  1406 	YY_BREAK
       
  1407 case 67:
       
  1408 YY_RULE_SETUP
       
  1409 #line 283 "RCOMP.LEX"
       
  1410 ;			// skipped
       
  1411 	YY_BREAK
       
  1412 case 68:
       
  1413 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
       
  1414 yy_c_buf_p = yy_cp = yy_bp + 2;
       
  1415 YY_DO_BEFORE_ACTION; /* set up yytext again */
       
  1416 YY_RULE_SETUP
       
  1417 #line 284 "RCOMP.LEX"
       
  1418 { BEGIN(c_comment); }
       
  1419 	YY_BREAK
       
  1420 case 69:
       
  1421 YY_RULE_SETUP
       
  1422 #line 285 "RCOMP.LEX"
       
  1423 { BEGIN(c_comment); }
       
  1424 	YY_BREAK
       
  1425 case 70:
       
  1426 YY_RULE_SETUP
       
  1427 #line 286 "RCOMP.LEX"
       
  1428 { BEGIN(0); }
       
  1429 	YY_BREAK
       
  1430 case 71:
       
  1431 YY_RULE_SETUP
       
  1432 #line 287 "RCOMP.LEX"
       
  1433 ; // skipped
       
  1434 	YY_BREAK
       
  1435 case 72:
       
  1436 YY_RULE_SETUP
       
  1437 #line 288 "RCOMP.LEX"
       
  1438 ; // skipped
       
  1439 	YY_BREAK
       
  1440 /*******************************************/
       
  1441 /* Comment tags                            */
       
  1442 /*******************************************/
       
  1443 case 73:
       
  1444 YY_RULE_SETUP
       
  1445 #line 294 "RCOMP.LEX"
       
  1446 { 
       
  1447 										BEGIN(comment_tag);
       
  1448 										pGL->SetStart(*(pFileLineHandler->GetCurrentFile()), pFileLineHandler->GetErrorLine(* pCurrentLineNumber));
       
  1449 										return L_TAG_START; 
       
  1450 										}	// any comment beginning with a slash followed by a star followed by an ampersand
       
  1451 	YY_BREAK
       
  1452 case 74:
       
  1453 YY_RULE_SETUP
       
  1454 #line 299 "RCOMP.LEX"
       
  1455 { 
       
  1456 										BEGIN(0); 
       
  1457 										return L_TAG_END; 
       
  1458 										}
       
  1459 	YY_BREAK
       
  1460 case 75:
       
  1461 YY_RULE_SETUP
       
  1462 #line 303 "RCOMP.LEX"
       
  1463 { strcpy( yylval.Value, yytext);	return L_TAG_COMMAND; }
       
  1464 	YY_BREAK
       
  1465 case 76:
       
  1466 YY_RULE_SETUP
       
  1467 #line 304 "RCOMP.LEX"
       
  1468 { strcpy( yylval.Value, yytext);	return L_TAG_WORD; }
       
  1469 	YY_BREAK
       
  1470 case 77:
       
  1471 YY_RULE_SETUP
       
  1472 #line 305 "RCOMP.LEX"
       
  1473 { strcpy( yylval.Value, "\n");		return L_TAG_NEW_LINE; }
       
  1474 	YY_BREAK
       
  1475 case 78:
       
  1476 YY_RULE_SETUP
       
  1477 #line 306 "RCOMP.LEX"
       
  1478 ;
       
  1479 	YY_BREAK
       
  1480 /*******************************************/
       
  1481 /* Special single characters               */
       
  1482 /*******************************************/
       
  1483 case 79:
       
  1484 YY_RULE_SETUP
       
  1485 #line 311 "RCOMP.LEX"
       
  1486 return * yytext;
       
  1487 	YY_BREAK
       
  1488 /*******************************************/
       
  1489 /* Everything else cannot be recognised    */
       
  1490 /*******************************************/
       
  1491 case 80:
       
  1492 YY_RULE_SETUP
       
  1493 #line 317 "RCOMP.LEX"
       
  1494 { yyerror("*** Unknown character '%c' (value 0x%x) ", *yytext, *yytext);}
       
  1495 	YY_BREAK
       
  1496 case 81:
       
  1497 YY_RULE_SETUP
       
  1498 #line 318 "RCOMP.LEX"
       
  1499 ECHO;
       
  1500 	YY_BREAK
       
  1501 #line 1503 "lex.yy.c"
       
  1502 			case YY_STATE_EOF(INITIAL):
       
  1503 			case YY_STATE_EOF(string_rules):
       
  1504 			case YY_STATE_EOF(file_line_rules):
       
  1505 			case YY_STATE_EOF(cpp_comment):
       
  1506 			case YY_STATE_EOF(c_comment):
       
  1507 			case YY_STATE_EOF(comment_tag):
       
  1508 				yyterminate();
       
  1509 
       
  1510 	case YY_END_OF_BUFFER:
       
  1511 		{
       
  1512 		/* Amount of text matched not including the EOB char. */
       
  1513 		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
       
  1514 
       
  1515 		/* Undo the effects of YY_DO_BEFORE_ACTION. */
       
  1516 		*yy_cp = yy_hold_char;
       
  1517 		YY_RESTORE_YY_MORE_OFFSET
       
  1518 
       
  1519 		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
       
  1520 			{
       
  1521 			/* We're scanning a new file or input source.  It's
       
  1522 			 * possible that this happened because the user
       
  1523 			 * just pointed yyin at a new source and called
       
  1524 			 * yylex().  If so, then we have to assure
       
  1525 			 * consistency between yy_current_buffer and our
       
  1526 			 * globals.  Here is the right place to do so, because
       
  1527 			 * this is the first action (other than possibly a
       
  1528 			 * back-up) that will match for the new input source.
       
  1529 			 */
       
  1530 			yy_n_chars = yy_current_buffer->yy_n_chars;
       
  1531 			yy_current_buffer->yy_input_file = yyin;
       
  1532 			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
       
  1533 			}
       
  1534 
       
  1535 		/* Note that here we test for yy_c_buf_p "<=" to the position
       
  1536 		 * of the first EOB in the buffer, since yy_c_buf_p will
       
  1537 		 * already have been incremented past the NUL character
       
  1538 		 * (since all states make transitions on EOB to the
       
  1539 		 * end-of-buffer state).  Contrast this with the test
       
  1540 		 * in input().
       
  1541 		 */
       
  1542 		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
       
  1543 			{ /* This was really a NUL. */
       
  1544 			yy_state_type yy_next_state;
       
  1545 
       
  1546 			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
       
  1547 
       
  1548 			yy_current_state = yy_get_previous_state();
       
  1549 
       
  1550 			/* Okay, we're now positioned to make the NUL
       
  1551 			 * transition.  We couldn't have
       
  1552 			 * yy_get_previous_state() go ahead and do it
       
  1553 			 * for us because it doesn't know how to deal
       
  1554 			 * with the possibility of jamming (and we don't
       
  1555 			 * want to build jamming into it because then it
       
  1556 			 * will run more slowly).
       
  1557 			 */
       
  1558 
       
  1559 			yy_next_state = yy_try_NUL_trans( yy_current_state );
       
  1560 
       
  1561 			yy_bp = yytext_ptr + YY_MORE_ADJ;
       
  1562 
       
  1563 			if ( yy_next_state )
       
  1564 				{
       
  1565 				/* Consume the NUL. */
       
  1566 				yy_cp = ++yy_c_buf_p;
       
  1567 				yy_current_state = yy_next_state;
       
  1568 				goto yy_match;
       
  1569 				}
       
  1570 
       
  1571 			else
       
  1572 				{
       
  1573 				yy_cp = yy_c_buf_p;
       
  1574 				goto yy_find_action;
       
  1575 				}
       
  1576 			}
       
  1577 
       
  1578 		else switch ( yy_get_next_buffer() )
       
  1579 			{
       
  1580 			case EOB_ACT_END_OF_FILE:
       
  1581 				{
       
  1582 				yy_did_buffer_switch_on_eof = 0;
       
  1583 
       
  1584 				if ( yywrap() )
       
  1585 					{
       
  1586 					/* Note: because we've taken care in
       
  1587 					 * yy_get_next_buffer() to have set up
       
  1588 					 * yytext, we can now set up
       
  1589 					 * yy_c_buf_p so that if some total
       
  1590 					 * hoser (like flex itself) wants to
       
  1591 					 * call the scanner after we return the
       
  1592 					 * YY_NULL, it'll still work - another
       
  1593 					 * YY_NULL will get returned.
       
  1594 					 */
       
  1595 					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
       
  1596 
       
  1597 					yy_act = YY_STATE_EOF(YY_START);
       
  1598 					goto do_action;
       
  1599 					}
       
  1600 
       
  1601 				else
       
  1602 					{
       
  1603 					if ( ! yy_did_buffer_switch_on_eof )
       
  1604 						YY_NEW_FILE;
       
  1605 					}
       
  1606 				break;
       
  1607 				}
       
  1608 
       
  1609 			case EOB_ACT_CONTINUE_SCAN:
       
  1610 				yy_c_buf_p =
       
  1611 					yytext_ptr + yy_amount_of_matched_text;
       
  1612 
       
  1613 				yy_current_state = yy_get_previous_state();
       
  1614 
       
  1615 				yy_cp = yy_c_buf_p;
       
  1616 				yy_bp = yytext_ptr + YY_MORE_ADJ;
       
  1617 				goto yy_match;
       
  1618 
       
  1619 			case EOB_ACT_LAST_MATCH:
       
  1620 				yy_c_buf_p =
       
  1621 				&yy_current_buffer->yy_ch_buf[yy_n_chars];
       
  1622 
       
  1623 				yy_current_state = yy_get_previous_state();
       
  1624 
       
  1625 				yy_cp = yy_c_buf_p;
       
  1626 				yy_bp = yytext_ptr + YY_MORE_ADJ;
       
  1627 				goto yy_find_action;
       
  1628 			}
       
  1629 		break;
       
  1630 		}
       
  1631 
       
  1632 	default:
       
  1633 		YY_FATAL_ERROR(
       
  1634 			"fatal flex scanner internal error--no action found" );
       
  1635 	} /* end of action switch */
       
  1636 		} /* end of scanning one token */
       
  1637 	} /* end of yylex */
       
  1638 
       
  1639 
       
  1640 /* yy_get_next_buffer - try to read in a new buffer
       
  1641  *
       
  1642  * Returns a code representing an action:
       
  1643  *	EOB_ACT_LAST_MATCH -
       
  1644  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
       
  1645  *	EOB_ACT_END_OF_FILE - end of file
       
  1646  */
       
  1647 
       
  1648 static int yy_get_next_buffer()
       
  1649 	{
       
  1650 	register char *dest = yy_current_buffer->yy_ch_buf;
       
  1651 	register char *source = yytext_ptr;
       
  1652 	register int number_to_move, i;
       
  1653 	int ret_val;
       
  1654 
       
  1655 	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
       
  1656 		YY_FATAL_ERROR(
       
  1657 		"fatal flex scanner internal error--end of buffer missed" );
       
  1658 
       
  1659 	if ( yy_current_buffer->yy_fill_buffer == 0 )
       
  1660 		{ /* Don't try to fill the buffer, so this is an EOF. */
       
  1661 		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
       
  1662 			{
       
  1663 			/* We matched a single character, the EOB, so
       
  1664 			 * treat this as a final EOF.
       
  1665 			 */
       
  1666 			return EOB_ACT_END_OF_FILE;
       
  1667 			}
       
  1668 
       
  1669 		else
       
  1670 			{
       
  1671 			/* We matched some text prior to the EOB, first
       
  1672 			 * process it.
       
  1673 			 */
       
  1674 			return EOB_ACT_LAST_MATCH;
       
  1675 			}
       
  1676 		}
       
  1677 
       
  1678 	/* Try to read more data. */
       
  1679 
       
  1680 	/* First move last chars to start of buffer. */
       
  1681 	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
       
  1682 
       
  1683 	for ( i = 0; i < number_to_move; ++i )
       
  1684 		*(dest++) = *(source++);
       
  1685 
       
  1686 	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
       
  1687 		/* don't do the read, it's not guaranteed to return an EOF,
       
  1688 		 * just force an EOF
       
  1689 		 */
       
  1690 		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
       
  1691 
       
  1692 	else
       
  1693 		{
       
  1694 		int num_to_read =
       
  1695 			yy_current_buffer->yy_buf_size - number_to_move - 1;
       
  1696 
       
  1697 		while ( num_to_read <= 0 )
       
  1698 			{ /* Not enough room in the buffer - grow it. */
       
  1699 #ifdef YY_USES_REJECT
       
  1700 			YY_FATAL_ERROR(
       
  1701 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
       
  1702 #else
       
  1703 
       
  1704 			/* just a shorter name for the current buffer */
       
  1705 			YY_BUFFER_STATE b = yy_current_buffer;
       
  1706 
       
  1707 			int yy_c_buf_p_offset =
       
  1708 				(int) (yy_c_buf_p - b->yy_ch_buf);
       
  1709 
       
  1710 			if ( b->yy_is_our_buffer )
       
  1711 				{
       
  1712 				int new_size = b->yy_buf_size * 2;
       
  1713 
       
  1714 				if ( new_size <= 0 )
       
  1715 					b->yy_buf_size += b->yy_buf_size / 8;
       
  1716 				else
       
  1717 					b->yy_buf_size *= 2;
       
  1718 
       
  1719 				b->yy_ch_buf = (char *)
       
  1720 					/* Include room in for 2 EOB chars. */
       
  1721 					yy_flex_realloc( (void *) b->yy_ch_buf,
       
  1722 							 b->yy_buf_size + 2 );
       
  1723 				}
       
  1724 			else
       
  1725 				/* Can't grow it, we don't own it. */
       
  1726 				b->yy_ch_buf = 0;
       
  1727 
       
  1728 			if ( ! b->yy_ch_buf )
       
  1729 				YY_FATAL_ERROR(
       
  1730 				"fatal error - scanner input buffer overflow" );
       
  1731 
       
  1732 			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
       
  1733 
       
  1734 			num_to_read = yy_current_buffer->yy_buf_size -
       
  1735 						number_to_move - 1;
       
  1736 #endif
       
  1737 			}
       
  1738 
       
  1739 		if ( num_to_read > YY_READ_BUF_SIZE )
       
  1740 			num_to_read = YY_READ_BUF_SIZE;
       
  1741 
       
  1742 		/* Read in more data. */
       
  1743 		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
       
  1744 			yy_n_chars, num_to_read );
       
  1745 
       
  1746 		yy_current_buffer->yy_n_chars = yy_n_chars;
       
  1747 		}
       
  1748 
       
  1749 	if ( yy_n_chars == 0 )
       
  1750 		{
       
  1751 		if ( number_to_move == YY_MORE_ADJ )
       
  1752 			{
       
  1753 			ret_val = EOB_ACT_END_OF_FILE;
       
  1754 			yyrestart( yyin );
       
  1755 			}
       
  1756 
       
  1757 		else
       
  1758 			{
       
  1759 			ret_val = EOB_ACT_LAST_MATCH;
       
  1760 			yy_current_buffer->yy_buffer_status =
       
  1761 				YY_BUFFER_EOF_PENDING;
       
  1762 			}
       
  1763 		}
       
  1764 
       
  1765 	else
       
  1766 		ret_val = EOB_ACT_CONTINUE_SCAN;
       
  1767 
       
  1768 	yy_n_chars += number_to_move;
       
  1769 	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
       
  1770 	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
       
  1771 
       
  1772 	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
       
  1773 
       
  1774 	return ret_val;
       
  1775 	}
       
  1776 
       
  1777 
       
  1778 /* yy_get_previous_state - get the state just before the EOB char was reached */
       
  1779 
       
  1780 static yy_state_type yy_get_previous_state()
       
  1781 	{
       
  1782 	register yy_state_type yy_current_state;
       
  1783 	register char *yy_cp;
       
  1784 
       
  1785 	yy_current_state = yy_start;
       
  1786 	yy_state_ptr = yy_state_buf;
       
  1787 	*yy_state_ptr++ = yy_current_state;
       
  1788 
       
  1789 	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
       
  1790 		{
       
  1791 		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
       
  1792 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
       
  1793 			{
       
  1794 			yy_current_state = (int) yy_def[yy_current_state];
       
  1795 			if ( yy_current_state >= 269 )
       
  1796 				yy_c = yy_meta[(unsigned int) yy_c];
       
  1797 			}
       
  1798 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
       
  1799 		*yy_state_ptr++ = yy_current_state;
       
  1800 		}
       
  1801 
       
  1802 	return yy_current_state;
       
  1803 	}
       
  1804 
       
  1805 
       
  1806 /* yy_try_NUL_trans - try to make a transition on the NUL character
       
  1807  *
       
  1808  * synopsis
       
  1809  *	next_state = yy_try_NUL_trans( current_state );
       
  1810  */
       
  1811 
       
  1812 #ifdef YY_USE_PROTOS
       
  1813 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
       
  1814 #else
       
  1815 static yy_state_type yy_try_NUL_trans( yy_current_state )
       
  1816 yy_state_type yy_current_state;
       
  1817 #endif
       
  1818 	{
       
  1819 	register int yy_is_jam;
       
  1820 
       
  1821 	register YY_CHAR yy_c = 1;
       
  1822 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
       
  1823 		{
       
  1824 		yy_current_state = (int) yy_def[yy_current_state];
       
  1825 		if ( yy_current_state >= 269 )
       
  1826 			yy_c = yy_meta[(unsigned int) yy_c];
       
  1827 		}
       
  1828 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
       
  1829 	yy_is_jam = (yy_current_state == 268);
       
  1830 	if ( ! yy_is_jam )
       
  1831 		*yy_state_ptr++ = yy_current_state;
       
  1832 
       
  1833 	return yy_is_jam ? 0 : yy_current_state;
       
  1834 	}
       
  1835 
       
  1836 
       
  1837 #ifndef YY_NO_UNPUT
       
  1838 #ifdef YY_USE_PROTOS
       
  1839 static void yyunput( int c, register char *yy_bp )
       
  1840 #else
       
  1841 static void yyunput( c, yy_bp )
       
  1842 int c;
       
  1843 register char *yy_bp;
       
  1844 #endif
       
  1845 	{
       
  1846 	register char *yy_cp = yy_c_buf_p;
       
  1847 
       
  1848 	/* undo effects of setting up yytext */
       
  1849 	*yy_cp = yy_hold_char;
       
  1850 
       
  1851 	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
       
  1852 		{ /* need to shift things up to make room */
       
  1853 		/* +2 for EOB chars. */
       
  1854 		register int number_to_move = yy_n_chars + 2;
       
  1855 		register char *dest = &yy_current_buffer->yy_ch_buf[
       
  1856 					yy_current_buffer->yy_buf_size + 2];
       
  1857 		register char *source =
       
  1858 				&yy_current_buffer->yy_ch_buf[number_to_move];
       
  1859 
       
  1860 		while ( source > yy_current_buffer->yy_ch_buf )
       
  1861 			*--dest = *--source;
       
  1862 
       
  1863 		yy_cp += (int) (dest - source);
       
  1864 		yy_bp += (int) (dest - source);
       
  1865 		yy_current_buffer->yy_n_chars =
       
  1866 			yy_n_chars = yy_current_buffer->yy_buf_size;
       
  1867 
       
  1868 		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
       
  1869 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
       
  1870 		}
       
  1871 
       
  1872 	*--yy_cp = (char) c;
       
  1873 
       
  1874 	if ( c == '\n' )
       
  1875 		--yylineno;
       
  1876 
       
  1877 	yytext_ptr = yy_bp;
       
  1878 	yy_hold_char = *yy_cp;
       
  1879 	yy_c_buf_p = yy_cp;
       
  1880 	}
       
  1881 #endif	/* ifndef YY_NO_UNPUT */
       
  1882 
       
  1883 
       
  1884 #ifdef __cplusplus
       
  1885 static int yyinput()
       
  1886 #else
       
  1887 static int input()
       
  1888 #endif
       
  1889 	{
       
  1890 	int c;
       
  1891 
       
  1892 	*yy_c_buf_p = yy_hold_char;
       
  1893 
       
  1894 	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
       
  1895 		{
       
  1896 		/* yy_c_buf_p now points to the character we want to return.
       
  1897 		 * If this occurs *before* the EOB characters, then it's a
       
  1898 		 * valid NUL; if not, then we've hit the end of the buffer.
       
  1899 		 */
       
  1900 		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
       
  1901 			/* This was really a NUL. */
       
  1902 			*yy_c_buf_p = '\0';
       
  1903 
       
  1904 		else
       
  1905 			{ /* need more input */
       
  1906 			int offset = yy_c_buf_p - yytext_ptr;
       
  1907 			++yy_c_buf_p;
       
  1908 
       
  1909 			switch ( yy_get_next_buffer() )
       
  1910 				{
       
  1911 				case EOB_ACT_LAST_MATCH:
       
  1912 					/* This happens because yy_g_n_b()
       
  1913 					 * sees that we've accumulated a
       
  1914 					 * token and flags that we need to
       
  1915 					 * try matching the token before
       
  1916 					 * proceeding.  But for input(),
       
  1917 					 * there's no matching to consider.
       
  1918 					 * So convert the EOB_ACT_LAST_MATCH
       
  1919 					 * to EOB_ACT_END_OF_FILE.
       
  1920 					 */
       
  1921 
       
  1922 					/* Reset buffer status. */
       
  1923 					yyrestart( yyin );
       
  1924 
       
  1925 					/* fall through */
       
  1926 
       
  1927 				case EOB_ACT_END_OF_FILE:
       
  1928 					{
       
  1929 					if ( yywrap() )
       
  1930 						return EOF;
       
  1931 
       
  1932 					if ( ! yy_did_buffer_switch_on_eof )
       
  1933 						YY_NEW_FILE;
       
  1934 #ifdef __cplusplus
       
  1935 					return yyinput();
       
  1936 #else
       
  1937 					return input();
       
  1938 #endif
       
  1939 					}
       
  1940 
       
  1941 				case EOB_ACT_CONTINUE_SCAN:
       
  1942 					yy_c_buf_p = yytext_ptr + offset;
       
  1943 					break;
       
  1944 				}
       
  1945 			}
       
  1946 		}
       
  1947 
       
  1948 	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
       
  1949 	*yy_c_buf_p = '\0';	/* preserve yytext */
       
  1950 	yy_hold_char = *++yy_c_buf_p;
       
  1951 
       
  1952 	if ( c == '\n' )
       
  1953 		++yylineno;
       
  1954 
       
  1955 	return c;
       
  1956 	}
       
  1957 
       
  1958 
       
  1959 #ifdef YY_USE_PROTOS
       
  1960 void yyrestart( FILE *input_file )
       
  1961 #else
       
  1962 void yyrestart( input_file )
       
  1963 FILE *input_file;
       
  1964 #endif
       
  1965 	{
       
  1966 	if ( ! yy_current_buffer )
       
  1967 		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
       
  1968 
       
  1969 	yy_init_buffer( yy_current_buffer, input_file );
       
  1970 	yy_load_buffer_state();
       
  1971 	}
       
  1972 
       
  1973 
       
  1974 #ifdef YY_USE_PROTOS
       
  1975 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
       
  1976 #else
       
  1977 void yy_switch_to_buffer( new_buffer )
       
  1978 YY_BUFFER_STATE new_buffer;
       
  1979 #endif
       
  1980 	{
       
  1981 	if ( yy_current_buffer == new_buffer )
       
  1982 		return;
       
  1983 
       
  1984 	if ( yy_current_buffer )
       
  1985 		{
       
  1986 		/* Flush out information for old buffer. */
       
  1987 		*yy_c_buf_p = yy_hold_char;
       
  1988 		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
       
  1989 		yy_current_buffer->yy_n_chars = yy_n_chars;
       
  1990 		}
       
  1991 
       
  1992 	yy_current_buffer = new_buffer;
       
  1993 	yy_load_buffer_state();
       
  1994 
       
  1995 	/* We don't actually know whether we did this switch during
       
  1996 	 * EOF (yywrap()) processing, but the only time this flag
       
  1997 	 * is looked at is after yywrap() is called, so it's safe
       
  1998 	 * to go ahead and always set it.
       
  1999 	 */
       
  2000 	yy_did_buffer_switch_on_eof = 1;
       
  2001 	}
       
  2002 
       
  2003 
       
  2004 #ifdef YY_USE_PROTOS
       
  2005 void yy_load_buffer_state( void )
       
  2006 #else
       
  2007 void yy_load_buffer_state()
       
  2008 #endif
       
  2009 	{
       
  2010 	yy_n_chars = yy_current_buffer->yy_n_chars;
       
  2011 	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
       
  2012 	yyin = yy_current_buffer->yy_input_file;
       
  2013 	yy_hold_char = *yy_c_buf_p;
       
  2014 	}
       
  2015 
       
  2016 
       
  2017 #ifdef YY_USE_PROTOS
       
  2018 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
       
  2019 #else
       
  2020 YY_BUFFER_STATE yy_create_buffer( file, size )
       
  2021 FILE *file;
       
  2022 int size;
       
  2023 #endif
       
  2024 	{
       
  2025 	YY_BUFFER_STATE b;
       
  2026 
       
  2027 	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
       
  2028 	if ( ! b )
       
  2029 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
       
  2030 
       
  2031 	b->yy_buf_size = size;
       
  2032 
       
  2033 	/* yy_ch_buf has to be 2 characters longer than the size given because
       
  2034 	 * we need to put in 2 end-of-buffer characters.
       
  2035 	 */
       
  2036 	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
       
  2037 	if ( ! b->yy_ch_buf )
       
  2038 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
       
  2039 
       
  2040 	b->yy_is_our_buffer = 1;
       
  2041 
       
  2042 	yy_init_buffer( b, file );
       
  2043 
       
  2044 	return b;
       
  2045 	}
       
  2046 
       
  2047 
       
  2048 #ifdef YY_USE_PROTOS
       
  2049 void yy_delete_buffer( YY_BUFFER_STATE b )
       
  2050 #else
       
  2051 void yy_delete_buffer( b )
       
  2052 YY_BUFFER_STATE b;
       
  2053 #endif
       
  2054 	{
       
  2055 	if ( ! b )
       
  2056 		return;
       
  2057 
       
  2058 	if ( b == yy_current_buffer )
       
  2059 		yy_current_buffer = (YY_BUFFER_STATE) 0;
       
  2060 
       
  2061 	if ( b->yy_is_our_buffer )
       
  2062 		yy_flex_free( (void *) b->yy_ch_buf );
       
  2063 
       
  2064 	yy_flex_free( (void *) b );
       
  2065 	}
       
  2066 
       
  2067 
       
  2068 #ifndef YY_ALWAYS_INTERACTIVE
       
  2069 #ifndef YY_NEVER_INTERACTIVE
       
  2070 extern int isatty YY_PROTO(( int ));
       
  2071 #endif
       
  2072 #endif
       
  2073 
       
  2074 #ifdef YY_USE_PROTOS
       
  2075 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
       
  2076 #else
       
  2077 void yy_init_buffer( b, file )
       
  2078 YY_BUFFER_STATE b;
       
  2079 FILE *file;
       
  2080 #endif
       
  2081 
       
  2082 
       
  2083 	{
       
  2084 	yy_flush_buffer( b );
       
  2085 
       
  2086 	b->yy_input_file = file;
       
  2087 	b->yy_fill_buffer = 1;
       
  2088 
       
  2089 #if YY_ALWAYS_INTERACTIVE
       
  2090 	b->yy_is_interactive = 1;
       
  2091 #else
       
  2092 #if YY_NEVER_INTERACTIVE
       
  2093 	b->yy_is_interactive = 0;
       
  2094 #else
       
  2095 	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
       
  2096 #endif
       
  2097 #endif
       
  2098 	}
       
  2099 
       
  2100 
       
  2101 #ifdef YY_USE_PROTOS
       
  2102 void yy_flush_buffer( YY_BUFFER_STATE b )
       
  2103 #else
       
  2104 void yy_flush_buffer( b )
       
  2105 YY_BUFFER_STATE b;
       
  2106 #endif
       
  2107 
       
  2108 	{
       
  2109 	if ( ! b )
       
  2110 		return;
       
  2111 
       
  2112 	b->yy_n_chars = 0;
       
  2113 
       
  2114 	/* We always need two end-of-buffer characters.  The first causes
       
  2115 	 * a transition to the end-of-buffer state.  The second causes
       
  2116 	 * a jam in that state.
       
  2117 	 */
       
  2118 	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
       
  2119 	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
       
  2120 
       
  2121 	b->yy_buf_pos = &b->yy_ch_buf[0];
       
  2122 
       
  2123 	b->yy_at_bol = 1;
       
  2124 	b->yy_buffer_status = YY_BUFFER_NEW;
       
  2125 
       
  2126 	if ( b == yy_current_buffer )
       
  2127 		yy_load_buffer_state();
       
  2128 	}
       
  2129 
       
  2130 
       
  2131 #ifndef YY_NO_SCAN_BUFFER
       
  2132 #ifdef YY_USE_PROTOS
       
  2133 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
       
  2134 #else
       
  2135 YY_BUFFER_STATE yy_scan_buffer( base, size )
       
  2136 char *base;
       
  2137 yy_size_t size;
       
  2138 #endif
       
  2139 	{
       
  2140 	YY_BUFFER_STATE b;
       
  2141 
       
  2142 	if ( size < 2 ||
       
  2143 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
       
  2144 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
       
  2145 		/* They forgot to leave room for the EOB's. */
       
  2146 		return 0;
       
  2147 
       
  2148 	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
       
  2149 	if ( ! b )
       
  2150 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
       
  2151 
       
  2152 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
       
  2153 	b->yy_buf_pos = b->yy_ch_buf = base;
       
  2154 	b->yy_is_our_buffer = 0;
       
  2155 	b->yy_input_file = 0;
       
  2156 	b->yy_n_chars = b->yy_buf_size;
       
  2157 	b->yy_is_interactive = 0;
       
  2158 	b->yy_at_bol = 1;
       
  2159 	b->yy_fill_buffer = 0;
       
  2160 	b->yy_buffer_status = YY_BUFFER_NEW;
       
  2161 
       
  2162 	yy_switch_to_buffer( b );
       
  2163 
       
  2164 	return b;
       
  2165 	}
       
  2166 #endif
       
  2167 
       
  2168 
       
  2169 #ifndef YY_NO_SCAN_STRING
       
  2170 #ifdef YY_USE_PROTOS
       
  2171 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
       
  2172 #else
       
  2173 YY_BUFFER_STATE yy_scan_string( yy_str )
       
  2174 yyconst char *yy_str;
       
  2175 #endif
       
  2176 	{
       
  2177 	int len;
       
  2178 	for ( len = 0; yy_str[len]; ++len )
       
  2179 		;
       
  2180 
       
  2181 	return yy_scan_bytes( yy_str, len );
       
  2182 	}
       
  2183 #endif
       
  2184 
       
  2185 
       
  2186 #ifndef YY_NO_SCAN_BYTES
       
  2187 #ifdef YY_USE_PROTOS
       
  2188 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
       
  2189 #else
       
  2190 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
       
  2191 yyconst char *bytes;
       
  2192 int len;
       
  2193 #endif
       
  2194 	{
       
  2195 	YY_BUFFER_STATE b;
       
  2196 	char *buf;
       
  2197 	yy_size_t n;
       
  2198 	int i;
       
  2199 
       
  2200 	/* Get memory for full buffer, including space for trailing EOB's. */
       
  2201 	n = len + 2;
       
  2202 	buf = (char *) yy_flex_alloc( n );
       
  2203 	if ( ! buf )
       
  2204 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
       
  2205 
       
  2206 	for ( i = 0; i < len; ++i )
       
  2207 		buf[i] = bytes[i];
       
  2208 
       
  2209 	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
       
  2210 
       
  2211 	b = yy_scan_buffer( buf, n );
       
  2212 	if ( ! b )
       
  2213 		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
       
  2214 
       
  2215 	/* It's okay to grow etc. this buffer, and we should throw it
       
  2216 	 * away when we're done.
       
  2217 	 */
       
  2218 	b->yy_is_our_buffer = 1;
       
  2219 
       
  2220 	return b;
       
  2221 	}
       
  2222 #endif
       
  2223 
       
  2224 
       
  2225 #ifndef YY_NO_PUSH_STATE
       
  2226 #ifdef YY_USE_PROTOS
       
  2227 static void yy_push_state( int new_state )
       
  2228 #else
       
  2229 static void yy_push_state( new_state )
       
  2230 int new_state;
       
  2231 #endif
       
  2232 	{
       
  2233 	if ( yy_start_stack_ptr >= yy_start_stack_depth )
       
  2234 		{
       
  2235 		yy_size_t new_size;
       
  2236 
       
  2237 		yy_start_stack_depth += YY_START_STACK_INCR;
       
  2238 		new_size = yy_start_stack_depth * sizeof( int );
       
  2239 
       
  2240 		if ( ! yy_start_stack )
       
  2241 			yy_start_stack = (int *) yy_flex_alloc( new_size );
       
  2242 
       
  2243 		else
       
  2244 			yy_start_stack = (int *) yy_flex_realloc(
       
  2245 					(void *) yy_start_stack, new_size );
       
  2246 
       
  2247 		if ( ! yy_start_stack )
       
  2248 			YY_FATAL_ERROR(
       
  2249 			"out of memory expanding start-condition stack" );
       
  2250 		}
       
  2251 
       
  2252 	yy_start_stack[yy_start_stack_ptr++] = YY_START;
       
  2253 
       
  2254 	BEGIN(new_state);
       
  2255 	}
       
  2256 #endif
       
  2257 
       
  2258 
       
  2259 #ifndef YY_NO_POP_STATE
       
  2260 static void yy_pop_state()
       
  2261 	{
       
  2262 	if ( --yy_start_stack_ptr < 0 )
       
  2263 		YY_FATAL_ERROR( "start-condition stack underflow" );
       
  2264 
       
  2265 	BEGIN(yy_start_stack[yy_start_stack_ptr]);
       
  2266 	}
       
  2267 #endif
       
  2268 
       
  2269 
       
  2270 #ifndef YY_NO_TOP_STATE
       
  2271 static int yy_top_state()
       
  2272 	{
       
  2273 	return yy_start_stack[yy_start_stack_ptr - 1];
       
  2274 	}
       
  2275 #endif
       
  2276 
       
  2277 #ifndef YY_EXIT_FAILURE
       
  2278 #define YY_EXIT_FAILURE 2
       
  2279 #endif
       
  2280 
       
  2281 #ifdef YY_USE_PROTOS
       
  2282 static void yy_fatal_error( yyconst char msg[] )
       
  2283 #else
       
  2284 static void yy_fatal_error( msg )
       
  2285 char msg[];
       
  2286 #endif
       
  2287 	{
       
  2288 	(void) fprintf( stderr, "%s\n", msg );
       
  2289 	exit( YY_EXIT_FAILURE );
       
  2290 	}
       
  2291 
       
  2292 
       
  2293 
       
  2294 /* Redefine yyless() so it works in section 3 code. */
       
  2295 
       
  2296 #undef yyless
       
  2297 #define yyless(n) \
       
  2298 	do \
       
  2299 		{ \
       
  2300 		/* Undo effects of setting up yytext. */ \
       
  2301 		yytext[yyleng] = yy_hold_char; \
       
  2302 		yy_c_buf_p = yytext + n; \
       
  2303 		yy_hold_char = *yy_c_buf_p; \
       
  2304 		*yy_c_buf_p = '\0'; \
       
  2305 		yyleng = n; \
       
  2306 		} \
       
  2307 	while ( 0 )
       
  2308 
       
  2309 
       
  2310 /* Internal utility routines. */
       
  2311 
       
  2312 #ifndef yytext_ptr
       
  2313 #ifdef YY_USE_PROTOS
       
  2314 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
       
  2315 #else
       
  2316 static void yy_flex_strncpy( s1, s2, n )
       
  2317 char *s1;
       
  2318 yyconst char *s2;
       
  2319 int n;
       
  2320 #endif
       
  2321 	{
       
  2322 	register int i;
       
  2323 	for ( i = 0; i < n; ++i )
       
  2324 		s1[i] = s2[i];
       
  2325 	}
       
  2326 #endif
       
  2327 
       
  2328 #ifdef YY_NEED_STRLEN
       
  2329 #ifdef YY_USE_PROTOS
       
  2330 static int yy_flex_strlen( yyconst char *s )
       
  2331 #else
       
  2332 static int yy_flex_strlen( s )
       
  2333 yyconst char *s;
       
  2334 #endif
       
  2335 	{
       
  2336 	register int n;
       
  2337 	for ( n = 0; s[n]; ++n )
       
  2338 		;
       
  2339 
       
  2340 	return n;
       
  2341 	}
       
  2342 #endif
       
  2343 
       
  2344 
       
  2345 #ifdef YY_USE_PROTOS
       
  2346 static void *yy_flex_alloc( yy_size_t size )
       
  2347 #else
       
  2348 static void *yy_flex_alloc( size )
       
  2349 yy_size_t size;
       
  2350 #endif
       
  2351 	{
       
  2352 	return (void *) malloc( size );
       
  2353 	}
       
  2354 
       
  2355 #ifdef YY_USE_PROTOS
       
  2356 static void *yy_flex_realloc( void *ptr, yy_size_t size )
       
  2357 #else
       
  2358 static void *yy_flex_realloc( ptr, size )
       
  2359 void *ptr;
       
  2360 yy_size_t size;
       
  2361 #endif
       
  2362 	{
       
  2363 	/* The cast to (char *) in the following accommodates both
       
  2364 	 * implementations that use char* generic pointers, and those
       
  2365 	 * that use void* generic pointers.  It works with the latter
       
  2366 	 * because both ANSI C and C++ allow castless assignment from
       
  2367 	 * any pointer type to void*, and deal with argument conversions
       
  2368 	 * as though doing an assignment.
       
  2369 	 */
       
  2370 	return (void *) realloc( (char *) ptr, size );
       
  2371 	}
       
  2372 
       
  2373 #ifdef YY_USE_PROTOS
       
  2374 static void yy_flex_free( void *ptr )
       
  2375 #else
       
  2376 static void yy_flex_free( ptr )
       
  2377 void *ptr;
       
  2378 #endif
       
  2379 	{
       
  2380 	free( ptr );
       
  2381 	}
       
  2382 
       
  2383 #if YY_MAIN
       
  2384 int main()
       
  2385 	{
       
  2386 	yylex();
       
  2387 	return 0;
       
  2388 	}
       
  2389 #endif
       
  2390 #line 318 "RCOMP.LEX"