[svn:parrot] r40384 - trunk/compilers/pirc/src

kjs at svn.parrot.org kjs at svn.parrot.org
Sun Aug 2 13:45:01 UTC 2009


Author: kjs
Date: Sun Aug  2 13:45:00 2009
New Revision: 40384
URL: https://trac.parrot.org/parrot/changeset/40384

Log:
store the STRING created by the lexer in the temporary sval field in the lexer struct. Once PIRC has been converted, it can be stored in yylval->sval, but for now, we need to duplicate this functionality using STRINGs instead of C strings

Modified:
   trunk/compilers/pirc/src/pir.l
   trunk/compilers/pirc/src/pirlexer.c

Modified: trunk/compilers/pirc/src/pir.l
==============================================================================
--- trunk/compilers/pirc/src/pir.l	Sun Aug  2 13:37:07 2009	(r40383)
+++ trunk/compilers/pirc/src/pir.l	Sun Aug  2 13:45:00 2009	(r40384)
@@ -416,6 +416,11 @@
                     char *str = Parrot_str_to_cstring(lexer->interp, pstr);
 
                     yylval->sval = str;
+                    
+                    /* store the STRING in lexer's sval buffer; once PIRC is doing
+                    only STRINGs, it can be stored in yylval.sval. */
+                    lexer->sval = pstr;
+                    
                     return TK_STRINGC;
                   }
 

Modified: trunk/compilers/pirc/src/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.c	Sun Aug  2 13:37:07 2009	(r40383)
+++ trunk/compilers/pirc/src/pirlexer.c	Sun Aug  2 13:45:00 2009	(r40384)
@@ -44,18 +44,10 @@
 
 /* A lexical scanner generated by flex */
 
-/* %not-for-header */
-
-/* %if-c-only */
-/* %if-not-reentrant */
-/* %endif */
-/* %endif */
-/* %ok-for-header */
-
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 33
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -64,7 +56,7 @@
 /* %endif */
 
 /* %if-c-only */
-
+    
 /* %endif */
 
 /* %if-c-only */
@@ -93,10 +85,10 @@
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#if __STDC_VERSION__ >= 199901L
 
 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
+ * if you want the limit (max/min) macros for int types. 
  */
 #ifndef __STDC_LIMIT_MACROS
 #define __STDC_LIMIT_MACROS 1
@@ -113,7 +105,7 @@
 typedef signed char flex_int8_t;
 typedef short int flex_int16_t;
 typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
+typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
 #endif /* ! C99 */
@@ -159,15 +151,14 @@
 /* The "const" storage-class-modifier is valid. */
 #define YY_USE_CONST
 
-#else   /* ! __cplusplus */
+#else	/* ! __cplusplus */
 
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
+#if __STDC__
 
 #define YY_USE_CONST
 
-#endif  /* defined (__STDC__) */
-#endif  /* ! __cplusplus */
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
 
 #ifdef YY_USE_CONST
 #define yyconst const
@@ -210,6 +201,7 @@
 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
 #define yy_flex_debug yyg->yy_flex_debug_r
 
+int yypirlex_init (yyscan_t* scanner);
 /* %endif */
 
 /* %if-not-reentrant */
@@ -264,7 +256,7 @@
 
     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
      *       access to the local variable yy_act. Since yyless() is a macro, it would break
-     *       existing scanners that call yyless() from OUTSIDE yypirlex.
+     *       existing scanners that call yyless() from OUTSIDE yypirlex. 
      *       One obvious solution it to make yy_act a global. I tried that, and saw
      *       a 5% performance hit in a non-yylineno scanner, because yy_act is
      *       normally declared as a register variable-- so it is not worth it.
@@ -276,96 +268,101 @@
                     if ( yytext[yyl] == '\n' )\
                         --yylineno;\
             }while(0)
-
+    
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
-    do \
-        { \
-        /* Undo effects of setting up yytext. */ \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
-        *yy_cp = yyg->yy_hold_char; \
-        YY_RESTORE_YY_MORE_OFFSET \
-        yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-        YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-        } \
-    while ( 0 )
+		*yy_cp = yyg->yy_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+		} \
+	while ( 0 )
 
 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
 
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+
 #ifndef YY_TYPEDEF_YY_SIZE_T
 #define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
+typedef unsigned int yy_size_t;
 #endif
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
-    {
+	{
 /* %if-c-only */
-    FILE *yy_input_file;
+	FILE *yy_input_file;
 /* %endif */
 
 /* %if-c++-only */
 /* %endif */
 
-    char *yy_ch_buf;        /* input buffer */
-    char *yy_buf_pos;       /* current position in input buffer */
-
-    /* Size of input buffer in bytes, not including room for EOB
-     * characters.
-     */
-    yy_size_t yy_buf_size;
-
-    /* Number of characters read into yy_ch_buf, not including EOB
-     * characters.
-     */
-    int yy_n_chars;
-
-    /* Whether we "own" the buffer - i.e., we know we created it,
-     * and can realloc() it to grow it, and should free() it to
-     * delete it.
-     */
-    int yy_is_our_buffer;
-
-    /* Whether this is an "interactive" input source; if so, and
-     * if we're using stdio for input, then we want to use getc()
-     * instead of fread(), to make sure we stop fetching input after
-     * each newline.
-     */
-    int yy_is_interactive;
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
 
-    /* Whether we're considered to be at the beginning of a line.
-     * If so, '^' rules will be active on the next match, otherwise
-     * not.
-     */
-    int yy_at_bol;
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
 
-    /* Whether to try to fill the input buffer when we reach the
-     * end of it.
-     */
-    int yy_fill_buffer;
-
-    int yy_buffer_status;
+	int yy_buffer_status;
 
 #define YY_BUFFER_NEW 0
 #define YY_BUFFER_NORMAL 1
-    /* When an EOF's been seen but there's still some text to process
-     * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-     * shouldn't try reading from the input source any more.  We might
-     * still have a bunch of tokens to match, though, because of
-     * possible backing-up.
-     *
-     * When we actually see the EOF, we change the status to "new"
-     * (via yypirrestart()), so that the user can continue scanning by
-     * just pointing yyin at a new input file.
-     */
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via yypirrestart()), so that the user can continue scanning by
+	 * just pointing yyin at a new input file.
+	 */
 #define YY_BUFFER_EOF_PENDING 2
 
-    };
+	};
 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
 /* %if-c-only Standard (non-C++) definition */
@@ -428,24 +425,24 @@
 #define yy_new_buffer yypir_create_buffer
 
 #define yy_set_interactive(is_interactive) \
-    { \
-    if ( ! YY_CURRENT_BUFFER ){ \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
         yypirensure_buffer_stack (yyscanner); \
-        YY_CURRENT_BUFFER_LVALUE =    \
+		YY_CURRENT_BUFFER_LVALUE =    \
             yypir_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
-    } \
-    YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-    }
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
 
 #define yy_set_bol(at_bol) \
-    { \
-    if ( ! YY_CURRENT_BUFFER ){\
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
         yypirensure_buffer_stack (yyscanner); \
-        YY_CURRENT_BUFFER_LVALUE =    \
+		YY_CURRENT_BUFFER_LVALUE =    \
             yypir_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
-    } \
-    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-    }
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
 
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
@@ -476,13 +473,13 @@
  * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
-    yyg->yytext_ptr = yy_bp; \
+	yyg->yytext_ptr = yy_bp; \
 /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
-    yyleng = (size_t) (yy_cp - yy_bp); \
-    yyg->yy_hold_char = *yy_cp; \
-    *yy_cp = '\0'; \
+	yyleng = (size_t) (yy_cp - yy_bp); \
+	yyg->yy_hold_char = *yy_cp; \
+	*yy_cp = '\0'; \
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
-    yyg->yy_c_buf_p = yy_cp;
+	yyg->yy_c_buf_p = yy_cp;
 
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
 #define YY_NUM_RULES 209
@@ -490,10 +487,10 @@
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
-    {
-    flex_int32_t yy_verify;
-    flex_int32_t yy_nxt;
-    };
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
 static yyconst flex_int16_t yy_accept[825] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -1388,16 +1385,16 @@
 /* Table of booleans, true if rule could match eol. */
 static yyconst flex_int32_t yy_rule_can_match_eol[210] =
     {   0,
-1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 1, 0, 0,     };
 
 static yyconst flex_int16_t yy_rule_linenum[209] =
@@ -1414,17 +1411,17 @@
       381,  382,  383,  384,  385,  386,  387,  388,  389,  390,
 
       392,  393,  394,  395,  396,  397,  398,  399,  401,  405,
-      422,  427,  456,  504,  505,  506,  507,  509,  514,  526,
-      554,  555,  556,  557,  558,  560,  568,  619,  632,  654,
-      659,  664,  671,  672,  687,  692,  693,  698,  699,  700,
-      702,  718,  772,  800,  805,  810,  811,  812,  813,  818,
-      829,  830,  832,  834,  845,  859,  864,  865,  866,  867,
-      869,  884,  898,  927,  952,  954,  959,  969,  974,  992,
-      998, 1005, 1038, 1040, 1045, 1081, 1082, 1083, 1085, 1086,
-     1087, 1088, 1089, 1090, 1092, 1093, 1094, 1096, 1101, 1106,
-     1107, 1110, 1144, 1149, 1152, 1153, 1154, 1155, 1157, 1162,
+      427,  432,  461,  509,  510,  511,  512,  514,  519,  531,
+      559,  560,  561,  562,  563,  565,  573,  624,  637,  659,
+      664,  669,  676,  677,  692,  697,  698,  703,  704,  705,
+      707,  723,  777,  805,  810,  815,  816,  817,  818,  823,
+      834,  835,  837,  839,  850,  864,  869,  870,  871,  872,
+      874,  889,  903,  932,  957,  959,  964,  974,  979,  997,
+     1003, 1010, 1043, 1045, 1050, 1086, 1087, 1088, 1090, 1091,
+     1092, 1093, 1094, 1095, 1097, 1098, 1099, 1101, 1106, 1111,
+     1112, 1115, 1149, 1154, 1157, 1158, 1159, 1160, 1162, 1167,
 
-     1163, 1164, 1165, 1166, 1168, 1173, 1175, 1177
+     1168, 1169, 1170, 1171, 1173, 1178, 1180, 1182
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1544,7 +1541,7 @@
 
 /* The PASM state is an exclusive state, recognizing ONLY PASM tokens. */
 
-#line 1548 "pirlexer.c"
+#line 1545 "pirlexer.c"
 
 #define INITIAL 0
 #define MACROHEAD 1
@@ -1625,15 +1622,9 @@
     /* This must go here because YYSTYPE and YYLTYPE are included
      * from bison output in section 1.*/
     #    define yylval yyg->yylval_r
-
-int yypirlex_init (yyscan_t* scanner);
-
-int yypirlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
-
+    
 /* %endif */
 
-/* %endif End reentrant structures and macros. */
-
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
@@ -1670,6 +1661,7 @@
 void yypirset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
 
 /* %endif */
+/* %endif End reentrant structures and macros. */
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1714,11 +1706,11 @@
 /* %if-c-only */
 
     static void yy_push_state (int new_state ,yyscan_t yyscanner);
-
+    
     static void yy_pop_state (yyscan_t yyscanner );
-
+    
     static int yy_top_state (yyscan_t yyscanner );
-
+    
 /* %endif */
 
 /* Amount of stuff to slurp up with each read. */
@@ -1732,7 +1724,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -1744,33 +1736,33 @@
 #ifndef YY_INPUT
 #define YY_INPUT(buf,result,max_size) \
 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
-    if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-        { \
-        int c = '*'; \
-        int n; \
-        for ( n = 0; n < max_size && \
-                 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-            buf[n] = (char) c; \
-        if ( c == '\n' ) \
-            buf[n++] = (char) c; \
-        if ( c == EOF && ferror( yyin ) ) \
-            YY_FATAL_ERROR( "input in flex scanner failed" ); \
-        result = n; \
-        } \
-    else \
-        { \
-        errno=0; \
-        while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-            { \
-            if( errno != EINTR) \
-                { \
-                YY_FATAL_ERROR( "input in flex scanner failed" ); \
-                break; \
-                } \
-            errno=0; \
-            clearerr(yyin); \
-            } \
-        }\
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		size_t n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( yyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(yyin); \
+			} \
+		}\
 \
 /* %if-c++-only C++ definition \ */\
 /* %endif */
@@ -1819,11 +1811,9 @@
 #define YY_DECL_IS_OURS 1
 /* %if-c-only Standard (non-C++) definition */
 
-extern int yypirlex \
-               (YYSTYPE * yylval_param ,yyscan_t yyscanner);
+extern int yypirlex (YYSTYPE * yylval_param ,yyscan_t yyscanner);
 
-#define YY_DECL int yypirlex \
-               (YYSTYPE * yylval_param , yyscan_t yyscanner)
+#define YY_DECL int yypirlex (YYSTYPE * yylval_param , yyscan_t yyscanner)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -1843,7 +1833,7 @@
 
 /* %% [6.0] YY_RULE_SETUP definition goes here */
 #define YY_RULE_SETUP \
-    YY_USER_ACTION
+	YY_USER_ACTION
 
 /* %not-for-header */
 
@@ -1851,9 +1841,9 @@
  */
 YY_DECL
 {
-    register yy_state_type yy_current_state;
-    register char *yy_cp, *yy_bp;
-    register int yy_act;
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 /* %% [7.0] user's declarations go here */
@@ -1861,129 +1851,129 @@
 
 
 
-#line 1865 "pirlexer.c"
+#line 1855 "pirlexer.c"
 
     yylval = yylval_param;
 
-    if ( !yyg->yy_init )
-        {
-        yyg->yy_init = 1;
+	if ( !yyg->yy_init )
+		{
+		yyg->yy_init = 1;
 
 #ifdef YY_USER_INIT
-        YY_USER_INIT;
+		YY_USER_INIT;
 #endif
 
-        if ( ! yyg->yy_start )
-            yyg->yy_start = 1;  /* first start state */
+		if ( ! yyg->yy_start )
+			yyg->yy_start = 1;	/* first start state */
 
-        if ( ! yyin )
+		if ( ! yyin )
 /* %if-c-only */
-            yyin = stdin;
+			yyin = stdin;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 
-        if ( ! yyout )
+		if ( ! yyout )
 /* %if-c-only */
-            yyout = stdout;
+			yyout = stdout;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 
-        if ( ! YY_CURRENT_BUFFER ) {
-            yypirensure_buffer_stack (yyscanner);
-            YY_CURRENT_BUFFER_LVALUE =
-                yypir_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
-        }
+		if ( ! YY_CURRENT_BUFFER ) {
+			yypirensure_buffer_stack (yyscanner);
+			YY_CURRENT_BUFFER_LVALUE =
+				yypir_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+		}
 
-        yypir_load_buffer_state(yyscanner );
-        }
+		yypir_load_buffer_state(yyscanner );
+		}
 
-    while ( 1 )     /* loops until end-of-file is reached */
-        {
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
 /* %% [8.0] yymore()-related code goes here */
-        yy_cp = yyg->yy_c_buf_p;
+		yy_cp = yyg->yy_c_buf_p;
 
-        /* Support of yytext. */
-        *yy_cp = yyg->yy_hold_char;
+		/* Support of yytext. */
+		*yy_cp = yyg->yy_hold_char;
 
-        /* yy_bp points to the position in yy_ch_buf of the start of
-         * the current run.
-         */
-        yy_bp = yy_cp;
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
 
 /* %% [9.0] code to set up and find next match goes here */
-        yy_current_state = yyg->yy_start;
+		yy_current_state = yyg->yy_start;
 yy_match:
-        do
-            {
-            register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-            if ( yy_accept[yy_current_state] )
-                {
-                yyg->yy_last_accepting_state = yy_current_state;
-                yyg->yy_last_accepting_cpos = yy_cp;
-                }
-            while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                {
-                yy_current_state = (int) yy_def[yy_current_state];
-                if ( yy_current_state >= 825 )
-                    yy_c = yy_meta[(unsigned int) yy_c];
-                }
-            yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-            ++yy_cp;
-            }
-        while ( yy_current_state != 824 );
-        yy_cp = yyg->yy_last_accepting_cpos;
-        yy_current_state = yyg->yy_last_accepting_state;
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				yyg->yy_last_accepting_state = yy_current_state;
+				yyg->yy_last_accepting_cpos = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 825 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_current_state != 824 );
+		yy_cp = yyg->yy_last_accepting_cpos;
+		yy_current_state = yyg->yy_last_accepting_state;
 
 yy_find_action:
 /* %% [10.0] code to find the action number goes here */
-        yy_act = yy_accept[yy_current_state];
+		yy_act = yy_accept[yy_current_state];
 
-        YY_DO_BEFORE_ACTION;
+		YY_DO_BEFORE_ACTION;
 
 /* %% [11.0] code for yylineno update goes here */
 
-        if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
-            {
-            int yyl;
-            for ( yyl = 0; yyl < yyleng; ++yyl )
-                if ( yytext[yyl] == '\n' )
-
+		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
+			{
+			int yyl;
+			for ( yyl = 0; yyl < yyleng; ++yyl )
+				if ( yytext[yyl] == '\n' )
+					   
     do{ yylineno++;
         yycolumn=0;
     }while(0)
 ;
-            }
+			}
 
-do_action:  /* This label is used only to access EOF actions. */
+do_action:	/* This label is used only to access EOF actions. */
 
 /* %% [12.0] debug code goes here */
-        if ( yy_flex_debug )
-            {
-            if ( yy_act == 0 )
-                fprintf( stderr, "--scanner backing up\n" );
-            else if ( yy_act < 209 )
-                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
-                         (long)yy_rule_linenum[yy_act], yytext );
-            else if ( yy_act == 209 )
-                fprintf( stderr, "--accepting default rule (\"%s\")\n",
-                         yytext );
-            else if ( yy_act == 210 )
-                fprintf( stderr, "--(end of buffer or a NUL)\n" );
-            else
-                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
-            }
+		if ( yy_flex_debug )
+			{
+			if ( yy_act == 0 )
+				fprintf( stderr, "--scanner backing up\n" );
+			else if ( yy_act < 209 )
+				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
+				         (long)yy_rule_linenum[yy_act], yytext );
+			else if ( yy_act == 209 )
+				fprintf( stderr, "--accepting default rule (\"%s\")\n",
+				         yytext );
+			else if ( yy_act == 210 )
+				fprintf( stderr, "--(end of buffer or a NUL)\n" );
+			else
+				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
+			}
 
-        switch ( yy_act )
-    { /* beginning of action switch */
+		switch ( yy_act )
+	{ /* beginning of action switch */
 /* %% [13.0] actions go here */
-            case 0: /* must back up */
-            /* undo the effects of YY_DO_BEFORE_ACTION */
-            *yy_cp = yyg->yy_hold_char;
-            yy_cp = yyg->yy_last_accepting_cpos;
-            yy_current_state = yyg->yy_last_accepting_state;
-            goto yy_find_action;
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = yyg->yy_hold_char;
+			yy_cp = yyg->yy_last_accepting_cpos;
+			yy_current_state = yyg->yy_last_accepting_state;
+			goto yy_find_action;
 
 case 1:
 /* rule 1 can match eol */
@@ -2010,18 +2000,18 @@
                         }
 
                       }
-    YY_BREAK
+	YY_BREAK
 case 2:
 YY_RULE_SETUP
 #line 248 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
 #line 250 "pir.l"
 { /* ignore line comments */ }
-    YY_BREAK
+	YY_BREAK
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
@@ -2047,414 +2037,414 @@
                     yylval->ival = num_newlines;
                     return TK_NL;
                   }
-    YY_BREAK
+	YY_BREAK
 case 5:
 YY_RULE_SETUP
 #line 274 "pir.l"
 { return TK_ASSIGN_USHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 6:
 YY_RULE_SETUP
 #line 275 "pir.l"
 { return TK_USHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 7:
 YY_RULE_SETUP
 #line 276 "pir.l"
 { return TK_ASSIGN_RSHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 8:
 YY_RULE_SETUP
 #line 277 "pir.l"
 { return TK_RSHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 9:
 YY_RULE_SETUP
 #line 278 "pir.l"
 { return TK_LSHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 10:
 YY_RULE_SETUP
 #line 279 "pir.l"
 { return TK_ARROW; }
-    YY_BREAK
+	YY_BREAK
 case 11:
 YY_RULE_SETUP
 #line 280 "pir.l"
 { return TK_EQ; }
-    YY_BREAK
+	YY_BREAK
 case 12:
 YY_RULE_SETUP
 #line 281 "pir.l"
 { return TK_NE; }
-    YY_BREAK
+	YY_BREAK
 case 13:
 YY_RULE_SETUP
 #line 282 "pir.l"
 { return TK_LE; }
-    YY_BREAK
+	YY_BREAK
 case 14:
 YY_RULE_SETUP
 #line 283 "pir.l"
 { return TK_GE; }
-    YY_BREAK
+	YY_BREAK
 case 15:
 YY_RULE_SETUP
 #line 284 "pir.l"
 { return TK_LT; }
-    YY_BREAK
+	YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 285 "pir.l"
 { return TK_GT; }
-    YY_BREAK
+	YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 287 "pir.l"
 { return TK_FDIV; }
-    YY_BREAK
+	YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 288 "pir.l"
 { return TK_AND; }
-    YY_BREAK
+	YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 289 "pir.l"
 { return TK_OR; }
-    YY_BREAK
+	YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 290 "pir.l"
 { return TK_XOR; }
-    YY_BREAK
+	YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 292 "pir.l"
 { return '+'; }
-    YY_BREAK
+	YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 293 "pir.l"
 { return '%'; }
-    YY_BREAK
+	YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 294 "pir.l"
 { return '*'; }
-    YY_BREAK
+	YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 295 "pir.l"
 { return '/'; }
-    YY_BREAK
+	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 296 "pir.l"
 { return '!'; }
-    YY_BREAK
+	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 297 "pir.l"
 { return '~'; }
-    YY_BREAK
+	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 298 "pir.l"
 { return '-'; }
-    YY_BREAK
+	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 299 "pir.l"
 { return '('; }
-    YY_BREAK
+	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 300 "pir.l"
 { return ')'; }
-    YY_BREAK
+	YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 301 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 302 "pir.l"
 { return '['; }
-    YY_BREAK
+	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 303 "pir.l"
 { return ']'; }
-    YY_BREAK
+	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 305 "pir.l"
 { /* if the dot is surrounded by whitespace, it's a concatenation operator */
                     return TK_CONC;
                   }
-    YY_BREAK
+	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 310 "pir.l"
 { return '='; }
-    YY_BREAK
+	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 311 "pir.l"
 { return ';'; }
-    YY_BREAK
+	YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 313 "pir.l"
 { return TK_ASSIGN_INC; }
-    YY_BREAK
+	YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 314 "pir.l"
 { return TK_ASSIGN_DEC; }
-    YY_BREAK
+	YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 315 "pir.l"
 { return TK_ASSIGN_DIV; }
-    YY_BREAK
+	YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 316 "pir.l"
 { return TK_ASSIGN_MUL; }
-    YY_BREAK
+	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 317 "pir.l"
 { return TK_ASSIGN_MOD; }
-    YY_BREAK
+	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 318 "pir.l"
 { return TK_ASSIGN_POW; }
-    YY_BREAK
+	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 319 "pir.l"
 { return TK_ASSIGN_BOR; }
-    YY_BREAK
+	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 320 "pir.l"
 { return TK_ASSIGN_BAND; }
-    YY_BREAK
+	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 321 "pir.l"
 { return TK_ASSIGN_FDIV; }
-    YY_BREAK
+	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 322 "pir.l"
 { return TK_ASSIGN_BNOT; }
-    YY_BREAK
+	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 323 "pir.l"
 { return TK_ASSIGN_CONC; }
-    YY_BREAK
+	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 325 "pir.l"
 { return TK_IF; }
-    YY_BREAK
+	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 326 "pir.l"
 { return TK_GOTO; }
-    YY_BREAK
+	YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 327 "pir.l"
 { return TK_UNLESS; }
-    YY_BREAK
+	YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 328 "pir.l"
 { return TK_NULL; }
-    YY_BREAK
+	YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 330 "pir.l"
 { return TK_INT; }
-    YY_BREAK
+	YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 331 "pir.l"
 { return TK_NUM; }
-    YY_BREAK
+	YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 332 "pir.l"
 { return TK_PMC; }
-    YY_BREAK
+	YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 333 "pir.l"
 { return TK_STRING; }
-    YY_BREAK
+	YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 335 "pir.l"
 { return TK_ANNOTATE; }
-    YY_BREAK
+	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 336 "pir.l"
 { return TK_SET_ARG; }
-    YY_BREAK
+	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 337 "pir.l"
 { return TK_CONST; }
-    YY_BREAK
+	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 338 "pir.l"
 { return TK_END; }
-    YY_BREAK
+	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 339 "pir.l"
 { return TK_FILE; }
-    YY_BREAK
+	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 341 "pir.l"
 { return TK_GET_RESULTS; }
-    YY_BREAK
+	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 342 "pir.l"
 { return TK_GLOBALCONST; }
-    YY_BREAK
+	YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 343 "pir.l"
 { return TK_HLL; }
-    YY_BREAK
+	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 344 "pir.l"
 { return TK_INVOCANT; }
-    YY_BREAK
+	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 345 "pir.l"
 { return TK_LEX; }
-    YY_BREAK
+	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 346 "pir.l"
 { return TK_LINE; }
-    YY_BREAK
+	YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 347 "pir.l"
 { return TK_LOADLIB; }
-    YY_BREAK
+	YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 348 "pir.l"
 { return TK_LOCAL; }
-    YY_BREAK
+	YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 350 "pir.l"
 { return TK_METH_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 351 "pir.l"
 { return TK_NAMESPACE; }
-    YY_BREAK
+	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 352 "pir.l"
 { return TK_NCI_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 353 "pir.l"
 { return TK_PARAM; }
-    YY_BREAK
+	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 354 "pir.l"
 { return TK_BEGIN_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 355 "pir.l"
 { return TK_BEGIN_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 356 "pir.l"
 { return TK_BEGIN_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 357 "pir.l"
 { return TK_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 358 "pir.l"
 { return TK_END_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 359 "pir.l"
 { return TK_END_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 360 "pir.l"
 { return TK_END_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 361 "pir.l"
 { return TK_GET_RESULT; }
-    YY_BREAK
+	YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 362 "pir.l"
 { return TK_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 363 "pir.l"
 { return TK_SUB; }
-    YY_BREAK
+	YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 364 "pir.l"
 { return TK_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 365 "pir.l"
 { return TK_SET_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 366 "pir.l"
 { return TK_SET_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 367 "pir.l"
 { return TK_TAILCALL; }
-    YY_BREAK
+	YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 370 "pir.l"
@@ -2462,124 +2452,124 @@
                     yypirerror(yyscanner, yypirget_extra(yyscanner),
                                "cannot use '%s' outside of macro definitions", yytext);
                   }
-    YY_BREAK
+	YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 377 "pir.l"
 { return TK_FLAG_ANON; }
-    YY_BREAK
+	YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 378 "pir.l"
 { return TK_FLAG_INIT; }
-    YY_BREAK
+	YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 379 "pir.l"
 { return TK_FLAG_LOAD; }
-    YY_BREAK
+	YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 380 "pir.l"
 { return TK_FLAG_POSTCOMP; }
-    YY_BREAK
+	YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 381 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
-    YY_BREAK
+	YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 382 "pir.l"
 { return TK_FLAG_MAIN; }
-    YY_BREAK
+	YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 383 "pir.l"
 { return TK_FLAG_METHOD; }
-    YY_BREAK
+	YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 384 "pir.l"
 { return TK_FLAG_LEX; }
-    YY_BREAK
+	YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 385 "pir.l"
 { return TK_FLAG_OUTER; }
-    YY_BREAK
+	YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 386 "pir.l"
 { return TK_FLAG_VTABLE; }
-    YY_BREAK
+	YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 387 "pir.l"
 { return TK_FLAG_MULTI; }
-    YY_BREAK
+	YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 388 "pir.l"
 { return TK_FLAG_SUBID; }
-    YY_BREAK
+	YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 389 "pir.l"
 { return TK_FLAG_INSTANCEOF; }
-    YY_BREAK
+	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 390 "pir.l"
 { return TK_FLAG_NSENTRY; }
-    YY_BREAK
+	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 392 "pir.l"
 { return TK_FLAG_UNIQUE_REG; }
-    YY_BREAK
+	YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 393 "pir.l"
 { return TK_FLAG_OPTIONAL; }
-    YY_BREAK
+	YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 394 "pir.l"
 { return TK_FLAG_OPT_FLAG; }
-    YY_BREAK
+	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 395 "pir.l"
 { return TK_FLAG_SLURPY; }
-    YY_BREAK
+	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 396 "pir.l"
 { return TK_FLAG_NAMED; }
-    YY_BREAK
+	YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 397 "pir.l"
 { return TK_FLAG_FLAT; }
-    YY_BREAK
+	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 398 "pir.l"
 { return TK_FLAG_INVOCANT; }
-    YY_BREAK
+	YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 399 "pir.l"
 { return TK_FLAG_LOOKAHEAD; }
-    YY_BREAK
+	YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 401 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                "unrecognized flag: '%s'", yytext);
                   }
-    YY_BREAK
+	YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 405 "pir.l"
@@ -2597,20 +2587,25 @@
                     char *str = Parrot_str_to_cstring(lexer->interp, pstr);
 
                     yylval->sval = str;
+                    
+                    /* store the STRING in lexer's sval buffer; once PIRC is doing
+                    only STRINGs, it can be stored in yylval.sval. */
+                    lexer->sval = pstr;
+                    
                     return TK_STRINGC;
                   }
-    YY_BREAK
+	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 422 "pir.l"
+#line 427 "pir.l"
 { /* copy the string, remove the quotes. */
                     yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext + 1, yyleng - 2);
                     return TK_STRINGC;
                   }
-    YY_BREAK
+	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 427 "pir.l"
+#line 432 "pir.l"
 { /* XXX these double-quoted strings are not unescaped (yet) */
                     /* parse yytext, which contains the charset, a ':', and the quoted string */
                     char        *colon = strchr(yytext, ':');
@@ -2639,10 +2634,10 @@
                     yylval->ustr = ustr;
                     return TK_USTRINGC;
                   }
-    YY_BREAK
+	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 456 "pir.l"
+#line 461 "pir.l"
 { /* XXX these double-quoted strings are not unescaped (yet) */
                     /* parse yytext, which contains the encoding, a ':', a charset,
                      * a ':', and the quoted string
@@ -2689,38 +2684,38 @@
                     return TK_USTRINGC;
 
                   }
-    YY_BREAK
+	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 504 "pir.l"
+#line 509 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_PREG; }
-    YY_BREAK
+	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 505 "pir.l"
+#line 510 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SREG; }
-    YY_BREAK
+	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 506 "pir.l"
+#line 511 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_NREG; }
-    YY_BREAK
+	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 507 "pir.l"
+#line 512 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_IREG; }
-    YY_BREAK
+	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 509 "pir.l"
+#line 514 "pir.l"
 { /* make the label Id available in the parser. remove the ":" first. */
                     yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
                     return TK_LABEL;
                   }
-    YY_BREAK
+	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 514 "pir.l"
+#line 519 "pir.l"
 { /* give a warning when using PASM registers as PIR identifiers */
                     lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -2732,10 +2727,10 @@
                     yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                     return TK_IDENT;
                   }
-    YY_BREAK
+	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 526 "pir.l"
+#line 531 "pir.l"
 { /* identifier; can be a global (sub or const), local or parrot op */
                     lexer_state * const lexer = yypirget_extra(yyscanner);
                     constdecl   * const c = find_global_constant(lexer, yytext);
@@ -2763,38 +2758,38 @@
                     yylval->sval = dupstr(lexer, yytext);
                     return TK_IDENT;
                   }
-    YY_BREAK
+	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 554 "pir.l"
+#line 559 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
+	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 555 "pir.l"
+#line 560 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 556 "pir.l"
+#line 561 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 557 "pir.l"
+#line 562 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 558 "pir.l"
+#line 563 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 126:
 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
 yyg->yy_c_buf_p = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 560 "pir.l"
+#line 565 "pir.l"
 { /* Make sure the dot is followed by a character that
                      * starts a method object. $ for registers,
                      * quotes for quoted strings, and letters for identifiers.
@@ -2802,17 +2797,17 @@
                      */
                      return '.';
                   }
-    YY_BREAK
+	YY_BREAK
 case 127:
 /* rule 127 can match eol */
 YY_RULE_SETUP
-#line 568 "pir.l"
+#line 573 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                     "no space allowed before a methodcall dot, "
                     "or space expected after the '.' operator");
                     return '.';
                   }
-    YY_BREAK
+	YY_BREAK
 
 
 /* SCANSTR<<EOF>> and SCANMACRO<<EOF>> must be defined before <INTIAL><<EOF>>,
@@ -2829,15 +2824,15 @@
 
 
 case YY_STATE_EOF(SCANSTR):
-#line 590 "pir.l"
+#line 595 "pir.l"
 { /* switch back from .macro_const buffer to file. */
                      lexer_state * const lexer = yypirget_extra(yyscanner);
                      yy_pop_state(yyscanner);
                      yypir_switch_to_buffer(lexer->buffer,yyscanner);
                    }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(SCANMACRO):
-#line 596 "pir.l"
+#line 601 "pir.l"
 { /* override the default <<EOF>> action; go back to normal state and
                       * switch back to the saved file.
                       */
@@ -2860,10 +2855,10 @@
                      delete_macro_table(table);
 
                    }
-    YY_BREAK
+	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 619 "pir.l"
+#line 624 "pir.l"
 { /* when scanning a macro body, the @ marker indicates the {IDENT} must
                           * be munged.
                           */
@@ -2872,21 +2867,21 @@
                             yylval->sval              = munge_id(id, lexer);
                             return TK_IDENT;
                        }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 628 "pir.l"
+#line 633 "pir.l"
 { /* end of file, stop scanning. */
                     yyterminate();
                   }
-    YY_BREAK
+	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 632 "pir.l"
+#line 637 "pir.l"
 { /* any character not covered in the rules above is an error. */
                     yypirerror(yyscanner, yypirget_extra(yyscanner),
                                "unexpected character: '%c'", yytext[0]);
                   }
-    YY_BREAK
+	YY_BREAK
 
 
 /*****************************************************************************
@@ -2902,50 +2897,50 @@
 
 case 130:
 YY_RULE_SETUP
-#line 654 "pir.l"
+#line 659 "pir.l"
 {
                                yy_push_state(MACROCONST, yyscanner);
                                return TK_MACRO_CONST;
                              }
-    YY_BREAK
+	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 659 "pir.l"
+#line 664 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
-    YY_BREAK
+	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 664 "pir.l"
+#line 669 "pir.l"
 {
                                /* only these tokens can be macro constant values */
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                yy_pop_state(yyscanner);
                                return TK_MACRO_CONST_VAL;
                              }
-    YY_BREAK
+	YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 671 "pir.l"
+#line 676 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 672 "pir.l"
+#line 677 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character: '%c'", yytext[0]);
                              }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(MACROCONST):
-#line 676 "pir.l"
+#line 681 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file during .macro_const definition");
                              }
-    YY_BREAK
+	YY_BREAK
 
 
 /**************** macro header (.macro <ident> <parameters> ) ***************/
@@ -2953,50 +2948,50 @@
 
 case 135:
 YY_RULE_SETUP
-#line 687 "pir.l"
+#line 692 "pir.l"
 { /* start a macro definition */
                                yy_push_state(MACROHEAD, yyscanner);
                                return TK_MACRO;
                              }
-    YY_BREAK
+	YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 692 "pir.l"
+#line 697 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 693 "pir.l"
+#line 698 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
-    YY_BREAK
+	YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 698 "pir.l"
+#line 703 "pir.l"
 { return '('; }
-    YY_BREAK
+	YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 699 "pir.l"
+#line 704 "pir.l"
 { return ')'; }
-    YY_BREAK
+	YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 700 "pir.l"
+#line 705 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 141:
 /* rule 141 can match eol */
 YY_RULE_SETUP
-#line 702 "pir.l"
+#line 707 "pir.l"
 { /* a set of continuous newlines yields a single newline token. */
                                yy_pop_state(yyscanner); /* remove MACROHEAD state */
                                yy_push_state(MACROBODY, yyscanner); /* enter MACROBODY state */
                                return TK_NL;
                              }
-    YY_BREAK
+	YY_BREAK
 
 
 /******************************* macro expansion ***************************/
@@ -3008,7 +3003,7 @@
 
 case 142:
 YY_RULE_SETUP
-#line 718 "pir.l"
+#line 723 "pir.l"
 { /* .foo; it can be a macro, macro_local, or just $P0.foo(),
                                 * but we need to check that.
                                 */
@@ -3062,10 +3057,10 @@
                                    }
                                }
                              }
-    YY_BREAK
+	YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 772 "pir.l"
+#line 777 "pir.l"
 { /* expand a .macro_const or parameter in argument list */
                                lexer_state * const lexer = yypirget_extra(yyscanner);
                                macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3093,85 +3088,85 @@
                                else
                                    yypirerror(yyscanner, lexer, "'%s' is not a macro", yytext + 1);
                              }
-    YY_BREAK
+	YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 800 "pir.l"
+#line 805 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_IDENT;
                              }
-    YY_BREAK
+	YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 805 "pir.l"
+#line 810 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
-    YY_BREAK
+	YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 810 "pir.l"
+#line 815 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 811 "pir.l"
+#line 816 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 812 "pir.l"
+#line 817 "pir.l"
 { return '('; }
-    YY_BREAK
+	YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 813 "pir.l"
+#line 818 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROEXPAND state */
                                return ')';
                              }
-    YY_BREAK
+	YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 818 "pir.l"
+#line 823 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(STRINGEXPAND):
-#line 823 "pir.l"
+#line 828 "pir.l"
 {
                                lexer_state * const lexer = yypirget_extra(yyscanner);
                                yy_pop_state(yyscanner);
                                yypir_switch_to_buffer(lexer->buffer,yyscanner);
                              }
-    YY_BREAK
+	YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 829 "pir.l"
+#line 834 "pir.l"
 { return '{'; }
-    YY_BREAK
+	YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 830 "pir.l"
+#line 835 "pir.l"
 { return '}'; }
-    YY_BREAK
+	YY_BREAK
 case 153:
 /* rule 153 can match eol */
 YY_RULE_SETUP
-#line 832 "pir.l"
+#line 837 "pir.l"
 { yylval->sval = "\n"; return TK_NL; }
-    YY_BREAK
+	YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 834 "pir.l"
+#line 839 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character in macro expansion: %c", yytext[0]);
                              }
-    YY_BREAK
+	YY_BREAK
 
 
 /******************************** .macro_local *****************************/
@@ -3179,7 +3174,7 @@
 
 case 155:
 YY_RULE_SETUP
-#line 845 "pir.l"
+#line 850 "pir.l"
 { /* give a warning if the right flag is set */
                               /*
                               lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -3192,38 +3187,38 @@
                               Doesn't make sense to use it.
                               */
                             }
-    YY_BREAK
+	YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 859 "pir.l"
+#line 864 "pir.l"
 {
                               yy_push_state(MACROLOCAL, yyscanner);
                               return TK_MACRO_LOCAL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 864 "pir.l"
+#line 869 "pir.l"
 { return TK_INT; }
-    YY_BREAK
+	YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 865 "pir.l"
+#line 870 "pir.l"
 { return TK_PMC; }
-    YY_BREAK
+	YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 866 "pir.l"
+#line 871 "pir.l"
 { return TK_NUM; }
-    YY_BREAK
+	YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 867 "pir.l"
+#line 872 "pir.l"
 { return TK_STRING; }
-    YY_BREAK
+	YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 869 "pir.l"
+#line 874 "pir.l"
 { /* normal .macro_local */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               /* reserve space for {IDENT}, the @ marker and the NULL char. */
@@ -3238,10 +3233,10 @@
                               declare_macro_local(CURRENT_MACRO(lexer), dupstr(lexer, yytext));
                               return TK_MACRO_LOCAL_ID;
                             }
-    YY_BREAK
+	YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 884 "pir.l"
+#line 889 "pir.l"
 { /* declare a .macro_local based on a parameter */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -3255,10 +3250,10 @@
                               return TK_MACRO_LOCAL_ID;
 
                             }
-    YY_BREAK
+	YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 898 "pir.l"
+#line 903 "pir.l"
 { /* .$foo */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               macro_table * const table = peek_macro_table(lexer);
@@ -3287,10 +3282,10 @@
                               }
 
                             }
-    YY_BREAK
+	YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 927 "pir.l"
+#line 932 "pir.l"
 { /* expanding a .macro_local using a macro parameter value */
                              lexer_state * const lexer     = yypirget_extra(yyscanner);
                              char  const * const paramname = dupstrn(lexer, yytext + 1, yyleng - 2);
@@ -3315,29 +3310,29 @@
 
                              return TK_IDENT;
                            }
-    YY_BREAK
+	YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 952 "pir.l"
+#line 957 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 166:
 /* rule 166 can match eol */
 YY_RULE_SETUP
-#line 954 "pir.l"
+#line 959 "pir.l"
 { /* newline after .macro_local <type> <ident> line */
                               yy_pop_state(yyscanner);
                               return TK_NL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 959 "pir.l"
+#line 964 "pir.l"
 { /* this state is only used for declaring .macro_locals */
                               yypirerror(yyscanner, yypirget_extra(yyscanner),
                                  "unknown character '%c' when declaring .macro_local", yytext[0]);
                             }
-    YY_BREAK
+	YY_BREAK
 
 
 /****************************** .macro_label ********************************/
@@ -3345,15 +3340,15 @@
 
 case 168:
 YY_RULE_SETUP
-#line 969 "pir.l"
+#line 974 "pir.l"
 {
                               yy_push_state(MACROLABEL, yyscanner);
                               return TK_MACRO_LABEL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 974 "pir.l"
+#line 979 "pir.l"
 { /* if the "$" is there, it's a macro label using a macro
                                * parameter's value; otherwise it's a normal macro label
                                */
@@ -3370,29 +3365,29 @@
                               declare_macro_local(CURRENT_MACRO(lexer), dupstr(lexer, yytext));
                               return TK_MACRO_LABEL_ID;
                             }
-    YY_BREAK
+	YY_BREAK
 case 170:
 /* rule 170 can match eol */
 YY_RULE_SETUP
-#line 992 "pir.l"
+#line 997 "pir.l"
 { /* the newline character after a ".macro_label $foo:" declaration */
                               yy_pop_state(yyscanner); /* leave MACROLABEL state */
                               return TK_NL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 998 "pir.l"
+#line 1003 "pir.l"
 { /* scan a label when expanding a buffer; declared as .macro_label */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               char const  * const label = dupstrn(lexer, yytext, yyleng - 2);
                               yylval->sval = munge_id(label, lexer);
                               return TK_LABEL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 1005 "pir.l"
+#line 1010 "pir.l"
 { /* scan a label when expanding macro; was a macro parameter */
                              lexer_state * const lexer     = yypirget_extra(yyscanner);
                              char const  * const paramname = dupstrn(lexer, yytext + 1, yyleng - 3);
@@ -3418,7 +3413,7 @@
                              }
                              return TK_LABEL;
                            }
-    YY_BREAK
+	YY_BREAK
 
 
 /*************************** macro body scanning (storing) ****************************/
@@ -3427,31 +3422,31 @@
 case 173:
 /* rule 173 can match eol */
 YY_RULE_SETUP
-#line 1038 "pir.l"
+#line 1043 "pir.l"
 { store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), '\n'); }
-    YY_BREAK
+	YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 1040 "pir.l"
+#line 1045 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROBODY state */
                                return TK_ENDM;
                              }
-    YY_BREAK
+	YY_BREAK
 case 175:
 YY_RULE_SETUP
-#line 1045 "pir.l"
+#line 1050 "pir.l"
 { /* store everything else */
                                store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), yytext[0]);
                              }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(MACROBODY):
-#line 1049 "pir.l"
+#line 1054 "pir.l"
 { /* catch run-away macro bodys */
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file while reading macro body");
                              }
-    YY_BREAK
+	YY_BREAK
  /*
 {WS}"."           {
                     yypirerror(yyscanner, yypirget_extra(yyscanner),
@@ -3478,93 +3473,93 @@
 
 case 176:
 YY_RULE_SETUP
-#line 1081 "pir.l"
+#line 1086 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 1082 "pir.l"
+#line 1087 "pir.l"
 { return '['; }
-    YY_BREAK
+	YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 1083 "pir.l"
+#line 1088 "pir.l"
 { return ']'; }
-    YY_BREAK
+	YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 1085 "pir.l"
+#line 1090 "pir.l"
 { return TK_FLAG_MAIN; }
-    YY_BREAK
+	YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 1086 "pir.l"
+#line 1091 "pir.l"
 { return TK_FLAG_LOAD; }
-    YY_BREAK
+	YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 1087 "pir.l"
+#line 1092 "pir.l"
 { return TK_FLAG_INIT; }
-    YY_BREAK
+	YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 1088 "pir.l"
+#line 1093 "pir.l"
 { return TK_FLAG_ANON; }
-    YY_BREAK
+	YY_BREAK
 case 183:
 YY_RULE_SETUP
-#line 1089 "pir.l"
+#line 1094 "pir.l"
 { return TK_FLAG_POSTCOMP; }
-    YY_BREAK
+	YY_BREAK
 case 184:
 YY_RULE_SETUP
-#line 1090 "pir.l"
+#line 1095 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
-    YY_BREAK
+	YY_BREAK
 case 185:
 YY_RULE_SETUP
-#line 1092 "pir.l"
+#line 1097 "pir.l"
 { return TK_PCC_SUB; }
-    YY_BREAK
+	YY_BREAK
 case 186:
 YY_RULE_SETUP
-#line 1093 "pir.l"
+#line 1098 "pir.l"
 { return TK_LEX; }
-    YY_BREAK
+	YY_BREAK
 case 187:
 YY_RULE_SETUP
-#line 1094 "pir.l"
+#line 1099 "pir.l"
 { return TK_NAMESPACE; }
-    YY_BREAK
+	YY_BREAK
 case 188:
 YY_RULE_SETUP
-#line 1096 "pir.l"
+#line 1101 "pir.l"
 {
                           yy_push_state(MACROHEAD, yyscanner);
                           return TK_MACRO;
                         }
-    YY_BREAK
+	YY_BREAK
 case 189:
 YY_RULE_SETUP
-#line 1101 "pir.l"
+#line 1106 "pir.l"
 {
                           yy_push_state(MACROCONST, yyscanner);
                           return TK_MACRO_CONST;
                         }
-    YY_BREAK
+	YY_BREAK
 case 190:
 YY_RULE_SETUP
-#line 1106 "pir.l"
+#line 1111 "pir.l"
 { return TK_LINE; }
-    YY_BREAK
+	YY_BREAK
 case 191:
 YY_RULE_SETUP
-#line 1107 "pir.l"
+#line 1112 "pir.l"
 { return TK_FILE; }
-    YY_BREAK
+	YY_BREAK
 case 192:
 YY_RULE_SETUP
-#line 1110 "pir.l"
+#line 1115 "pir.l"
 { /* macro expansion in PASM mode. */
                           lexer_state * const lexer = yypirget_extra(yyscanner);
                           macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3598,247 +3593,247 @@
                               }
                           }
                         }
-    YY_BREAK
+	YY_BREAK
 case 193:
 YY_RULE_SETUP
-#line 1144 "pir.l"
+#line 1149 "pir.l"
 { /* a label in PASM */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
                           return TK_LABEL;
                         }
-    YY_BREAK
+	YY_BREAK
 case 194:
 YY_RULE_SETUP
-#line 1149 "pir.l"
+#line 1154 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "symbolic registers are not allowed in PASM mode");
                         }
-    YY_BREAK
+	YY_BREAK
 case 195:
 YY_RULE_SETUP
-#line 1152 "pir.l"
+#line 1157 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_PREG; }
-    YY_BREAK
+	YY_BREAK
 case 196:
 YY_RULE_SETUP
-#line 1153 "pir.l"
+#line 1158 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_NREG; }
-    YY_BREAK
+	YY_BREAK
 case 197:
 YY_RULE_SETUP
-#line 1154 "pir.l"
+#line 1159 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_IREG; }
-    YY_BREAK
+	YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 1155 "pir.l"
+#line 1160 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_SREG; }
-    YY_BREAK
+	YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 1157 "pir.l"
+#line 1162 "pir.l"
 { /* can be a parrot op or a label; the check is done in the parser. */
                           yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                           return TK_IDENT;
                         }
-    YY_BREAK
+	YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 1162 "pir.l"
+#line 1167 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
+	YY_BREAK
 case 201:
 YY_RULE_SETUP
-#line 1163 "pir.l"
+#line 1168 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 202:
 YY_RULE_SETUP
-#line 1164 "pir.l"
+#line 1169 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 1165 "pir.l"
+#line 1170 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 204:
 YY_RULE_SETUP
-#line 1166 "pir.l"
+#line 1171 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 205:
 YY_RULE_SETUP
-#line 1168 "pir.l"
+#line 1173 "pir.l"
 { /* copy the string, remove the quotes. */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext + 1, yyleng - 2);
                           return TK_STRINGC;
                         }
-    YY_BREAK
+	YY_BREAK
 case 206:
 YY_RULE_SETUP
-#line 1173 "pir.l"
+#line 1178 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 207:
 /* rule 207 can match eol */
 YY_RULE_SETUP
-#line 1175 "pir.l"
+#line 1180 "pir.l"
 { return TK_NL; }
-    YY_BREAK
+	YY_BREAK
 case 208:
 YY_RULE_SETUP
-#line 1177 "pir.l"
+#line 1182 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "unrecognized character: %c", yytext[0]);
                         }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(PASM):
-#line 1180 "pir.l"
+#line 1185 "pir.l"
 { yyterminate(); }
-    YY_BREAK
+	YY_BREAK
 case 209:
 YY_RULE_SETUP
-#line 1182 "pir.l"
+#line 1187 "pir.l"
 ECHO;
-    YY_BREAK
-#line 3706 "pirlexer.c"
+	YY_BREAK
+#line 3701 "pirlexer.c"
 case YY_STATE_EOF(MACROHEAD):
 case YY_STATE_EOF(MACROLOCAL):
 case YY_STATE_EOF(MACROLABEL):
 case YY_STATE_EOF(MACROEXPAND):
 case YY_STATE_EOF(SPECIALSTART):
-    yyterminate();
+	yyterminate();
 
-    case YY_END_OF_BUFFER:
-        {
-        /* Amount of text matched not including the EOB char. */
-        int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
-
-        /* Undo the effects of YY_DO_BEFORE_ACTION. */
-        *yy_cp = yyg->yy_hold_char;
-        YY_RESTORE_YY_MORE_OFFSET
-
-        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-            {
-            /* We're scanning a new file or input source.  It's
-             * possible that this happened because the user
-             * just pointed yyin at a new source and called
-             * yypirlex().  If so, then we have to assure
-             * consistency between YY_CURRENT_BUFFER and our
-             * globals.  Here is the right place to do so, because
-             * this is the first action (other than possibly a
-             * back-up) that will match for the new input source.
-             */
-            yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-            YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
-            YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-            }
-
-        /* Note that here we test for yy_c_buf_p "<=" to the position
-         * of the first EOB in the buffer, since yy_c_buf_p will
-         * already have been incremented past the NUL character
-         * (since all states make transitions on EOB to the
-         * end-of-buffer state).  Contrast this with the test
-         * in input().
-         */
-        if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
-            { /* This was really a NUL. */
-            yy_state_type yy_next_state;
-
-            yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
-
-            yy_current_state = yy_get_previous_state( yyscanner );
-
-            /* Okay, we're now positioned to make the NUL
-             * transition.  We couldn't have
-             * yy_get_previous_state() go ahead and do it
-             * for us because it doesn't know how to deal
-             * with the possibility of jamming (and we don't
-             * want to build jamming into it because then it
-             * will run more slowly).
-             */
-
-            yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
-
-            yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-
-            if ( yy_next_state )
-                {
-                /* Consume the NUL. */
-                yy_cp = ++yyg->yy_c_buf_p;
-                yy_current_state = yy_next_state;
-                goto yy_match;
-                }
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = yyg->yy_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed yyin at a new source and called
+			 * yypirlex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state( yyscanner );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
+
+			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++yyg->yy_c_buf_p;
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
 
-            else
-                {
+			else
+				{
 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
-                yy_cp = yyg->yy_last_accepting_cpos;
-                yy_current_state = yyg->yy_last_accepting_state;
-                goto yy_find_action;
-                }
-            }
-
-        else switch ( yy_get_next_buffer( yyscanner ) )
-            {
-            case EOB_ACT_END_OF_FILE:
-                {
-                yyg->yy_did_buffer_switch_on_eof = 0;
-
-                if ( yypirwrap(yyscanner ) )
-                    {
-                    /* Note: because we've taken care in
-                     * yy_get_next_buffer() to have set up
-                     * yytext, we can now set up
-                     * yy_c_buf_p so that if some total
-                     * hoser (like flex itself) wants to
-                     * call the scanner after we return the
-                     * YY_NULL, it'll still work - another
-                     * YY_NULL will get returned.
-                     */
-                    yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
-
-                    yy_act = YY_STATE_EOF(YY_START);
-                    goto do_action;
-                    }
-
-                else
-                    {
-                    if ( ! yyg->yy_did_buffer_switch_on_eof )
-                        YY_NEW_FILE;
-                    }
-                break;
-                }
-
-            case EOB_ACT_CONTINUE_SCAN:
-                yyg->yy_c_buf_p =
-                    yyg->yytext_ptr + yy_amount_of_matched_text;
-
-                yy_current_state = yy_get_previous_state( yyscanner );
-
-                yy_cp = yyg->yy_c_buf_p;
-                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-                goto yy_match;
-
-            case EOB_ACT_LAST_MATCH:
-                yyg->yy_c_buf_p =
-                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
-
-                yy_current_state = yy_get_previous_state( yyscanner );
-
-                yy_cp = yyg->yy_c_buf_p;
-                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-                goto yy_find_action;
-            }
-        break;
-        }
-
-    default:
-        YY_FATAL_ERROR(
-            "fatal flex scanner internal error--no action found" );
-    } /* end of action switch */
-        } /* end of scanning one token */
+				yy_cp = yyg->yy_last_accepting_cpos;
+				yy_current_state = yyg->yy_last_accepting_state;
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer( yyscanner ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				yyg->yy_did_buffer_switch_on_eof = 0;
+
+				if ( yypirwrap(yyscanner ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * yytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! yyg->yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				yyg->yy_c_buf_p =
+					yyg->yytext_ptr + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state( yyscanner );
+
+				yy_cp = yyg->yy_c_buf_p;
+				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				yyg->yy_c_buf_p =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
+
+				yy_current_state = yy_get_previous_state( yyscanner );
+
+				yy_cp = yyg->yy_c_buf_p;
+				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
 } /* end of yypirlex */
 /* %ok-for-header */
 
@@ -3852,9 +3847,9 @@
 /* yy_get_next_buffer - try to read in a new buffer
  *
  * Returns a code representing an action:
- *  EOB_ACT_LAST_MATCH -
- *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *  EOB_ACT_END_OF_FILE - end of file
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
  */
 /* %if-c-only */
 static int yy_get_next_buffer (yyscan_t yyscanner)
@@ -3863,134 +3858,126 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-    register char *source = yyg->yytext_ptr;
-    register int number_to_move, i;
-    int ret_val;
-
-    if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
-        YY_FATAL_ERROR(
-        "fatal flex scanner internal error--end of buffer missed" );
-
-    if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-        { /* Don't try to fill the buffer, so this is an EOF. */
-        if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
-            {
-            /* We matched a single character, the EOB, so
-             * treat this as a final EOF.
-             */
-            return EOB_ACT_END_OF_FILE;
-            }
-
-        else
-            {
-            /* We matched some text prior to the EOB, first
-             * process it.
-             */
-            return EOB_ACT_LAST_MATCH;
-            }
-        }
-
-    /* Try to read more data. */
-
-    /* First move last chars to start of buffer. */
-    number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
-
-    for ( i = 0; i < number_to_move; ++i )
-        *(dest++) = *(source++);
-
-    if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-        /* don't do the read, it's not guaranteed to return an EOF,
-         * just force an EOF
-         */
-        YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
-
-    else
-        {
-            int num_to_read =
-            YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-        while ( num_to_read <= 0 )
-            { /* Not enough room in the buffer - grow it. */
-
-            /* just a shorter name for the current buffer */
-            YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
-            int yy_c_buf_p_offset =
-                (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
-
-            if ( b->yy_is_our_buffer )
-                {
-                int new_size = b->yy_buf_size * 2;
-
-                if ( new_size <= 0 )
-                    b->yy_buf_size += b->yy_buf_size / 8;
-                else
-                    b->yy_buf_size *= 2;
-
-                b->yy_ch_buf = (char *)
-                    /* Include room in for 2 EOB chars. */
-                    yypirrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
-                }
-            else
-                /* Can't grow it, we don't own it. */
-                b->yy_ch_buf = 0;
-
-            if ( ! b->yy_ch_buf )
-                YY_FATAL_ERROR(
-                "fatal error - scanner input buffer overflow" );
-
-            yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-            num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-                        number_to_move - 1;
-
-            }
-
-        if ( num_to_read > YY_READ_BUF_SIZE )
-            num_to_read = YY_READ_BUF_SIZE;
-
-        /* Read in more data. */
-        YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-            yyg->yy_n_chars, (size_t) num_to_read );
-
-        YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
-        }
-
-    if ( yyg->yy_n_chars == 0 )
-        {
-        if ( number_to_move == YY_MORE_ADJ )
-            {
-            ret_val = EOB_ACT_END_OF_FILE;
-            yypirrestart(yyin  ,yyscanner);
-            }
-
-        else
-            {
-            ret_val = EOB_ACT_LAST_MATCH;
-            YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-                YY_BUFFER_EOF_PENDING;
-            }
-        }
-
-    else
-        ret_val = EOB_ACT_CONTINUE_SCAN;
-
-    if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-        /* Extend the array by 50%, plus the number we really need. */
-        yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
-        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yypirrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
-        if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-            YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-    }
+	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = yyg->yytext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
+
+	else
+		{
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+			int yy_c_buf_p_offset =
+				(int) (yyg->yy_c_buf_p - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					yypirrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+						number_to_move - 1;
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			yyg->yy_n_chars, num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+		}
+
+	if ( yyg->yy_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			yypirrestart(yyin  ,yyscanner);
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	yyg->yy_n_chars += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
 
-    yyg->yy_n_chars += number_to_move;
-    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+	yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
 
-    yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-    return ret_val;
+	return ret_val;
 }
 
 /* yy_get_previous_state - get the state just before the EOB char was reached */
@@ -4003,38 +3990,38 @@
 /* %if-c++-only */
 /* %endif */
 {
-    register yy_state_type yy_current_state;
-    register char *yy_cp;
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 /* %% [15.0] code to get the start state into yy_current_state goes here */
-    yy_current_state = yyg->yy_start;
+	yy_current_state = yyg->yy_start;
 
-    for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
-        {
+	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+		{
 /* %% [16.0] code to find the next state goes here */
-        register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-        if ( yy_accept[yy_current_state] )
-            {
-            yyg->yy_last_accepting_state = yy_current_state;
-            yyg->yy_last_accepting_cpos = yy_cp;
-            }
-        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-            {
-            yy_current_state = (int) yy_def[yy_current_state];
-            if ( yy_current_state >= 825 )
-                yy_c = yy_meta[(unsigned int) yy_c];
-            }
-        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-        }
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			yyg->yy_last_accepting_state = yy_current_state;
+			yyg->yy_last_accepting_cpos = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 825 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
 
-    return yy_current_state;
+	return yy_current_state;
 }
 
 /* yy_try_NUL_trans - try to make a transition on the NUL character
  *
  * synopsis
- *  next_state = yy_try_NUL_trans( current_state );
+ *	next_state = yy_try_NUL_trans( current_state );
  */
 /* %if-c-only */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
@@ -4042,27 +4029,27 @@
 /* %if-c++-only */
 /* %endif */
 {
-    register int yy_is_jam;
+	register int yy_is_jam;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
-    register char *yy_cp = yyg->yy_c_buf_p;
+	register char *yy_cp = yyg->yy_c_buf_p;
 
-    register YY_CHAR yy_c = 1;
-    if ( yy_accept[yy_current_state] )
-        {
-        yyg->yy_last_accepting_state = yy_current_state;
-        yyg->yy_last_accepting_cpos = yy_cp;
-        }
-    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-        {
-        yy_current_state = (int) yy_def[yy_current_state];
-        if ( yy_current_state >= 825 )
-            yy_c = yy_meta[(unsigned int) yy_c];
-        }
-    yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-    yy_is_jam = (yy_current_state == 824);
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		yyg->yy_last_accepting_state = yy_current_state;
+		yyg->yy_last_accepting_cpos = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 825 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 824);
 
-    return yy_is_jam ? 0 : yy_current_state;
+	return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %if-c-only */
@@ -4081,81 +4068,81 @@
 /* %if-c++-only */
 /* %endif */
 {
-    int c;
+	int c;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-    *yyg->yy_c_buf_p = yyg->yy_hold_char;
+	*yyg->yy_c_buf_p = yyg->yy_hold_char;
 
-    if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-        {
-        /* yy_c_buf_p now points to the character we want to return.
-         * If this occurs *before* the EOB characters, then it's a
-         * valid NUL; if not, then we've hit the end of the buffer.
-         */
-        if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
-            /* This was really a NUL. */
-            *yyg->yy_c_buf_p = '\0';
-
-        else
-            { /* need more input */
-            int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
-            ++yyg->yy_c_buf_p;
-
-            switch ( yy_get_next_buffer( yyscanner ) )
-                {
-                case EOB_ACT_LAST_MATCH:
-                    /* This happens because yy_g_n_b()
-                     * sees that we've accumulated a
-                     * token and flags that we need to
-                     * try matching the token before
-                     * proceeding.  But for input(),
-                     * there's no matching to consider.
-                     * So convert the EOB_ACT_LAST_MATCH
-                     * to EOB_ACT_END_OF_FILE.
-                     */
+	if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+			/* This was really a NUL. */
+			*yyg->yy_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
+			++yyg->yy_c_buf_p;
+
+			switch ( yy_get_next_buffer( yyscanner ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					yypirrestart(yyin ,yyscanner);
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( yypirwrap(yyscanner ) )
+						return 0;
 
-                    /* Reset buffer status. */
-                    yypirrestart(yyin ,yyscanner);
-
-                    /*FALLTHROUGH*/
-
-                case EOB_ACT_END_OF_FILE:
-                    {
-                    if ( yypirwrap(yyscanner ) )
-                        return EOF;
-
-                    if ( ! yyg->yy_did_buffer_switch_on_eof )
-                        YY_NEW_FILE;
+					if ( ! yyg->yy_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
 #ifdef __cplusplus
-                    return yyinput(yyscanner);
+					return yyinput(yyscanner);
 #else
-                    return input(yyscanner);
+					return input(yyscanner);
 #endif
-                    }
+					}
 
-                case EOB_ACT_CONTINUE_SCAN:
-                    yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
-                    break;
-                }
-            }
-        }
-
-    c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
-    *yyg->yy_c_buf_p = '\0';    /* preserve yytext */
-    yyg->yy_hold_char = *++yyg->yy_c_buf_p;
+				case EOB_ACT_CONTINUE_SCAN:
+					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
+	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
+	yyg->yy_hold_char = *++yyg->yy_c_buf_p;
 
 /* %% [19.0] update BOL and yylineno */
-    if ( c == '\n' )
-
+	if ( c == '\n' )
+		   
     do{ yylineno++;
         yycolumn=0;
     }while(0)
 ;
 
-    return c;
+	return c;
 }
 /* %if-c-only */
-#endif  /* ifndef YY_NO_INPUT */
+#endif	/* ifndef YY_NO_INPUT */
 /* %endif */
 
 /** Immediately switch to a different input stream.
@@ -4171,14 +4158,14 @@
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-    if ( ! YY_CURRENT_BUFFER ){
+	if ( ! YY_CURRENT_BUFFER ){
         yypirensure_buffer_stack (yyscanner);
-        YY_CURRENT_BUFFER_LVALUE =
+		YY_CURRENT_BUFFER_LVALUE =
             yypir_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
-    }
+	}
 
-    yypir_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
-    yypir_load_buffer_state(yyscanner );
+	yypir_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
+	yypir_load_buffer_state(yyscanner );
 }
 
 /** Switch to a different input buffer.
@@ -4193,32 +4180,32 @@
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-    /* TODO. We should be able to replace this entire function body
-     * with
-     *      yypirpop_buffer_state();
-     *      yypirpush_buffer_state(new_buffer);
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		yypirpop_buffer_state();
+	 *		yypirpush_buffer_state(new_buffer);
      */
-    yypirensure_buffer_stack (yyscanner);
-    if ( YY_CURRENT_BUFFER == new_buffer )
-        return;
-
-    if ( YY_CURRENT_BUFFER )
-        {
-        /* Flush out information for old buffer. */
-        *yyg->yy_c_buf_p = yyg->yy_hold_char;
-        YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
-        YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
-        }
-
-    YY_CURRENT_BUFFER_LVALUE = new_buffer;
-    yypir_load_buffer_state(yyscanner );
-
-    /* We don't actually know whether we did this switch during
-     * EOF (yypirwrap()) processing, but the only time this flag
-     * is looked at is after yypirwrap() is called, so it's safe
-     * to go ahead and always set it.
-     */
-    yyg->yy_did_buffer_switch_on_eof = 1;
+	yypirensure_buffer_stack (yyscanner);
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*yyg->yy_c_buf_p = yyg->yy_hold_char;
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	yypir_load_buffer_state(yyscanner );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (yypirwrap()) processing, but the only time this flag
+	 * is looked at is after yypirwrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	yyg->yy_did_buffer_switch_on_eof = 1;
 }
 
 /* %if-c-only */
@@ -4228,10 +4215,10 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-    yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-    yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-    yyg->yy_hold_char = *yyg->yy_c_buf_p;
+	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	yyg->yy_hold_char = *yyg->yy_c_buf_p;
 }
 
 /** Allocate and initialize an input buffer state.
@@ -4246,26 +4233,26 @@
 /* %if-c++-only */
 /* %endif */
 {
-    YY_BUFFER_STATE b;
-
-    b = (YY_BUFFER_STATE) yypiralloc(sizeof( struct yy_buffer_state ) ,yyscanner );
-    if ( ! b )
-        YY_FATAL_ERROR( "out of dynamic memory in yypir_create_buffer()" );
-
-    b->yy_buf_size = size;
-
-    /* yy_ch_buf has to be 2 characters longer than the size given because
-     * we need to put in 2 end-of-buffer characters.
-     */
-    b->yy_ch_buf = (char *) yypiralloc(b->yy_buf_size + 2 ,yyscanner );
-    if ( ! b->yy_ch_buf )
-        YY_FATAL_ERROR( "out of dynamic memory in yypir_create_buffer()" );
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) yypiralloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yypir_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) yypiralloc(b->yy_buf_size + 2 ,yyscanner );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yypir_create_buffer()" );
 
-    b->yy_is_our_buffer = 1;
+	b->yy_is_our_buffer = 1;
 
-    yypir_init_buffer(b,file ,yyscanner);
+	yypir_init_buffer(b,file ,yyscanner);
 
-    return b;
+	return b;
 }
 
 /** Destroy the buffer.
@@ -4280,16 +4267,16 @@
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-    if ( ! b )
-        return;
+	if ( ! b )
+		return;
 
-    if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-        YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
-    if ( b->yy_is_our_buffer )
-        yypirfree((void *) b->yy_ch_buf ,yyscanner );
+	if ( b->yy_is_our_buffer )
+		yypirfree((void *) b->yy_ch_buf ,yyscanner );
 
-    yypirfree((void *) b ,yyscanner );
+	yypirfree((void *) b ,yyscanner );
 }
 
 /* %if-c-only */
@@ -4310,13 +4297,13 @@
 /* %endif */
 
 {
-    int oerrno = errno;
+	int oerrno = errno;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-    yypir_flush_buffer(b ,yyscanner);
+	yypir_flush_buffer(b ,yyscanner);
 
-    b->yy_input_file = file;
-    b->yy_fill_buffer = 1;
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
 
     /* If b is the current buffer, then yypir_init_buffer was _probably_
      * called from yypirrestart() or through yy_get_next_buffer.
@@ -4330,11 +4317,11 @@
 /* %if-c-only */
 
         b->yy_is_interactive = 0;
-
+    
 /* %endif */
 /* %if-c++-only */
 /* %endif */
-    errno = oerrno;
+	errno = oerrno;
 }
 
 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
@@ -4348,25 +4335,25 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    if ( ! b )
-        return;
+	if ( ! b )
+		return;
 
-    b->yy_n_chars = 0;
+	b->yy_n_chars = 0;
 
-    /* We always need two end-of-buffer characters.  The first causes
-     * a transition to the end-of-buffer state.  The second causes
-     * a jam in that state.
-     */
-    b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-    b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
 
-    b->yy_buf_pos = &b->yy_ch_buf[0];
+	b->yy_buf_pos = &b->yy_ch_buf[0];
 
-    b->yy_at_bol = 1;
-    b->yy_buffer_status = YY_BUFFER_NEW;
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
 
-    if ( b == YY_CURRENT_BUFFER )
-        yypir_load_buffer_state(yyscanner );
+	if ( b == YY_CURRENT_BUFFER )
+		yypir_load_buffer_state(yyscanner );
 }
 
 /* %if-c-or-c++ */
@@ -4383,28 +4370,28 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    if (new_buffer == NULL)
-        return;
+	if (new_buffer == NULL)
+		return;
 
-    yypirensure_buffer_stack(yyscanner);
+	yypirensure_buffer_stack(yyscanner);
 
-    /* This block is copied from yypir_switch_to_buffer. */
-    if ( YY_CURRENT_BUFFER )
-        {
-        /* Flush out information for old buffer. */
-        *yyg->yy_c_buf_p = yyg->yy_hold_char;
-        YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
-        YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
-        }
-
-    /* Only push if top exists. Otherwise, replace top. */
-    if (YY_CURRENT_BUFFER)
-        yyg->yy_buffer_stack_top++;
-    YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-    /* copied from yypir_switch_to_buffer. */
-    yypir_load_buffer_state(yyscanner );
-    yyg->yy_did_buffer_switch_on_eof = 1;
+	/* This block is copied from yypir_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*yyg->yy_c_buf_p = yyg->yy_hold_char;
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		yyg->yy_buffer_stack_top++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from yypir_switch_to_buffer. */
+	yypir_load_buffer_state(yyscanner );
+	yyg->yy_did_buffer_switch_on_eof = 1;
 }
 /* %endif */
 
@@ -4420,18 +4407,18 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    if (!YY_CURRENT_BUFFER)
-        return;
+	if (!YY_CURRENT_BUFFER)
+		return;
 
-    yypir_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
-    YY_CURRENT_BUFFER_LVALUE = NULL;
-    if (yyg->yy_buffer_stack_top > 0)
-        --yyg->yy_buffer_stack_top;
-
-    if (YY_CURRENT_BUFFER) {
-        yypir_load_buffer_state(yyscanner );
-        yyg->yy_did_buffer_switch_on_eof = 1;
-    }
+	yypir_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if (yyg->yy_buffer_stack_top > 0)
+		--yyg->yy_buffer_stack_top;
+
+	if (YY_CURRENT_BUFFER) {
+		yypir_load_buffer_state(yyscanner );
+		yyg->yy_did_buffer_switch_on_eof = 1;
+	}
 }
 /* %endif */
 
@@ -4445,46 +4432,42 @@
 /* %if-c++-only */
 /* %endif */
 {
-    int num_to_alloc;
+	int num_to_alloc;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-    if (!yyg->yy_buffer_stack) {
+	if (!yyg->yy_buffer_stack) {
 
-        /* First allocation is just for 2 elements, since we don't know if this
-         * scanner will even need a stack. We use 2 instead of 1 to avoid an
-         * immediate realloc on the next call.
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
          */
-        num_to_alloc = 1;
-        yyg->yy_buffer_stack = (struct yy_buffer_state**)yypiralloc
-                                (num_to_alloc * sizeof(struct yy_buffer_state*)
-                                , yyscanner);
-        if ( ! yyg->yy_buffer_stack )
-            YY_FATAL_ERROR( "out of dynamic memory in yypirensure_buffer_stack()" );
-
-        memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
-        yyg->yy_buffer_stack_max = num_to_alloc;
-        yyg->yy_buffer_stack_top = 0;
-        return;
-    }
-
-    if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
-
-        /* Increase the buffer to prepare for a possible push. */
-        int grow_size = 8 /* arbitrary grow size */;
-
-        num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
-        yyg->yy_buffer_stack = (struct yy_buffer_state**)yypirrealloc
-                                (yyg->yy_buffer_stack,
-                                num_to_alloc * sizeof(struct yy_buffer_state*)
-                                , yyscanner);
-        if ( ! yyg->yy_buffer_stack )
-            YY_FATAL_ERROR( "out of dynamic memory in yypirensure_buffer_stack()" );
-
-        /* zero only the new slots.*/
-        memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
-        yyg->yy_buffer_stack_max = num_to_alloc;
-    }
+		num_to_alloc = 1;
+		yyg->yy_buffer_stack = (struct yy_buffer_state**)yypiralloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								, yyscanner);
+		
+		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		yyg->yy_buffer_stack_max = num_to_alloc;
+		yyg->yy_buffer_stack_top = 0;
+		return;
+	}
+
+	if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
+		yyg->yy_buffer_stack = (struct yy_buffer_state**)yypirrealloc
+								(yyg->yy_buffer_stack,
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								, yyscanner);
+
+		/* zero only the new slots.*/
+		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
+		yyg->yy_buffer_stack_max = num_to_alloc;
+	}
 }
 /* %endif */
 
@@ -4493,42 +4476,42 @@
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
+ * @return the newly allocated buffer state object. 
  */
 YY_BUFFER_STATE yypir_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
 {
-    YY_BUFFER_STATE b;
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) yypiralloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in yypir_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
 
-    if ( size < 2 ||
-         base[size-2] != YY_END_OF_BUFFER_CHAR ||
-         base[size-1] != YY_END_OF_BUFFER_CHAR )
-        /* They forgot to leave room for the EOB's. */
-        return 0;
-
-    b = (YY_BUFFER_STATE) yypiralloc(sizeof( struct yy_buffer_state ) ,yyscanner );
-    if ( ! b )
-        YY_FATAL_ERROR( "out of dynamic memory in yypir_scan_buffer()" );
-
-    b->yy_buf_size = size - 2;  /* "- 2" to take care of EOB's */
-    b->yy_buf_pos = b->yy_ch_buf = base;
-    b->yy_is_our_buffer = 0;
-    b->yy_input_file = 0;
-    b->yy_n_chars = b->yy_buf_size;
-    b->yy_is_interactive = 0;
-    b->yy_at_bol = 1;
-    b->yy_fill_buffer = 0;
-    b->yy_buffer_status = YY_BUFFER_NEW;
+	yypir_switch_to_buffer(b ,yyscanner );
 
-    yypir_switch_to_buffer(b ,yyscanner );
-
-    return b;
+	return b;
 }
 /* %endif */
 
 /* %if-c-only */
 /** Setup the input buffer state to scan a string. The next call to yypirlex() will
  * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
+ * @param str a NUL-terminated string to scan
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
@@ -4536,8 +4519,8 @@
  */
 YY_BUFFER_STATE yypir_scan_string (yyconst char * yystr , yyscan_t yyscanner)
 {
-
-    return yypir_scan_bytes(yystr,strlen(yystr) ,yyscanner);
+    
+	return yypir_scan_bytes(yystr,strlen(yystr) ,yyscanner);
 }
 /* %endif */
 
@@ -4551,32 +4534,32 @@
  */
 YY_BUFFER_STATE yypir_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
 {
-    YY_BUFFER_STATE b;
-    char *buf;
-    yy_size_t n;
-    int i;
-
-    /* Get memory for full buffer, including space for trailing EOB's. */
-    n = _yybytes_len + 2;
-    buf = (char *) yypiralloc(n ,yyscanner );
-    if ( ! buf )
-        YY_FATAL_ERROR( "out of dynamic memory in yypir_scan_bytes()" );
-
-    for ( i = 0; i < _yybytes_len; ++i )
-        buf[i] = yybytes[i];
-
-    buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-    b = yypir_scan_buffer(buf,n ,yyscanner);
-    if ( ! b )
-        YY_FATAL_ERROR( "bad buffer in yypir_scan_bytes()" );
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) yypiralloc(n ,yyscanner );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in yypir_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = yypir_scan_buffer(buf,n ,yyscanner);
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in yypir_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
 
-    /* It's okay to grow etc. this buffer, and we should throw it
-     * away when we're done.
-     */
-    b->yy_is_our_buffer = 1;
-
-    return b;
+	return b;
 }
 /* %endif */
 
@@ -4587,26 +4570,27 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
-        {
-        yy_size_t new_size;
+	if ( yyg->yy_start_stack_ptr >= yyg->yy_start_stack_depth )
+		{
+		yy_size_t new_size;
 
-        yyg->yy_start_stack_depth += YY_START_STACK_INCR;
-        new_size = yyg->yy_start_stack_depth * sizeof( int );
+		yyg->yy_start_stack_depth += YY_START_STACK_INCR;
+		new_size = yyg->yy_start_stack_depth * sizeof( int );
 
-        if ( ! yyg->yy_start_stack )
-            yyg->yy_start_stack = (int *) yypiralloc(new_size ,yyscanner );
+		if ( ! yyg->yy_start_stack )
+			yyg->yy_start_stack = (int *) yypiralloc(new_size ,yyscanner );
 
-        else
-            yyg->yy_start_stack = (int *) yypirrealloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
+		else
+			yyg->yy_start_stack = (int *) yypirrealloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
 
-        if ( ! yyg->yy_start_stack )
-            YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
-        }
+		if ( ! yyg->yy_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
 
-    yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
+	yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
 
-    BEGIN(new_state);
+	BEGIN(new_state);
 }
 
 /* %if-c-only */
@@ -4616,10 +4600,10 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    if ( --yyg->yy_start_stack_ptr < 0 )
-        YY_FATAL_ERROR( "start-condition stack underflow" );
+	if ( --yyg->yy_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
 
-    BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
+	BEGIN(yyg->yy_start_stack[yyg->yy_start_stack_ptr]);
 }
 
 /* %if-c-only */
@@ -4629,7 +4613,7 @@
 /* %endif */
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-    return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
+	return yyg->yy_start_stack[yyg->yy_start_stack_ptr - 1];
 }
 
 #ifndef YY_EXIT_FAILURE
@@ -4639,8 +4623,8 @@
 /* %if-c-only */
 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
 {
-        (void) fprintf( stderr, "%s\n", msg );
-    exit( YY_EXIT_FAILURE );
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
 }
 /* %endif */
 /* %if-c++-only */
@@ -4650,18 +4634,18 @@
 
 #undef yyless
 #define yyless(n) \
-    do \
-        { \
-        /* Undo effects of setting up yytext. */ \
+	do \
+		{ \
+		/* Undo effects of setting up yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
-        yytext[yyleng] = yyg->yy_hold_char; \
-        yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
-        yyg->yy_hold_char = *yyg->yy_c_buf_p; \
-        *yyg->yy_c_buf_p = '\0'; \
-        yyleng = yyless_macro_arg; \
-        } \
-    while ( 0 )
+		yytext[yyleng] = yyg->yy_hold_char; \
+		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
+		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
+		*yyg->yy_c_buf_p = '\0'; \
+		yyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
 
 /* Accessor  methods (get/set functions) to struct members. */
 
@@ -4685,10 +4669,10 @@
 int yypirget_lineno  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yylineno;
 }
 
@@ -4698,10 +4682,10 @@
 int yypirget_column  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yycolumn;
 }
 
@@ -4766,8 +4750,8 @@
 
         /* lineno is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "yypirset_lineno called with no buffer" , yyscanner);
-
+           yy_fatal_error( "yypirset_lineno called with no buffer" , yyscanner); 
+    
     yylineno = line_number;
 }
 
@@ -4781,8 +4765,8 @@
 
         /* column is only valid if an input buffer exists. */
         if (! YY_CURRENT_BUFFER )
-           yy_fatal_error( "yypirset_column called with no buffer" , yyscanner);
-
+           yy_fatal_error( "yypirset_column called with no buffer" , yyscanner); 
+    
     yycolumn = column_no;
 }
 
@@ -4865,43 +4849,7 @@
     return yy_init_globals ( *ptr_yy_globals );
 }
 
-/* yypirlex_init_extra has the same functionality as yypirlex_init, but follows the
- * convention of taking the scanner as the last argument. Note however, that
- * this is a *pointer* to a scanner, as it will be allocated by this call (and
- * is the reason, too, why this function also must handle its own declaration).
- * The user defined value in the first argument will be available to yypiralloc in
- * the yyextra field.
- */
-
-int yypirlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
-
-{
-    struct yyguts_t dummy_yyguts;
-
-    yypirset_extra (yy_user_defined, &dummy_yyguts);
-
-    if (ptr_yy_globals == NULL){
-        errno = EINVAL;
-        return 1;
-    }
-
-    *ptr_yy_globals = (yyscan_t) yypiralloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
-
-    if (*ptr_yy_globals == NULL){
-        errno = ENOMEM;
-        return 1;
-    }
-
-    /* By setting to 0xAA, we expose bugs in
-    yy_init_globals. Leave at 0x00 for releases. */
-    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
-    yypirset_extra (yy_user_defined, *ptr_yy_globals);
-
-    return yy_init_globals ( *ptr_yy_globals );
-}
-
-/* %endif if-c-only */
+/* %endif */
 
 /* %if-c-only */
 static int yy_init_globals (yyscan_t yyscanner)
@@ -4945,15 +4893,15 @@
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
     /* Pop the buffer stack, destroying each element. */
-    while(YY_CURRENT_BUFFER){
-        yypir_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
-        YY_CURRENT_BUFFER_LVALUE = NULL;
-        yypirpop_buffer_state(yyscanner);
-    }
-
-    /* Destroy the stack itself. */
-    yypirfree(yyg->yy_buffer_stack ,yyscanner);
-    yyg->yy_buffer_stack = NULL;
+	while(YY_CURRENT_BUFFER){
+		yypir_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		yypirpop_buffer_state(yyscanner);
+	}
+
+	/* Destroy the stack itself. */
+	yypirfree(yyg->yy_buffer_stack ,yyscanner);
+	yyg->yy_buffer_stack = NULL;
 
     /* Destroy the start condition stack. */
         yypirfree(yyg->yy_start_stack ,yyscanner );
@@ -4979,20 +4927,20 @@
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
 {
-    register int i;
-    for ( i = 0; i < n; ++i )
-        s1[i] = s2[i];
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
 }
 #endif
 
 #ifdef YY_NEED_STRLEN
 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
 {
-    register int n;
-    for ( n = 0; s[n]; ++n )
-        ;
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
 
-    return n;
+	return n;
 }
 #endif
 
@@ -5003,7 +4951,7 @@
 
 /* %ok-for-header */
 
-#line 1182 "pir.l"
+#line 1187 "pir.l"
 
 
 


More information about the parrot-commits mailing list