develooper Front page | perl.cvs.parrot | Postings from December 2008

[svn:parrot] r33428 - trunk/compilers/pirc/new

From:
infinoid
Date:
December 1, 2008 11:05
Subject:
[svn:parrot] r33428 - trunk/compilers/pirc/new
Message ID:
20081201190438.6DFF4CB9AF@x12.develooper.com
Author: infinoid
Date: Mon Dec  1 11:04:37 2008
New Revision: 33428

Modified:
   trunk/compilers/pirc/new/pir.l
   trunk/compilers/pirc/new/pirlexer.c
   trunk/compilers/pirc/new/pirlexer.h

Log:
[PIRC] Force yy_size_t to be the same type as size_t.
This fixes builds for me on linux/x86-64.

Modified: trunk/compilers/pirc/new/pir.l
==============================================================================
--- trunk/compilers/pirc/new/pir.l	(original)
+++ trunk/compilers/pirc/new/pir.l	Mon Dec  1 11:04:37 2008
@@ -30,6 +30,9 @@
 #  define YY_ALWAYS_INTERACTIVE 0
 #endif
 
+#include <stdlib.h> /* for size_t */
+typedef size_t yy_size_t;
+#define YY_TYPEDEF_YY_SIZE_T
 
 }
 
@@ -1288,7 +1291,7 @@
 /*
 
 =item C<void *
-yyalloc(size_t bytes, yyscan_t yyscanner)>
+yyalloc(yy_size_t bytes, yyscan_t yyscanner)>
 
 Allocate C<bytes> of memory; the C<yyscanner> argument is not used.
 
@@ -1297,14 +1300,14 @@
 */
 PARROT_MALLOC
 void *
-yyalloc(size_t bytes, yyscan_t yyscanner) {
+yyalloc(yy_size_t bytes, yyscan_t yyscanner) {
     return mem_sys_allocate(bytes);
 }
 
 /*
 
 =item C<void *
-yyrealloc(void * ptr, size_t bytes, yyscan_t yyscanner)>
+yyrealloc(void * ptr, yy_size_t bytes, yyscan_t yyscanner)>
 
 Reallocate memory pointed to by C<ptr>. The new memory region is C<bytes> in size;
 the C<yyscanner> argument is not used.
@@ -1313,7 +1316,7 @@
 
 */
 void *
-yyrealloc(void * ptr, size_t bytes, yyscan_t yyscanner) {
+yyrealloc(void * ptr, yy_size_t bytes, yyscan_t yyscanner) {
     return mem_sys_realloc(ptr, bytes);
 }
 

Modified: trunk/compilers/pirc/new/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.c	(original)
+++ trunk/compilers/pirc/new/pirlexer.c	Mon Dec  1 11:04:37 2008
@@ -31,20 +31,31 @@
 #  define YY_ALWAYS_INTERACTIVE 0
 #endif
 
+#include <stdlib.h> /* for size_t */
+typedef size_t yy_size_t;
+#define YY_TYPEDEF_YY_SIZE_T
 
 
 
 
-#line 39 "pirlexer.c"
+#line 42 "pirlexer.c"
 
 #define  YY_INT_ALIGNED short int
 
 /* 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 33
+#define YY_FLEX_SUBMINOR_VERSION 35
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -53,7 +64,7 @@
 /* %endif */
 
 /* %if-c-only */
-
+    
 /* %endif */
 
 /* %if-c-only */
@@ -82,10 +93,10 @@
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if __STDC_VERSION__ >= 199901L
+#if defined (__STDC_VERSION__) && __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
@@ -102,7 +113,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 */
@@ -148,14 +159,15 @@
 /* The "const" storage-class-modifier is valid. */
 #define YY_USE_CONST
 
-#else   /* ! __cplusplus */
+#else	/* ! __cplusplus */
 
-#if __STDC__
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
 
 #define YY_USE_CONST
 
-#endif  /* __STDC__ */
-#endif  /* ! __cplusplus */
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
 
 #ifdef YY_USE_CONST
 #define yyconst const
@@ -198,7 +210,6 @@
 #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 */
@@ -253,7 +264,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.
@@ -265,101 +276,96 @@
                     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 unsigned int yy_size_t;
+typedef size_t 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 */
@@ -422,24 +428,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)
 
@@ -470,13 +476,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 204
@@ -484,10 +490,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[803] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -1308,43 +1314,43 @@
 /* Table of booleans, true if rule could match eol. */
 static yyconst flex_int32_t yy_rule_can_match_eol[205] =
     {   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, 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,
+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, 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[204] =
     {   0,
-      215,  237,  239,  241,  246,  247,  248,  249,  250,  251,
-      252,  253,  254,  255,  256,  257,  259,  260,  261,  262,
-      264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
-      274,  275,  277,  282,  283,  285,  286,  287,  288,  289,
-      290,  291,  292,  293,  294,  295,  297,  298,  299,  300,
-      302,  303,  304,  305,  307,  308,  309,  310,  311,  313,
-      314,  315,  316,  317,  318,  319,  320,  321,  323,  324,
-      325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
-      335,  336,  337,  338,  339,  340,  343,  350,  351,  352,
-      353,  354,  355,  356,  357,  358,  359,  360,  361,  362,
-
-      363,  365,  366,  367,  368,  369,  370,  371,  374,  379,
-      380,  381,  382,  384,  389,  401,  406,  407,  408,  409,
-      410,  412,  464,  477,  499,  504,  509,  516,  517,  532,
-      537,  538,  543,  544,  545,  547,  563,  617,  645,  650,
-      655,  656,  657,  658,  663,  674,  675,  677,  679,  690,
-      704,  709,  710,  711,  712,  714,  729,  743,  772,  797,
-      799,  804,  814,  819,  837,  843,  850,  883,  885,  890,
-      926,  927,  928,  930,  931,  932,  933,  934,  935,  937,
-      938,  939,  941,  946,  951,  952,  955,  989,  994,  997,
-      998,  999, 1000, 1002, 1007, 1008, 1009, 1010, 1011, 1013,
+      218,  240,  242,  244,  249,  250,  251,  252,  253,  254,
+      255,  256,  257,  258,  259,  260,  262,  263,  264,  265,
+      267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
+      277,  278,  280,  285,  286,  288,  289,  290,  291,  292,
+      293,  294,  295,  296,  297,  298,  300,  301,  302,  303,
+      305,  306,  307,  308,  310,  311,  312,  313,  314,  316,
+      317,  318,  319,  320,  321,  322,  323,  324,  326,  327,
+      328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
+      338,  339,  340,  341,  342,  343,  346,  353,  354,  355,
+      356,  357,  358,  359,  360,  361,  362,  363,  364,  365,
+
+      366,  368,  369,  370,  371,  372,  373,  374,  377,  382,
+      383,  384,  385,  387,  392,  404,  409,  410,  411,  412,
+      413,  415,  467,  480,  502,  507,  512,  519,  520,  535,
+      540,  541,  546,  547,  548,  550,  566,  620,  648,  653,
+      658,  659,  660,  661,  666,  677,  678,  680,  682,  693,
+      707,  712,  713,  714,  715,  717,  732,  746,  775,  800,
+      802,  807,  817,  822,  840,  846,  853,  886,  888,  893,
+      929,  930,  931,  933,  934,  935,  936,  937,  938,  940,
+      941,  942,  944,  949,  954,  955,  958,  992,  997, 1000,
+     1001, 1002, 1003, 1005, 1010, 1011, 1012, 1013, 1014, 1016,
 
-     1018, 1020, 1022
+     1021, 1023, 1025
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1356,7 +1362,7 @@
 #define YY_RESTORE_YY_MORE_OFFSET
 #line 1 "pir.l"
 
-#line 37 "pir.l"
+#line 40 "pir.l"
 
 /*
  * $Id$
@@ -1462,7 +1468,7 @@
 
 /* The PASM state is an exclusive state, recognizing ONLY PASM tokens. */
 
-#line 1466 "pirlexer.c"
+#line 1472 "pirlexer.c"
 
 #define INITIAL 0
 #define MACROHEAD 1
@@ -1543,9 +1549,15 @@
     /* 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. */
 
@@ -1582,7 +1594,6 @@
 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.
@@ -1627,11 +1638,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. */
@@ -1645,7 +1656,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -1657,33 +1668,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 = '*'; \
-        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 ( 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-c++-only C++ definition \ */\
 /* %endif */
@@ -1732,9 +1743,11 @@
 #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 */
@@ -1754,7 +1767,7 @@
 
 /* %% [6.0] YY_RULE_SETUP definition goes here */
 #define YY_RULE_SETUP \
-    YY_USER_ACTION
+	YY_USER_ACTION
 
 /* %not-for-header */
 
@@ -1762,144 +1775,144 @@
  */
 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 */
-#line 212 "pir.l"
+#line 215 "pir.l"
 
 
 
-#line 1776 "pirlexer.c"
+#line 1789 "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 >= 803 )
-                    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 != 802 );
-        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 >= 803 )
+					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 != 802 );
+		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 < 204 )
-                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
-                         (long)yy_rule_linenum[yy_act], yytext );
-            else if ( yy_act == 204 )
-                fprintf( stderr, "--accepting default rule (\"%s\")\n",
-                         yytext );
-            else if ( yy_act == 205 )
-                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 < 204 )
+				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
+				         (long)yy_rule_linenum[yy_act], yytext );
+			else if ( yy_act == 204 )
+				fprintf( stderr, "--accepting default rule (\"%s\")\n",
+				         yytext );
+			else if ( yy_act == 205 )
+				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 */
 YY_RULE_SETUP
-#line 215 "pir.l"
+#line 218 "pir.l"
 { /* only when the scanning starts, is this state used. Only a single
                          * character is read, pushed back, and then, depending on the
                          * lexer flags, either PASM or PIR mode (INITIAL state) is activated.
@@ -1921,591 +1934,591 @@
                         }
 
                       }
-    YY_BREAK
+	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 237 "pir.l"
+#line 240 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
-#line 239 "pir.l"
+#line 242 "pir.l"
 { /* ignore line comments */ }
-    YY_BREAK
+	YY_BREAK
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 241 "pir.l"
+#line 244 "pir.l"
 { /* a set of continuous newlines yields a single newline token. */
                     yylval->sval = "\n";
                     return TK_NL;
                   }
-    YY_BREAK
+	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 246 "pir.l"
+#line 249 "pir.l"
 { return TK_ASSIGN_USHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 247 "pir.l"
+#line 250 "pir.l"
 { return TK_USHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 248 "pir.l"
+#line 251 "pir.l"
 { return TK_ASSIGN_RSHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 249 "pir.l"
+#line 252 "pir.l"
 { return TK_RSHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 250 "pir.l"
+#line 253 "pir.l"
 { return TK_LSHIFT; }
-    YY_BREAK
+	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 251 "pir.l"
+#line 254 "pir.l"
 { return TK_ARROW; }
-    YY_BREAK
+	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 252 "pir.l"
+#line 255 "pir.l"
 { return TK_EQ; }
-    YY_BREAK
+	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 253 "pir.l"
+#line 256 "pir.l"
 { return TK_NE; }
-    YY_BREAK
+	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 254 "pir.l"
+#line 257 "pir.l"
 { return TK_LE; }
-    YY_BREAK
+	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 255 "pir.l"
+#line 258 "pir.l"
 { return TK_GE; }
-    YY_BREAK
+	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 256 "pir.l"
+#line 259 "pir.l"
 { return TK_LT; }
-    YY_BREAK
+	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 257 "pir.l"
+#line 260 "pir.l"
 { return TK_GT; }
-    YY_BREAK
+	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 259 "pir.l"
+#line 262 "pir.l"
 { return TK_FDIV; }
-    YY_BREAK
+	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 260 "pir.l"
+#line 263 "pir.l"
 { return TK_AND; }
-    YY_BREAK
+	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 261 "pir.l"
+#line 264 "pir.l"
 { return TK_OR; }
-    YY_BREAK
+	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 262 "pir.l"
+#line 265 "pir.l"
 { return TK_XOR; }
-    YY_BREAK
+	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 264 "pir.l"
+#line 267 "pir.l"
 { return '+'; }
-    YY_BREAK
+	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 265 "pir.l"
+#line 268 "pir.l"
 { return '%'; }
-    YY_BREAK
+	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 266 "pir.l"
+#line 269 "pir.l"
 { return '*'; }
-    YY_BREAK
+	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 267 "pir.l"
+#line 270 "pir.l"
 { return '/'; }
-    YY_BREAK
+	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 268 "pir.l"
+#line 271 "pir.l"
 { return '!'; }
-    YY_BREAK
+	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 269 "pir.l"
+#line 272 "pir.l"
 { return '~'; }
-    YY_BREAK
+	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 270 "pir.l"
+#line 273 "pir.l"
 { return '-'; }
-    YY_BREAK
+	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 271 "pir.l"
+#line 274 "pir.l"
 { return '('; }
-    YY_BREAK
+	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 272 "pir.l"
+#line 275 "pir.l"
 { return ')'; }
-    YY_BREAK
+	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 273 "pir.l"
+#line 276 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 274 "pir.l"
+#line 277 "pir.l"
 { return '['; }
-    YY_BREAK
+	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 275 "pir.l"
+#line 278 "pir.l"
 { return ']'; }
-    YY_BREAK
+	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 277 "pir.l"
+#line 280 "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 282 "pir.l"
+#line 285 "pir.l"
 { return '='; }
-    YY_BREAK
+	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 283 "pir.l"
+#line 286 "pir.l"
 { return ';'; }
-    YY_BREAK
+	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 285 "pir.l"
+#line 288 "pir.l"
 { return TK_ASSIGN_INC; }
-    YY_BREAK
+	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 286 "pir.l"
+#line 289 "pir.l"
 { return TK_ASSIGN_DEC; }
-    YY_BREAK
+	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 287 "pir.l"
+#line 290 "pir.l"
 { return TK_ASSIGN_DIV; }
-    YY_BREAK
+	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 288 "pir.l"
+#line 291 "pir.l"
 { return TK_ASSIGN_MUL; }
-    YY_BREAK
+	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 289 "pir.l"
+#line 292 "pir.l"
 { return TK_ASSIGN_MOD; }
-    YY_BREAK
+	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 290 "pir.l"
+#line 293 "pir.l"
 { return TK_ASSIGN_POW; }
-    YY_BREAK
+	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 291 "pir.l"
+#line 294 "pir.l"
 { return TK_ASSIGN_BOR; }
-    YY_BREAK
+	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 292 "pir.l"
+#line 295 "pir.l"
 { return TK_ASSIGN_BAND; }
-    YY_BREAK
+	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 293 "pir.l"
+#line 296 "pir.l"
 { return TK_ASSIGN_FDIV; }
-    YY_BREAK
+	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 294 "pir.l"
+#line 297 "pir.l"
 { return TK_ASSIGN_BNOT; }
-    YY_BREAK
+	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 295 "pir.l"
+#line 298 "pir.l"
 { return TK_ASSIGN_CONC; }
-    YY_BREAK
+	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 297 "pir.l"
+#line 300 "pir.l"
 { return TK_IF; }
-    YY_BREAK
+	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 298 "pir.l"
+#line 301 "pir.l"
 { return TK_GOTO; }
-    YY_BREAK
+	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 299 "pir.l"
+#line 302 "pir.l"
 { return TK_UNLESS; }
-    YY_BREAK
+	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 300 "pir.l"
+#line 303 "pir.l"
 { return TK_NULL; }
-    YY_BREAK
+	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 302 "pir.l"
+#line 305 "pir.l"
 { return TK_INT; }
-    YY_BREAK
+	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 303 "pir.l"
+#line 306 "pir.l"
 { return TK_NUM; }
-    YY_BREAK
+	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 304 "pir.l"
+#line 307 "pir.l"
 { return TK_PMC; }
-    YY_BREAK
+	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 305 "pir.l"
+#line 308 "pir.l"
 { return TK_STRING; }
-    YY_BREAK
+	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 307 "pir.l"
+#line 310 "pir.l"
 { return TK_ANNOTATE; }
-    YY_BREAK
+	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 308 "pir.l"
+#line 311 "pir.l"
 { return TK_SET_ARG; }
-    YY_BREAK
+	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 309 "pir.l"
+#line 312 "pir.l"
 { return TK_CONST; }
-    YY_BREAK
+	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 310 "pir.l"
+#line 313 "pir.l"
 { return TK_END; }
-    YY_BREAK
+	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 311 "pir.l"
+#line 314 "pir.l"
 { return TK_FILE; }
-    YY_BREAK
+	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 313 "pir.l"
+#line 316 "pir.l"
 { return TK_GET_RESULTS; }
-    YY_BREAK
+	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 314 "pir.l"
+#line 317 "pir.l"
 { return TK_GLOBALCONST; }
-    YY_BREAK
+	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 315 "pir.l"
+#line 318 "pir.l"
 { return TK_HLL; }
-    YY_BREAK
+	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 316 "pir.l"
+#line 319 "pir.l"
 { return TK_HLL_MAP; }
-    YY_BREAK
+	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 317 "pir.l"
+#line 320 "pir.l"
 { return TK_INVOCANT; }
-    YY_BREAK
+	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 318 "pir.l"
+#line 321 "pir.l"
 { return TK_LEX; }
-    YY_BREAK
+	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 319 "pir.l"
+#line 322 "pir.l"
 { return TK_LINE; }
-    YY_BREAK
+	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 320 "pir.l"
+#line 323 "pir.l"
 { return TK_LOADLIB; }
-    YY_BREAK
+	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 321 "pir.l"
+#line 324 "pir.l"
 { return TK_LOCAL; }
-    YY_BREAK
+	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 323 "pir.l"
+#line 326 "pir.l"
 { return TK_METH_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 324 "pir.l"
+#line 327 "pir.l"
 { return TK_NAMESPACE; }
-    YY_BREAK
+	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 325 "pir.l"
+#line 328 "pir.l"
 { return TK_NCI_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 326 "pir.l"
+#line 329 "pir.l"
 { return TK_PARAM; }
-    YY_BREAK
+	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 327 "pir.l"
+#line 330 "pir.l"
 { return TK_BEGIN_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 328 "pir.l"
+#line 331 "pir.l"
 { return TK_BEGIN_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 329 "pir.l"
+#line 332 "pir.l"
 { return TK_BEGIN_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 330 "pir.l"
+#line 333 "pir.l"
 { return TK_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 331 "pir.l"
+#line 334 "pir.l"
 { return TK_END_CALL; }
-    YY_BREAK
+	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 332 "pir.l"
+#line 335 "pir.l"
 { return TK_END_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 333 "pir.l"
+#line 336 "pir.l"
 { return TK_END_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 334 "pir.l"
+#line 337 "pir.l"
 { return TK_GET_RESULT; }
-    YY_BREAK
+	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 335 "pir.l"
+#line 338 "pir.l"
 { return TK_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 336 "pir.l"
+#line 339 "pir.l"
 { return TK_SUB; }
-    YY_BREAK
+	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 337 "pir.l"
+#line 340 "pir.l"
 { return TK_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 338 "pir.l"
+#line 341 "pir.l"
 { return TK_SET_RETURN; }
-    YY_BREAK
+	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 339 "pir.l"
+#line 342 "pir.l"
 { return TK_SET_YIELD; }
-    YY_BREAK
+	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 340 "pir.l"
+#line 343 "pir.l"
 { return TK_TAILCALL; }
-    YY_BREAK
+	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 343 "pir.l"
+#line 346 "pir.l"
 { /* make sure these are not used outside macro defs */
                     yypirerror(yyscanner, yypirget_extra(yyscanner),
                                "cannot use '%s' outside of macro definitions", yytext);
                   }
-    YY_BREAK
+	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 350 "pir.l"
+#line 353 "pir.l"
 { return TK_FLAG_ANON; }
-    YY_BREAK
+	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 351 "pir.l"
+#line 354 "pir.l"
 { return TK_FLAG_INIT; }
-    YY_BREAK
+	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 352 "pir.l"
+#line 355 "pir.l"
 { return TK_FLAG_LOAD; }
-    YY_BREAK
+	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 353 "pir.l"
+#line 356 "pir.l"
 { return TK_FLAG_POSTCOMP; }
-    YY_BREAK
+	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 354 "pir.l"
+#line 357 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
-    YY_BREAK
+	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 355 "pir.l"
+#line 358 "pir.l"
 { return TK_FLAG_MAIN; }
-    YY_BREAK
+	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 356 "pir.l"
+#line 359 "pir.l"
 { return TK_FLAG_METHOD; }
-    YY_BREAK
+	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 357 "pir.l"
+#line 360 "pir.l"
 { return TK_FLAG_LEX; }
-    YY_BREAK
+	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 358 "pir.l"
+#line 361 "pir.l"
 { return TK_FLAG_OUTER; }
-    YY_BREAK
+	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 359 "pir.l"
+#line 362 "pir.l"
 { return TK_FLAG_VTABLE; }
-    YY_BREAK
+	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 360 "pir.l"
+#line 363 "pir.l"
 { return TK_FLAG_MULTI; }
-    YY_BREAK
+	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 361 "pir.l"
+#line 364 "pir.l"
 { return TK_FLAG_SUBID; }
-    YY_BREAK
+	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 362 "pir.l"
+#line 365 "pir.l"
 { return TK_FLAG_INSTANCEOF; }
-    YY_BREAK
+	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 363 "pir.l"
+#line 366 "pir.l"
 { return TK_FLAG_NSENTRY; }
-    YY_BREAK
+	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 365 "pir.l"
+#line 368 "pir.l"
 { return TK_FLAG_UNIQUE_REG; }
-    YY_BREAK
+	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 366 "pir.l"
+#line 369 "pir.l"
 { return TK_FLAG_OPTIONAL; }
-    YY_BREAK
+	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 367 "pir.l"
+#line 370 "pir.l"
 { return TK_FLAG_OPT_FLAG; }
-    YY_BREAK
+	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 368 "pir.l"
+#line 371 "pir.l"
 { return TK_FLAG_SLURPY; }
-    YY_BREAK
+	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 369 "pir.l"
+#line 372 "pir.l"
 { return TK_FLAG_NAMED; }
-    YY_BREAK
+	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 370 "pir.l"
+#line 373 "pir.l"
 { return TK_FLAG_FLAT; }
-    YY_BREAK
+	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 371 "pir.l"
+#line 374 "pir.l"
 { return TK_FLAG_INVOCANT; }
-    YY_BREAK
+	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 374 "pir.l"
+#line 377 "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 110:
 YY_RULE_SETUP
-#line 379 "pir.l"
+#line 382 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_PREG; }
-    YY_BREAK
+	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 380 "pir.l"
+#line 383 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SREG; }
-    YY_BREAK
+	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 381 "pir.l"
+#line 384 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_NREG; }
-    YY_BREAK
+	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 382 "pir.l"
+#line 385 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_IREG; }
-    YY_BREAK
+	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 384 "pir.l"
+#line 387 "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 115:
 YY_RULE_SETUP
-#line 389 "pir.l"
+#line 392 "pir.l"
 { /* give a warning when using PASM registers as PIR identifiers */
                     lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -2517,49 +2530,49 @@
                     yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                     return TK_IDENT;
                   }
-    YY_BREAK
+	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 401 "pir.l"
+#line 404 "pir.l"
 { /* identifier; can be a global (sub or const), local or parrot op */
                     yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                     return TK_IDENT;
                   }
-    YY_BREAK
+	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 406 "pir.l"
+#line 409 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
+	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 407 "pir.l"
+#line 410 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 408 "pir.l"
+#line 411 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 409 "pir.l"
+#line 412 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 410 "pir.l"
+#line 413 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 412 "pir.l"
+#line 415 "pir.l"
 { /* XXX some work to be done to disallow $P0 . foo()
                      * spaces should not be allowed.
                      */
                      return '.';
                   }
-    YY_BREAK
+	YY_BREAK
 
 
 /* SCANSTR<<EOF>> and SCANMACRO<<EOF>> must be defined before <INTIAL><<EOF>>,
@@ -2576,15 +2589,15 @@
 
 
 case YY_STATE_EOF(SCANSTR):
-#line 435 "pir.l"
+#line 438 "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 441 "pir.l"
+#line 444 "pir.l"
 { /* override the default <<EOF>> action; go back to normal state and
                       * switch back to the saved file.
                       */
@@ -2607,10 +2620,10 @@
                      delete_macro_table(table);
 
                    }
-    YY_BREAK
+	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 464 "pir.l"
+#line 467 "pir.l"
 { /* when scanning a macro body, the @ marker indicates the {IDENT} must
                           * be munged.
                           */
@@ -2619,21 +2632,21 @@
                             yylval->sval              = munge_id(id, lexer);
                             return TK_IDENT;
                        }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 473 "pir.l"
+#line 476 "pir.l"
 { /* end of file, stop scanning. */
                     yyterminate();
                   }
-    YY_BREAK
+	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 477 "pir.l"
+#line 480 "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
 
 
 /*****************************************************************************
@@ -2649,50 +2662,50 @@
 
 case 125:
 YY_RULE_SETUP
-#line 499 "pir.l"
+#line 502 "pir.l"
 {
                                yy_push_state(MACROCONST, yyscanner);
                                return TK_MACRO_CONST;
                              }
-    YY_BREAK
+	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 504 "pir.l"
+#line 507 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
-    YY_BREAK
+	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 509 "pir.l"
+#line 512 "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 128:
 YY_RULE_SETUP
-#line 516 "pir.l"
+#line 519 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 517 "pir.l"
+#line 520 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character: '%c'", yytext[0]);
                              }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(MACROCONST):
-#line 521 "pir.l"
+#line 524 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file during .macro_const definition");
                              }
-    YY_BREAK
+	YY_BREAK
 
 
 /**************** macro header (.macro <ident> <parameters> ) ***************/
@@ -2700,50 +2713,50 @@
 
 case 130:
 YY_RULE_SETUP
-#line 532 "pir.l"
+#line 535 "pir.l"
 { /* start a macro definition */
                                yy_push_state(MACROHEAD, yyscanner);
                                return TK_MACRO;
                              }
-    YY_BREAK
+	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 537 "pir.l"
+#line 540 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 538 "pir.l"
+#line 541 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
                              }
-    YY_BREAK
+	YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 543 "pir.l"
+#line 546 "pir.l"
 { return '('; }
-    YY_BREAK
+	YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 544 "pir.l"
+#line 547 "pir.l"
 { return ')'; }
-    YY_BREAK
+	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 545 "pir.l"
+#line 548 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 136:
 /* rule 136 can match eol */
 YY_RULE_SETUP
-#line 547 "pir.l"
+#line 550 "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 ***************************/
@@ -2755,7 +2768,7 @@
 
 case 137:
 YY_RULE_SETUP
-#line 563 "pir.l"
+#line 566 "pir.l"
 { /* .foo; it can be a macro, macro_local, or just $P0.foo(),
                                 * but we need to check that.
                                 */
@@ -2809,10 +2822,10 @@
                                    }
                                }
                              }
-    YY_BREAK
+	YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 617 "pir.l"
+#line 620 "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);
@@ -2840,85 +2853,85 @@
                                else
                                    yypirerror(yyscanner, lexer, "'%s' is not a macro", yytext + 1);
                              }
-    YY_BREAK
+	YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 645 "pir.l"
+#line 648 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_IDENT;
                              }
-    YY_BREAK
+	YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 650 "pir.l"
+#line 653 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
-    YY_BREAK
+	YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 655 "pir.l"
+#line 658 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 656 "pir.l"
+#line 659 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 657 "pir.l"
+#line 660 "pir.l"
 { return '('; }
-    YY_BREAK
+	YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 658 "pir.l"
+#line 661 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROEXPAND state */
                                return ')';
                              }
-    YY_BREAK
+	YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 663 "pir.l"
+#line 666 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(STRINGEXPAND):
-#line 668 "pir.l"
+#line 671 "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 146:
 YY_RULE_SETUP
-#line 674 "pir.l"
+#line 677 "pir.l"
 { return '{'; }
-    YY_BREAK
+	YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 675 "pir.l"
+#line 678 "pir.l"
 { return '}'; }
-    YY_BREAK
+	YY_BREAK
 case 148:
 /* rule 148 can match eol */
 YY_RULE_SETUP
-#line 677 "pir.l"
+#line 680 "pir.l"
 { yylval->sval = "\n"; return TK_NL; }
-    YY_BREAK
+	YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 679 "pir.l"
+#line 682 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character in macro expansion: %c", yytext[0]);
                              }
-    YY_BREAK
+	YY_BREAK
 
 
 /******************************** .macro_local *****************************/
@@ -2926,7 +2939,7 @@
 
 case 150:
 YY_RULE_SETUP
-#line 690 "pir.l"
+#line 693 "pir.l"
 { /* give a warning if the right flag is set */
                               /*
                               lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -2939,38 +2952,38 @@
                               Doesn't make sense to use it.
                               */
                             }
-    YY_BREAK
+	YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 704 "pir.l"
+#line 707 "pir.l"
 {
                               yy_push_state(MACROLOCAL, yyscanner);
                               return TK_MACRO_LOCAL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 709 "pir.l"
+#line 712 "pir.l"
 { return TK_INT; }
-    YY_BREAK
+	YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 710 "pir.l"
+#line 713 "pir.l"
 { return TK_PMC; }
-    YY_BREAK
+	YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 711 "pir.l"
+#line 714 "pir.l"
 { return TK_NUM; }
-    YY_BREAK
+	YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 712 "pir.l"
+#line 715 "pir.l"
 { return TK_STRING; }
-    YY_BREAK
+	YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 714 "pir.l"
+#line 717 "pir.l"
 { /* normal .macro_local */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               /* reserve space for {IDENT}, the @ marker and the NULL char. */
@@ -2985,10 +2998,10 @@
                               declare_macro_local(CURRENT_MACRO(lexer), dupstr(lexer, yytext));
                               return TK_MACRO_LOCAL_ID;
                             }
-    YY_BREAK
+	YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 729 "pir.l"
+#line 732 "pir.l"
 { /* declare a .macro_local based on a parameter */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -3002,10 +3015,10 @@
                               return TK_MACRO_LOCAL_ID;
 
                             }
-    YY_BREAK
+	YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 743 "pir.l"
+#line 746 "pir.l"
 { /* .$foo */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               macro_table * const table = peek_macro_table(lexer);
@@ -3034,10 +3047,10 @@
                               }
 
                             }
-    YY_BREAK
+	YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 772 "pir.l"
+#line 775 "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);
@@ -3062,29 +3075,29 @@
 
                              return TK_IDENT;
                            }
-    YY_BREAK
+	YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 797 "pir.l"
+#line 800 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 161:
 /* rule 161 can match eol */
 YY_RULE_SETUP
-#line 799 "pir.l"
+#line 802 "pir.l"
 { /* newline after .macro_local <type> <ident> line */
                               yy_pop_state(yyscanner);
                               return TK_NL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 804 "pir.l"
+#line 807 "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 ********************************/
@@ -3092,15 +3105,15 @@
 
 case 163:
 YY_RULE_SETUP
-#line 814 "pir.l"
+#line 817 "pir.l"
 {
                               yy_push_state(MACROLABEL, yyscanner);
                               return TK_MACRO_LABEL;
                             }
-    YY_BREAK
+	YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 819 "pir.l"
+#line 822 "pir.l"
 { /* if the "$" is there, it's a macro label using a macro
                                * parameter's value; otherwise it's a normal macro label
                                */
@@ -3117,29 +3130,29 @@
                               declare_macro_local(CURRENT_MACRO(lexer), dupstr(lexer, yytext));
                               return TK_MACRO_LABEL_ID;
                             }
-    YY_BREAK
+	YY_BREAK
 case 165:
 /* rule 165 can match eol */
 YY_RULE_SETUP
-#line 837 "pir.l"
+#line 840 "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 166:
 YY_RULE_SETUP
-#line 843 "pir.l"
+#line 846 "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 167:
 YY_RULE_SETUP
-#line 850 "pir.l"
+#line 853 "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);
@@ -3165,7 +3178,7 @@
                              }
                              return TK_LABEL;
                            }
-    YY_BREAK
+	YY_BREAK
 
 
 /*************************** macro body scanning (storing) ****************************/
@@ -3174,31 +3187,31 @@
 case 168:
 /* rule 168 can match eol */
 YY_RULE_SETUP
-#line 883 "pir.l"
+#line 886 "pir.l"
 { store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), '\n'); }
-    YY_BREAK
+	YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 885 "pir.l"
+#line 888 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROBODY state */
                                return TK_ENDM;
                              }
-    YY_BREAK
+	YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 890 "pir.l"
+#line 893 "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 894 "pir.l"
+#line 897 "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),
@@ -3225,93 +3238,93 @@
 
 case 171:
 YY_RULE_SETUP
-#line 926 "pir.l"
+#line 929 "pir.l"
 { return ','; }
-    YY_BREAK
+	YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 927 "pir.l"
+#line 930 "pir.l"
 { return '['; }
-    YY_BREAK
+	YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 928 "pir.l"
+#line 931 "pir.l"
 { return ']'; }
-    YY_BREAK
+	YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 930 "pir.l"
+#line 933 "pir.l"
 { return TK_FLAG_MAIN; }
-    YY_BREAK
+	YY_BREAK
 case 175:
 YY_RULE_SETUP
-#line 931 "pir.l"
+#line 934 "pir.l"
 { return TK_FLAG_LOAD; }
-    YY_BREAK
+	YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 932 "pir.l"
+#line 935 "pir.l"
 { return TK_FLAG_INIT; }
-    YY_BREAK
+	YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 933 "pir.l"
+#line 936 "pir.l"
 { return TK_FLAG_ANON; }
-    YY_BREAK
+	YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 934 "pir.l"
+#line 937 "pir.l"
 { return TK_FLAG_POSTCOMP; }
-    YY_BREAK
+	YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 935 "pir.l"
+#line 938 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
-    YY_BREAK
+	YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 937 "pir.l"
+#line 940 "pir.l"
 { return TK_PCC_SUB; }
-    YY_BREAK
+	YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 938 "pir.l"
+#line 941 "pir.l"
 { return TK_LEX; }
-    YY_BREAK
+	YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 939 "pir.l"
+#line 942 "pir.l"
 { return TK_NAMESPACE; }
-    YY_BREAK
+	YY_BREAK
 case 183:
 YY_RULE_SETUP
-#line 941 "pir.l"
+#line 944 "pir.l"
 {
                           yy_push_state(MACROHEAD, yyscanner);
                           return TK_MACRO;
                         }
-    YY_BREAK
+	YY_BREAK
 case 184:
 YY_RULE_SETUP
-#line 946 "pir.l"
+#line 949 "pir.l"
 {
                           yy_push_state(MACROCONST, yyscanner);
                           return TK_MACRO_CONST;
                         }
-    YY_BREAK
+	YY_BREAK
 case 185:
 YY_RULE_SETUP
-#line 951 "pir.l"
+#line 954 "pir.l"
 { return TK_LINE; }
-    YY_BREAK
+	YY_BREAK
 case 186:
 YY_RULE_SETUP
-#line 952 "pir.l"
+#line 955 "pir.l"
 { return TK_FILE; }
-    YY_BREAK
+	YY_BREAK
 case 187:
 YY_RULE_SETUP
-#line 955 "pir.l"
+#line 958 "pir.l"
 { /* macro expansion in PASM mode. */
                           lexer_state * const lexer = yypirget_extra(yyscanner);
                           macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3345,247 +3358,247 @@
                               }
                           }
                         }
-    YY_BREAK
+	YY_BREAK
 case 188:
 YY_RULE_SETUP
-#line 989 "pir.l"
+#line 992 "pir.l"
 { /* a label in PASM */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
                           return TK_LABEL;
                         }
-    YY_BREAK
+	YY_BREAK
 case 189:
 YY_RULE_SETUP
-#line 994 "pir.l"
+#line 997 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "symbolic registers are not allowed in PASM mode");
                         }
-    YY_BREAK
+	YY_BREAK
 case 190:
 YY_RULE_SETUP
-#line 997 "pir.l"
+#line 1000 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_PREG; }
-    YY_BREAK
+	YY_BREAK
 case 191:
 YY_RULE_SETUP
-#line 998 "pir.l"
+#line 1001 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_NREG; }
-    YY_BREAK
+	YY_BREAK
 case 192:
 YY_RULE_SETUP
-#line 999 "pir.l"
+#line 1002 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_IREG; }
-    YY_BREAK
+	YY_BREAK
 case 193:
 YY_RULE_SETUP
-#line 1000 "pir.l"
+#line 1003 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_SREG; }
-    YY_BREAK
+	YY_BREAK
 case 194:
 YY_RULE_SETUP
-#line 1002 "pir.l"
+#line 1005 "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 195:
 YY_RULE_SETUP
-#line 1007 "pir.l"
+#line 1010 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
+	YY_BREAK
 case 196:
 YY_RULE_SETUP
-#line 1008 "pir.l"
+#line 1011 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 197:
 YY_RULE_SETUP
-#line 1009 "pir.l"
+#line 1012 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 1010 "pir.l"
+#line 1013 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 1011 "pir.l"
+#line 1014 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
-    YY_BREAK
+	YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 1013 "pir.l"
+#line 1016 "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 201:
 YY_RULE_SETUP
-#line 1018 "pir.l"
+#line 1021 "pir.l"
 { /* ignore whitespace */ }
-    YY_BREAK
+	YY_BREAK
 case 202:
 /* rule 202 can match eol */
 YY_RULE_SETUP
-#line 1020 "pir.l"
+#line 1023 "pir.l"
 { return TK_NL; }
-    YY_BREAK
+	YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 1022 "pir.l"
+#line 1025 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "unrecognized character: %c", yytext[0]);
                         }
-    YY_BREAK
+	YY_BREAK
 case YY_STATE_EOF(PASM):
-#line 1025 "pir.l"
+#line 1028 "pir.l"
 { yyterminate(); }
-    YY_BREAK
+	YY_BREAK
 case 204:
 YY_RULE_SETUP
-#line 1027 "pir.l"
+#line 1030 "pir.l"
 ECHO;
-    YY_BREAK
-#line 3453 "pirlexer.c"
+	YY_BREAK
+#line 3466 "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 */
 
@@ -3599,9 +3612,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)
@@ -3610,126 +3623,134 @@
 /* %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;
+	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()" );
+	}
+
+	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;
 
-    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->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 */
@@ -3742,38 +3763,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 >= 803 )
-                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 >= 803 )
+				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)
@@ -3781,27 +3802,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 >= 803 )
-            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 == 802);
+	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 >= 803 )
+			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 == 802);
 
-    return yy_is_jam ? 0 : yy_current_state;
+	return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %if-c-only */
@@ -3820,81 +3841,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;
-
-    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);
+	*yyg->yy_c_buf_p = yyg->yy_hold_char;
 
-                    /*FALLTHROUGH*/
+	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 EOF;
 
-                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.
@@ -3910,14 +3931,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.
@@ -3932,32 +3953,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);
-     */
-    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.
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		yypirpop_buffer_state();
+	 *		yypirpush_buffer_state(new_buffer);
      */
-    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 */
@@ -3967,10 +3988,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.
@@ -3985,26 +4006,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.
@@ -4019,16 +4040,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 */
@@ -4049,13 +4070,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.
@@ -4069,11 +4090,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.
@@ -4087,25 +4108,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++ */
@@ -4122,28 +4143,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 */
 
@@ -4159,18 +4180,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 */
 
@@ -4184,42 +4205,46 @@
 /* %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);
-
-        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;
-    }
+		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;
+	}
 }
 /* %endif */
 
@@ -4228,42 +4253,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;
-
-    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;
+	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;
 
-    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 str a NUL-terminated string to scan
+ * @param yystr 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
@@ -4271,8 +4296,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 */
 
@@ -4286,32 +4311,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()" );
-
-    /* It's okay to grow etc. this buffer, and we should throw it
-     * away when we're done.
-     */
-    b->yy_is_our_buffer = 1;
+	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;
 
-    return b;
+	return b;
 }
 /* %endif */
 
@@ -4322,27 +4347,26 @@
 /* %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 */
@@ -4352,10 +4376,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 */
@@ -4365,7 +4389,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
@@ -4375,8 +4399,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 */
@@ -4386,18 +4410,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. */
 
@@ -4421,10 +4445,10 @@
 int yypirget_lineno  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yylineno;
 }
 
@@ -4434,10 +4458,10 @@
 int yypirget_column  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
+    
         if (! YY_CURRENT_BUFFER)
             return 0;
-
+    
     return yycolumn;
 }
 
@@ -4502,8 +4526,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;
 }
 
@@ -4517,8 +4541,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;
 }
 
@@ -4601,7 +4625,43 @@
     return yy_init_globals ( *ptr_yy_globals );
 }
 
-/* %endif */
+/* 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 */
 
 /* %if-c-only */
 static int yy_init_globals (yyscan_t yyscanner)
@@ -4645,15 +4705,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 );
@@ -4679,20 +4739,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
 
@@ -4703,7 +4763,7 @@
 
 /* %ok-for-header */
 
-#line 1027 "pir.l"
+#line 1030 "pir.l"
 
 
 
@@ -4969,7 +5029,7 @@
 /*
 
 =item C<void *
-yypiralloc(size_t bytes,yyscan_t yyscanner)>
+yypiralloc(yy_size_t bytes,yyscan_t yyscanner)>
 
 Allocate C<bytes> of memory; the C<yyscanner> argument is not used.
 
@@ -4978,14 +5038,14 @@
 */
 PARROT_MALLOC
 void *
-yypiralloc(size_t bytes,yyscan_t yyscanner) {
+yypiralloc(yy_size_t bytes,yyscan_t yyscanner) {
     return mem_sys_allocate(bytes);
 }
 
 /*
 
 =item C<void *
-yypirrealloc(void * ptr,size_t bytes,yyscan_t yyscanner)>
+yypirrealloc(void * ptr,yy_size_t bytes,yyscan_t yyscanner)>
 
 Reallocate memory pointed to by C<ptr>. The new memory region is C<bytes> in size;
 the C<yyscanner> argument is not used.
@@ -4994,7 +5054,7 @@
 
 */
 void *
-yypirrealloc(void * ptr,size_t bytes,yyscan_t yyscanner) {
+yypirrealloc(void * ptr,yy_size_t bytes,yyscan_t yyscanner) {
     return mem_sys_realloc(ptr, bytes);
 }
 

Modified: trunk/compilers/pirc/new/pirlexer.h
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.h	(original)
+++ trunk/compilers/pirc/new/pirlexer.h	Mon Dec  1 11:04:37 2008
@@ -35,20 +35,25 @@
 #  define YY_ALWAYS_INTERACTIVE 0
 #endif
 
+#include <stdlib.h> /* for size_t */
+typedef size_t yy_size_t;
+#define YY_TYPEDEF_YY_SIZE_T
 
 
 
 
-#line 43 "pirlexer.h"
+#line 46 "pirlexer.h"
 
 #define  YY_INT_ALIGNED short int
 
 /* A lexical scanner generated by flex */
 
+/* %not-for-header */
+
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 33
+#define YY_FLEX_SUBMINOR_VERSION 35
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -57,7 +62,7 @@
 /* %endif */
 
 /* %if-c-only */
-
+    
 /* %endif */
 
 /* %if-c-only */
@@ -86,10 +91,10 @@
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if __STDC_VERSION__ >= 199901L
+#if defined (__STDC_VERSION__) && __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
@@ -106,7 +111,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 */
@@ -152,14 +157,15 @@
 /* The "const" storage-class-modifier is valid. */
 #define YY_USE_CONST
 
-#else   /* ! __cplusplus */
+#else	/* ! __cplusplus */
 
-#if __STDC__
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
 
 #define YY_USE_CONST
 
-#endif  /* __STDC__ */
-#endif  /* ! __cplusplus */
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
 
 #ifdef YY_USE_CONST
 #define yyconst const
@@ -190,12 +196,16 @@
 #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 */
 /* %endif */
 
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
 #define YY_TYPEDEF_YY_BUFFER_STATE
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
@@ -209,70 +219,65 @@
 /* %endif */
 /* %endif */
 
-/* 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 unsigned int yy_size_t;
+typedef size_t 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 */
+	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;
-
-    /* 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;
 
-    };
+	};
 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
 /* %if-c-only Standard (non-C++) definition */
@@ -360,8 +365,14 @@
 
 /* %if-reentrant */
 
+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. */
 
@@ -398,7 +409,6 @@
 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.
@@ -457,9 +467,11 @@
 #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 */
@@ -489,9 +501,9 @@
 #undef YY_DECL
 #endif
 
-#line 1027 "pir.l"
+#line 1030 "pir.l"
 
 
-#line 496 "pirlexer.h"
+#line 508 "pirlexer.h"
 #undef yypirIN_HEADER
 #endif /* yypirHEADER_H */



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About