Author: kjs
Date: Wed Jul 30 09:37:41 2008
New Revision: 29877

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

Log:
[pirc/new] use flex' built-in line-number-track-keeping option instead of 
custom code to do that.

Modified: trunk/compilers/pirc/new/main.c
==============================================================================
--- trunk/compilers/pirc/new/main.c     (original)
+++ trunk/compilers/pirc/new/main.c     Wed Jul 30 09:37:41 2008
@@ -185,13 +185,13 @@
 
 */
 int
-yyerror(yyscan_t yyscanner, lexer_state * const  lexer, char const * const 
message)
+yyerror(yyscan_t yyscanner, lexer_state * const lexer, char const * const 
message)
 {
     char const * const text = yyget_text(yyscanner);
     lexer->parse_errors++;
 
     fprintf(stderr, "\nError in file '%s' (line %d)\n%s ",
-            lexer->filename, lexer->line_nr, message);
+            lexer->filename, yyget_lineno(yyscanner), message);
 
     /* print current token if it's not a newline (or \r\n on windows) */
     /* the following should be fixed; the point is not to print the token if

Modified: trunk/compilers/pirc/new/pir.l
==============================================================================
--- trunk/compilers/pirc/new/pir.l      (original)
+++ trunk/compilers/pirc/new/pir.l      Wed Jul 30 09:37:41 2008
@@ -164,17 +164,6 @@
 }
 
 
-/* after each rule execute update_location() */
-#define YY_USER_ACTION  do {                                                \
-                            lexer_state *my_lexer = yyget_extra(yyscanner); \
-                            update_location(yyscanner, my_lexer);           \
-                        }                                                   \
-                        while(0);
-
-
-
-
-
 /*
 
 =item C<new_lexer>
@@ -188,7 +177,6 @@
     assert(lexer != NULL);
 
     lexer->filename      = filename;
-    lexer->line_nr       = 1;
     lexer->line_pos      = 1;
     lexer->parse_errors  = 0;
 
@@ -249,6 +237,9 @@
 
 %option nounput
 
+/* use flex' built-in capability for line counting */
+%option yylineno
+
 /* make the scanner re-entrant */
 %option reentrant
 

Modified: trunk/compilers/pirc/new/pir.y
==============================================================================
--- trunk/compilers/pirc/new/pir.y      (original)
+++ trunk/compilers/pirc/new/pir.y      Wed Jul 30 09:37:41 2008
@@ -19,8 +19,6 @@
 TODO:
 
  * rename TK_SYM_?REG to TK_?REG (as there's no longer PASM registers)
- * use a flex-generated line counter in the lexer instead of custom
-   code (this is in pir.l).
 
 =cut
 

Modified: trunk/compilers/pirc/new/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.c (original)
+++ trunk/compilers/pirc/new/pirlexer.c Wed Jul 30 09:37:41 2008
@@ -224,7 +224,20 @@
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
 
-    #define YY_LESS_LINENO(n)
+    /* 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 yylex.
+     *       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.
+     */
+    #define  YY_LESS_LINENO(n) \
+            do { \
+                int yyl;\
+                for ( yyl = n; yyl < yyleng; ++yyl )\
+                    if ( yytext[yyl] == '\n' )\
+                        --yylineno;\
+            }while(0)
 
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
@@ -776,21 +789,31 @@
       384,  384,  384,  384
     } ;
 
+/* Table of booleans, true if rule could match eol. */
+static yyconst flex_int32_t yy_rule_can_match_eol[115] =
+    {   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, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
+
 static yyconst flex_int16_t yy_rule_linenum[114] =
     {   0,
-      271,  273,  277,  278,  279,  280,  281,  282,  283,  284,
-      285,  286,  287,  288,  290,  291,  292,  293,  295,  296,
-      297,  298,  299,  300,  301,  302,  303,  304,  305,  306,
-      308,  311,  312,  313,  315,  316,  317,  318,  319,  320,
-      321,  322,  323,  324,  325,  327,  328,  329,  330,  331,
-      333,  334,  335,  336,  338,  339,  340,  342,  343,  344,
-      345,  346,  347,  348,  349,  351,  352,  353,  354,  355,
-      356,  357,  358,  359,  360,  361,  362,  363,  364,  365,
-      366,  368,  369,  370,  371,  372,  373,  374,  375,  376,
-      377,  378,  379,  381,  382,  383,  384,  385,  386,  387,
+      262,  264,  268,  269,  270,  271,  272,  273,  274,  275,
+      276,  277,  278,  279,  281,  282,  283,  284,  286,  287,
+      288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
+      299,  302,  303,  304,  306,  307,  308,  309,  310,  311,
+      312,  313,  314,  315,  316,  318,  319,  320,  321,  322,
+      324,  325,  326,  327,  329,  330,  331,  333,  334,  335,
+      336,  337,  338,  339,  340,  342,  343,  344,  345,  346,
+      347,  348,  349,  350,  351,  352,  353,  354,  355,  356,
+      357,  359,  360,  361,  362,  363,  364,  365,  366,  367,
+      368,  369,  370,  372,  373,  374,  375,  376,  377,  378,
 
-      390,  395,  396,  397,  398,  400,  405,  411,  412,  413,
-      414,  415,  420
+      381,  386,  387,  388,  389,  391,  396,  402,  403,  404,
+      405,  406,  411
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -967,17 +990,6 @@
 }
 
 
-/* after each rule execute update_location() */
-#define YY_USER_ACTION  do {                                                \
-                            lexer_state *my_lexer = yyget_extra(yyscanner); \
-                            update_location(yyscanner, my_lexer);           \
-                        }                                                   \
-                        while(0);
-
-
-
-
-
 /*
 
 =item C<new_lexer>
@@ -991,7 +1003,6 @@
     assert(lexer != NULL);
 
     lexer->filename      = filename;
-    lexer->line_nr       = 1;
     lexer->line_pos      = 1;
     lexer->parse_errors  = 0;
 
@@ -1017,12 +1028,13 @@
 /* make sure yytext is a pointer */
 /* slightly more efficient when this option is set; our parser is not 
interactive anyway. */
 /* define output file */
+/* use flex' built-in capability for line counting */
 /* make the scanner re-entrant */
 /* needed for bison interaction. I forgot details. */
 /* make yywrap() always return true. */
 /* always show warnings if something's wrong with our spec. */
 /* create a scanner in debug mode */
-#line 1026 "pirlexer.c"
+#line 1038 "pirlexer.c"
 
 #define INITIAL 0
 
@@ -1318,11 +1330,11 @@
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 /* %% [7.0] user's declarations go here */
-#line 268 "pir.l"
+#line 259 "pir.l"
 
 
 
-#line 1326 "pirlexer.c"
+#line 1338 "pirlexer.c"
 
     yylval = yylval_param;
 
@@ -1405,6 +1417,18 @@
 
 /* %% [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' )
+
+    do{ yylineno++;
+        yycolumn=0;
+    }while(0)
+;
+            }
+
 do_action:  /* This label is used only to access EOF actions. */
 
 /* %% [12.0] debug code goes here */
@@ -1436,512 +1460,512 @@
 
 case 1:
 YY_RULE_SETUP
-#line 271 "pir.l"
+#line 262 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 273 "pir.l"
+#line 264 "pir.l"
 { /* a set of continuous newlines yields a single newline token. */
                    return TK_NL;
                  }
     YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 277 "pir.l"
+#line 268 "pir.l"
 { return TK_ASSIGN_USHIFT; }
     YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 278 "pir.l"
+#line 269 "pir.l"
 { return TK_USHIFT; }
     YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 279 "pir.l"
+#line 270 "pir.l"
 { return TK_ASSIGN_RSHIFT; }
     YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 280 "pir.l"
+#line 271 "pir.l"
 { return TK_RSHIFT; }
     YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 281 "pir.l"
+#line 272 "pir.l"
 { return TK_LSHIFT; }
     YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 282 "pir.l"
+#line 273 "pir.l"
 { return TK_ARROW; }
     YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 283 "pir.l"
+#line 274 "pir.l"
 { return TK_EQ; }
     YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 284 "pir.l"
+#line 275 "pir.l"
 { return TK_NE; }
     YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 285 "pir.l"
+#line 276 "pir.l"
 { return TK_LE; }
     YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 286 "pir.l"
+#line 277 "pir.l"
 { return TK_GE; }
     YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 287 "pir.l"
+#line 278 "pir.l"
 { return TK_LT; }
     YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 288 "pir.l"
+#line 279 "pir.l"
 { return TK_GT; }
     YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 290 "pir.l"
+#line 281 "pir.l"
 { return TK_FDIV; }
     YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 291 "pir.l"
+#line 282 "pir.l"
 { return TK_AND; }
     YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 292 "pir.l"
+#line 283 "pir.l"
 { return TK_OR; }
     YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 293 "pir.l"
+#line 284 "pir.l"
 { return TK_XOR; }
     YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 295 "pir.l"
+#line 286 "pir.l"
 { return '+'; }
     YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 296 "pir.l"
+#line 287 "pir.l"
 { return '%'; }
     YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 297 "pir.l"
+#line 288 "pir.l"
 { return '*'; }
     YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 298 "pir.l"
+#line 289 "pir.l"
 { return '/'; }
     YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 299 "pir.l"
+#line 290 "pir.l"
 { return '!'; }
     YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 300 "pir.l"
+#line 291 "pir.l"
 { return '~'; }
     YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 301 "pir.l"
+#line 292 "pir.l"
 { return '-'; }
     YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 302 "pir.l"
+#line 293 "pir.l"
 { return '('; }
     YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 303 "pir.l"
+#line 294 "pir.l"
 { return ')'; }
     YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 304 "pir.l"
+#line 295 "pir.l"
 { return ','; }
     YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 305 "pir.l"
+#line 296 "pir.l"
 { return '['; }
     YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 306 "pir.l"
+#line 297 "pir.l"
 { return ']'; }
     YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 308 "pir.l"
+#line 299 "pir.l"
 { /* if the dot is surrounded by whitespace, it's a concatenation operator */
               return TK_CONC;
             }
     YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 311 "pir.l"
+#line 302 "pir.l"
 { return '.'; }
     YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 312 "pir.l"
+#line 303 "pir.l"
 { return '='; }
     YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 313 "pir.l"
+#line 304 "pir.l"
 { return ';'; }
     YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 315 "pir.l"
+#line 306 "pir.l"
 { return TK_ASSIGN_INC; }
     YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 316 "pir.l"
+#line 307 "pir.l"
 { return TK_ASSIGN_DEC; }
     YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 317 "pir.l"
+#line 308 "pir.l"
 { return TK_ASSIGN_DIV; }
     YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 318 "pir.l"
+#line 309 "pir.l"
 { return TK_ASSIGN_MUL; }
     YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 319 "pir.l"
+#line 310 "pir.l"
 { return TK_ASSIGN_MOD; }
     YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 320 "pir.l"
+#line 311 "pir.l"
 { return TK_ASSIGN_POW; }
     YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 321 "pir.l"
+#line 312 "pir.l"
 { return TK_ASSIGN_BOR; }
     YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 322 "pir.l"
+#line 313 "pir.l"
 { return TK_ASSIGN_BAND; }
     YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 323 "pir.l"
+#line 314 "pir.l"
 { return TK_ASSIGN_FDIV; }
     YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 324 "pir.l"
+#line 315 "pir.l"
 { return TK_ASSIGN_BNOT; }
     YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 325 "pir.l"
+#line 316 "pir.l"
 { return TK_ASSIGN_CONC; }
     YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 327 "pir.l"
+#line 318 "pir.l"
 { return TK_IF; }
     YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 328 "pir.l"
+#line 319 "pir.l"
 { return TK_GOTO; }
     YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 329 "pir.l"
+#line 320 "pir.l"
 { return TK_N_OPERATORS; }
     YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 330 "pir.l"
+#line 321 "pir.l"
 { return TK_UNLESS; }
     YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 331 "pir.l"
+#line 322 "pir.l"
 { return TK_NULL; }
     YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 333 "pir.l"
+#line 324 "pir.l"
 { return TK_INT; }
     YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 334 "pir.l"
+#line 325 "pir.l"
 { return TK_NUM; }
     YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 335 "pir.l"
+#line 326 "pir.l"
 { return TK_PMC; }
     YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 336 "pir.l"
+#line 327 "pir.l"
 { return TK_STRING; }
     YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 338 "pir.l"
+#line 329 "pir.l"
 { return TK_ARG; }
     YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 339 "pir.l"
+#line 330 "pir.l"
 { return TK_CONST; }
     YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 340 "pir.l"
+#line 331 "pir.l"
 { return TK_END; }
     YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 342 "pir.l"
+#line 333 "pir.l"
 { return TK_GET_RESULTS; }
     YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 343 "pir.l"
+#line 334 "pir.l"
 { return TK_GLOBALCONST; }
     YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 344 "pir.l"
+#line 335 "pir.l"
 { return TK_HLL; }
     YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 345 "pir.l"
+#line 336 "pir.l"
 { return TK_HLL_MAP; }
     YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 346 "pir.l"
+#line 337 "pir.l"
 { return TK_INVOCANT; }
     YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 347 "pir.l"
+#line 338 "pir.l"
 { return TK_LEX; }
     YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 348 "pir.l"
+#line 339 "pir.l"
 { return TK_LOADLIB; }
     YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 349 "pir.l"
+#line 340 "pir.l"
 { return TK_LOCAL; }
     YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 351 "pir.l"
+#line 342 "pir.l"
 { return TK_METH_CALL; }
     YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 352 "pir.l"
+#line 343 "pir.l"
 { return TK_NAMESPACE; }
     YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 353 "pir.l"
+#line 344 "pir.l"
 { return TK_NCI_CALL; }
     YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 354 "pir.l"
+#line 345 "pir.l"
 { return TK_PARAM; }
     YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 355 "pir.l"
+#line 346 "pir.l"
 { return TK_BEGIN_CALL; }
     YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 356 "pir.l"
+#line 347 "pir.l"
 { return TK_BEGIN_RETURN; }
     YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 357 "pir.l"
+#line 348 "pir.l"
 { return TK_BEGIN_YIELD; }
     YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 358 "pir.l"
+#line 349 "pir.l"
 { return TK_CALL; }
     YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 359 "pir.l"
+#line 350 "pir.l"
 { return TK_END_CALL; }
     YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 360 "pir.l"
+#line 351 "pir.l"
 { return TK_END_RETURN; }
     YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 361 "pir.l"
+#line 352 "pir.l"
 { return TK_END_YIELD; }
     YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 362 "pir.l"
+#line 353 "pir.l"
 { return TK_PRAGMA; }
     YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 363 "pir.l"
+#line 354 "pir.l"
 { return TK_RESULT; }
     YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 364 "pir.l"
+#line 355 "pir.l"
 { return TK_RETURN; }
     YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 365 "pir.l"
+#line 356 "pir.l"
 { return TK_SUB; }
     YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 366 "pir.l"
+#line 357 "pir.l"
 { return TK_YIELD; }
     YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 368 "pir.l"
+#line 359 "pir.l"
 { return TK_FLAG_ANON; }
     YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 369 "pir.l"
+#line 360 "pir.l"
 { return TK_FLAG_INIT; }
     YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 370 "pir.l"
+#line 361 "pir.l"
 { return TK_FLAG_LOAD; }
     YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 371 "pir.l"
+#line 362 "pir.l"
 { return TK_FLAG_POSTCOMP; }
     YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 372 "pir.l"
+#line 363 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
     YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 373 "pir.l"
+#line 364 "pir.l"
 { return TK_FLAG_MAIN; }
     YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 374 "pir.l"
+#line 365 "pir.l"
 { return TK_FLAG_METHOD; }
     YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 375 "pir.l"
+#line 366 "pir.l"
 { return TK_FLAG_LEX; }
     YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 376 "pir.l"
+#line 367 "pir.l"
 { return TK_FLAG_OUTER; }
     YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 377 "pir.l"
+#line 368 "pir.l"
 { return TK_FLAG_VTABLE; }
     YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 378 "pir.l"
+#line 369 "pir.l"
 { return TK_FLAG_MULTI; }
     YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 379 "pir.l"
+#line 370 "pir.l"
 { return TK_FLAG_LEXID; }
     YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 381 "pir.l"
+#line 372 "pir.l"
 { return TK_FLAG_UNIQUE_REG; }
     YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 382 "pir.l"
+#line 373 "pir.l"
 { return TK_FLAG_OPTIONAL; }
     YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 383 "pir.l"
+#line 374 "pir.l"
 { return TK_FLAG_OPT_FLAG; }
     YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 384 "pir.l"
+#line 375 "pir.l"
 { return TK_FLAG_SLURPY; }
     YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 385 "pir.l"
+#line 376 "pir.l"
 { return TK_FLAG_NAMED; }
     YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 386 "pir.l"
+#line 377 "pir.l"
 { return TK_FLAG_FLAT; }
     YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 387 "pir.l"
+#line 378 "pir.l"
 { return TK_FLAG_INVOCANT; }
     YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 390 "pir.l"
+#line 381 "pir.l"
 { /* copy the string, remove the quotes. */
                yylval->sval = dupstrn(yytext + 1, yyleng - 2);
                return TK_STRINGC;
@@ -1949,27 +1973,27 @@
     YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 395 "pir.l"
+#line 386 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SYM_PREG; }
     YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 396 "pir.l"
+#line 387 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SYM_SREG; }
     YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 397 "pir.l"
+#line 388 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SYM_NREG; }
     YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 398 "pir.l"
+#line 389 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SYM_IREG; }
     YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 400 "pir.l"
+#line 391 "pir.l"
 { /* make the label Id available in the parser. remove the ":" first. */
                 yylval->sval = dupstrn(yytext, yyleng - 1);
                 return TK_LABEL;
@@ -1977,7 +2001,7 @@
     YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 405 "pir.l"
+#line 396 "pir.l"
 { /* make the Id or op available in the parser. */
                 yylval->sval = dupstr(yytext);
                 return is_parrot_op(yytext) ? TK_PARROT_OP : TK_IDENT;
@@ -1985,49 +2009,49 @@
     YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 411 "pir.l"
+#line 402 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 412 "pir.l"
+#line 403 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 413 "pir.l"
+#line 404 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 414 "pir.l"
+#line 405 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 415 "pir.l"
+#line 406 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 420 "pir.l"
+#line 411 "pir.l"
 { /* any character not covered in the rules above is an error. */
          lexer_state *my_lexer = yyget_extra(yyscanner);
          syntax_error(yyscanner, my_lexer, "Unexpected character");
        }
     YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 426 "pir.l"
+#line 417 "pir.l"
 { /* end of file, stop scanning. */
               yyterminate();
             }
     YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 430 "pir.l"
+#line 421 "pir.l"
 ECHO;
     YY_BREAK
-#line 2031 "pirlexer.c"
+#line 2055 "pirlexer.c"
 
     case YY_END_OF_BUFFER:
         {
@@ -2464,6 +2488,12 @@
     yyg->yy_hold_char = *++yyg->yy_c_buf_p;
 
 /* %% [19.0] update BOL and yylineno */
+    if ( c == '\n' )
+
+    do{ yylineno++;
+        yycolumn=0;
+    }while(0)
+;
 
     return c;
 }
@@ -3286,7 +3316,7 @@
 
 /* %ok-for-header */
 
-#line 430 "pir.l"
+#line 421 "pir.l"
 
 
 

Modified: trunk/compilers/pirc/new/pirlexer.h
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.h (original)
+++ trunk/compilers/pirc/new/pirlexer.h Wed Jul 30 09:37:41 2008
@@ -452,7 +452,7 @@
 #undef YY_DECL
 #endif
 
-#line 430 "pir.l"
+#line 421 "pir.l"
 
 
 #line 459 "pirlexer.h"

Modified: trunk/compilers/pirc/new/pirparser.c
==============================================================================
--- trunk/compilers/pirc/new/pirparser.c        (original)
+++ trunk/compilers/pirc/new/pirparser.c        Wed Jul 30 09:37:41 2008
@@ -282,6 +282,13 @@
 
 This is a complete rewrite of the parser for the PIR language.
 
+
+TODO:
+
+ * rename TK_SYM_?REG to TK_?REG (as there's no longer PASM registers)
+ * use a flex-generated line counter in the lexer instead of custom
+   code (this is in pir.l).
+
 =cut
 
 */
@@ -366,7 +373,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 82 "pir.y"
+#line 89 "pir.y"
 {
     double              dval;
     int                 ival;
@@ -381,7 +388,7 @@
     void               *fixme;
 }
 /* Line 187 of yacc.c.  */
-#line 385 "pirparser.c"
+#line 392 "pirparser.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -394,7 +401,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 398 "pirparser.c"
+#line 405 "pirparser.c"
 
 #ifdef short
 # undef short
@@ -782,34 +789,34 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   329,   329,   334,   335,   338,   339,   342,   343,   344,
-     345,   346,   347,   348,   351,   355,   361,   365,   372,   376,
-     377,   381,   383,   390,   391,   390,   397,   398,   402,   403,
-     407,   409,   411,   413,   415,   417,   419,   421,   423,   425,
-     427,   429,   434,   435,   436,   437,   440,   441,   444,   455,
-     456,   456,   461,   463,   465,   468,   469,   470,   471,   472,
-     473,   474,   475,   476,   477,   478,   479,   480,   483,   492,
-     496,   502,   508,   511,   536,   538,   540,   544,   546,   548,
-     550,   552,   557,   557,   561,   562,   565,   569,   575,   576,
-     580,   581,   584,   588,   590,   594,   601,   608,   609,   613,
-     615,   619,   620,   624,   628,   636,   642,   646,   648,   652,
-     656,   657,   662,   669,   670,   673,   686,   687,   691,   693,
-     697,   701,   703,   705,   711,   712,   719,   720,   724,   726,
-     730,   732,   736,   738,   740,   745,   746,   749,   756,   762,
-     764,   768,   769,   772,   774,   778,   780,   785,   790,   791,
-     795,   797,   801,   810,   811,   815,   817,   819,   821,   823,
-     830,   831,   835,   836,   839,   846,   847,   850,   851,   854,
-     858,   862,   868,   873,   874,   878,   880,   884,   885,   888,
-     894,   902,   910,   919,   920,   925,   927,   932,   937,   938,
-     942,   944,   948,   954,   955,   959,   961,   968,   969,   973,
-     977,   981,   982,   986,   988,   990,   992,  1002,  1003,  1004,
-    1007,  1008,  1011,  1012,  1013,  1016,  1017,  1018,  1019,  1020,
-    1021,  1024,  1025,  1026,  1027,  1030,  1031,  1034,  1035,  1036,
-    1037,  1040,  1041,  1044,  1045,  1046,  1049,  1050,  1051,  1052,
-    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1061,  1062,
-    1063,  1064,  1065,  1066,  1067,  1068,  1069,  1070,  1071,  1075,
-    1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,  1084,  1085,
-    1086,  1087,  1088
+       0,   336,   336,   341,   342,   345,   346,   349,   350,   351,
+     352,   353,   354,   355,   358,   362,   368,   372,   379,   383,
+     384,   388,   390,   397,   398,   397,   404,   405,   409,   410,
+     414,   416,   418,   420,   422,   424,   426,   428,   430,   432,
+     434,   436,   441,   442,   443,   444,   447,   448,   451,   462,
+     463,   463,   468,   470,   472,   475,   476,   477,   478,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,   490,   499,
+     503,   509,   515,   518,   543,   545,   547,   551,   553,   555,
+     557,   559,   564,   564,   568,   569,   572,   576,   582,   583,
+     587,   588,   591,   595,   597,   601,   608,   615,   616,   620,
+     622,   626,   627,   631,   635,   643,   649,   653,   655,   659,
+     663,   664,   669,   676,   677,   680,   693,   694,   698,   700,
+     704,   708,   710,   712,   718,   719,   726,   727,   731,   733,
+     737,   739,   743,   745,   747,   752,   753,   756,   763,   769,
+     771,   775,   776,   779,   781,   785,   787,   792,   797,   798,
+     802,   804,   808,   817,   818,   822,   824,   826,   828,   830,
+     837,   838,   842,   843,   846,   853,   854,   857,   858,   861,
+     865,   869,   875,   880,   881,   885,   887,   891,   892,   895,
+     901,   909,   917,   926,   927,   932,   934,   939,   944,   945,
+     949,   951,   955,   961,   962,   966,   968,   975,   976,   980,
+     984,   988,   989,   993,   995,   997,   999,  1009,  1010,  1011,
+    1014,  1015,  1018,  1019,  1020,  1023,  1024,  1025,  1026,  1027,
+    1028,  1031,  1032,  1033,  1034,  1037,  1038,  1041,  1042,  1043,
+    1044,  1047,  1048,  1051,  1052,  1053,  1056,  1057,  1058,  1059,
+    1060,  1061,  1062,  1063,  1064,  1065,  1066,  1067,  1068,  1069,
+    1070,  1071,  1072,  1073,  1074,  1075,  1076,  1077,  1078,  1082,
+    1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,
+    1093,  1094,  1095
 };
 #endif
 
@@ -2056,127 +2063,127 @@
   switch (yyn)
     {
         case 14:
-#line 352 "pir.y"
+#line 359 "pir.y"
     { set_pragma(PRAGMA_N_OPERATORS, (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 15:
-#line 356 "pir.y"
+#line 363 "pir.y"
     { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 16:
-#line 362 "pir.y"
+#line 369 "pir.y"
     { /*set_hll($2, $4);*/ ;}
     break;
 
   case 17:
-#line 366 "pir.y"
+#line 373 "pir.y"
     { set_hll_map((yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 19:
-#line 376 "pir.y"
+#line 383 "pir.y"
     { (yyval.fixme) = NULL; ;}
     break;
 
   case 20:
-#line 378 "pir.y"
+#line 385 "pir.y"
     { (yyval.fixme) = (yyvsp[(1) - (1)].fixme); ;}
     break;
 
   case 21:
-#line 382 "pir.y"
+#line 389 "pir.y"
     { (yyval.fixme) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
   case 22:
-#line 384 "pir.y"
+#line 391 "pir.y"
     { ;}
     break;
 
   case 23:
-#line 390 "pir.y"
+#line 397 "pir.y"
     { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 24:
-#line 391 "pir.y"
+#line 398 "pir.y"
     { set_sub_flag(lexer, (yyvsp[(4) - (5)].ival)); ;}
     break;
 
   case 28:
-#line 402 "pir.y"
+#line 409 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 29:
-#line 404 "pir.y"
+#line 411 "pir.y"
     { (yyval.ival) |= (yyvsp[(2) - (2)].ival); ;}
     break;
 
   case 30:
-#line 408 "pir.y"
+#line 415 "pir.y"
     { (yyval.ival) = SUB_FLAG_ANON;;}
     break;
 
   case 31:
-#line 410 "pir.y"
+#line 417 "pir.y"
     { (yyval.ival) = SUB_FLAG_INIT; ;}
     break;
 
   case 32:
-#line 412 "pir.y"
+#line 419 "pir.y"
     { (yyval.ival) = SUB_FLAG_LOAD; ;}
     break;
 
   case 33:
-#line 414 "pir.y"
+#line 421 "pir.y"
     { (yyval.ival) = SUB_FLAG_MAIN; ;}
     break;
 
   case 34:
-#line 416 "pir.y"
+#line 423 "pir.y"
     { (yyval.ival) = SUB_FLAG_METHOD; ;}
     break;
 
   case 35:
-#line 418 "pir.y"
+#line 425 "pir.y"
     { (yyval.ival) = SUB_FLAG_LEX; ;}
     break;
 
   case 36:
-#line 420 "pir.y"
+#line 427 "pir.y"
     { (yyval.ival) = SUB_FLAG_POSTCOMP; ;}
     break;
 
   case 37:
-#line 422 "pir.y"
+#line 429 "pir.y"
     { (yyval.ival) = SUB_FLAG_IMMEDIATE; ;}
     break;
 
   case 38:
-#line 424 "pir.y"
+#line 431 "pir.y"
     { (yyval.ival) = SUB_FLAG_MULTI; ;}
     break;
 
   case 39:
-#line 426 "pir.y"
+#line 433 "pir.y"
     { (yyval.ival) = SUB_FLAG_OUTER;  set_sub_outer(lexer, (yyvsp[(3) - 
(4)].sval)); ;}
     break;
 
   case 40:
-#line 428 "pir.y"
+#line 435 "pir.y"
     { (yyval.ival) = SUB_FLAG_VTABLE; set_sub_vtable(lexer, (yyvsp[(2) - 
(2)].sval)); ;}
     break;
 
   case 41:
-#line 430 "pir.y"
+#line 437 "pir.y"
     { (yyval.ival) = SUB_FLAG_LEXID; /* do something with this */ ;}
     break;
 
   case 48:
-#line 445 "pir.y"
+#line 452 "pir.y"
     { /* set_param_flag($2, $3);
                           IF_NAMED_PARAM_SET_ALIAS($2, $3);
                           */
@@ -2184,22 +2191,22 @@
     break;
 
   case 50:
-#line 456 "pir.y"
+#line 463 "pir.y"
     { new_instr(lexer); ;}
     break;
 
   case 52:
-#line 462 "pir.y"
+#line 469 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 53:
-#line 464 "pir.y"
+#line 471 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 68:
-#line 484 "pir.y"
+#line 491 "pir.y"
     { if (lexer->parse_errors > MAX_NUM_ERRORS) {
                               fprintf(stderr, "Too many errors. Compilation 
aborted.\n");
                               exit(EXIT_FAILURE); /* fix: bail out and free() 
all memory */
@@ -2209,108 +2216,108 @@
     break;
 
   case 69:
-#line 493 "pir.y"
+#line 500 "pir.y"
     { set_instr(lexer, "null");
                           add_operand(lexer, expr_from_target((yyvsp[(2) - 
(3)].targ)));
                         ;}
     break;
 
   case 70:
-#line 497 "pir.y"
+#line 504 "pir.y"
     { set_instr(lexer, "null");
                           add_operand(lexer, expr_from_target((yyvsp[(1) - 
(4)].targ)));
                         ;}
     break;
 
   case 71:
-#line 503 "pir.y"
+#line 510 "pir.y"
     { set_instr(lexer, "get_results");
                           add_operand(lexer, expr_from_target((yyvsp[(2) - 
(3)].targ)));
                         ;}
     break;
 
   case 73:
-#line 512 "pir.y"
+#line 519 "pir.y"
     { add_first_operand(lexer, expr_from_target((yyvsp[(1) - (3)].targ))); ;}
     break;
 
   case 74:
-#line 537 "pir.y"
+#line 544 "pir.y"
     { assign(lexer, RHS_AUGMENT, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - 
(2)].expr)); ;}
     break;
 
   case 75:
-#line 539 "pir.y"
+#line 546 "pir.y"
     { assign(lexer, RHS_SETKEYED, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - 
(3)].expr)); ;}
     break;
 
   case 76:
-#line 541 "pir.y"
+#line 548 "pir.y"
     { /* nothing to do */ ;}
     break;
 
   case 77:
-#line 545 "pir.y"
+#line 552 "pir.y"
     { assign(lexer, RHS_UNOP, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - 
(2)].expr)); ;}
     break;
 
   case 78:
-#line 547 "pir.y"
+#line 554 "pir.y"
     { assign(lexer, RHS_SIMPLE, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 79:
-#line 549 "pir.y"
+#line 556 "pir.y"
     { assign(lexer, RHS_BINOP, (yyvsp[(2) - (3)].sval), (yyvsp[(1) - 
(3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 80:
-#line 551 "pir.y"
+#line 558 "pir.y"
     { assign(lexer, RHS_GETKEYED, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - 
(2)].expr)); ;}
     break;
 
   case 81:
-#line 553 "pir.y"
+#line 560 "pir.y"
     { /* nothing to do */ ;}
     break;
 
   case 82:
-#line 557 "pir.y"
+#line 564 "pir.y"
     { set_instr(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 87:
-#line 570 "pir.y"
+#line 577 "pir.y"
     { add_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 88:
-#line 575 "pir.y"
+#line 582 "pir.y"
     { /* nothing to do */;}
     break;
 
   case 89:
-#line 577 "pir.y"
+#line 584 "pir.y"
     { add_operand(lexer, (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 92:
-#line 585 "pir.y"
+#line 592 "pir.y"
     { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
     break;
 
   case 93:
-#line 589 "pir.y"
+#line 596 "pir.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 94:
-#line 591 "pir.y"
+#line 598 "pir.y"
     { (yyval.expr) = add_key((yyvsp[(1) - (3)].expr), (yyvsp[(3) - 
(3)].expr)); ;}
     break;
 
   case 95:
-#line 595 "pir.y"
+#line 602 "pir.y"
     { /* it was "unless", so "invert" the opcode */
                            if ((yyvsp[(1) - (5)].ival) > 0) {
                               invert_instr(lexer);
@@ -2320,7 +2327,7 @@
     break;
 
   case 96:
-#line 602 "pir.y"
+#line 609 "pir.y"
     { set_instr(lexer, (yyvsp[(1) - (5)].sval));
                            add_operand(lexer, (yyvsp[(2) - (5)].expr));
                            add_operand(lexer, expr_from_ident((yyvsp[(4) - 
(5)].sval)));
@@ -2328,34 +2335,34 @@
     break;
 
   case 97:
-#line 608 "pir.y"
+#line 615 "pir.y"
     { (yyval.ival) = 0; /* no need to invert */ ;}
     break;
 
   case 98:
-#line 609 "pir.y"
+#line 616 "pir.y"
     { (yyval.ival) = 1; /* yes, invert opname */ ;}
     break;
 
   case 99:
-#line 614 "pir.y"
+#line 621 "pir.y"
     { (yyval.sval) = "if_null"; ;}
     break;
 
   case 100:
-#line 616 "pir.y"
+#line 623 "pir.y"
     { (yyval.sval) = "unless_null"; ;}
     break;
 
   case 103:
-#line 625 "pir.y"
+#line 632 "pir.y"
     { set_instr(lexer, "if");
                            add_operand(lexer, (yyvsp[(1) - (1)].expr));
                          ;}
     break;
 
   case 104:
-#line 629 "pir.y"
+#line 636 "pir.y"
     { set_instr(lexer, (yyvsp[(2) - (3)].sval));
                            add_operand(lexer, (yyvsp[(1) - (3)].expr));
                            add_operand(lexer, (yyvsp[(3) - (3)].expr));
@@ -2363,49 +2370,49 @@
     break;
 
   case 105:
-#line 637 "pir.y"
+#line 644 "pir.y"
     { set_instr(lexer, "branch");
                            add_operand(lexer, expr_from_ident((yyvsp[(2) - 
(3)].sval)));
                          ;}
     break;
 
   case 106:
-#line 643 "pir.y"
+#line 650 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].targ)); 
;}
     break;
 
   case 107:
-#line 647 "pir.y"
+#line 654 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 108:
-#line 649 "pir.y"
+#line 656 "pir.y"
     { (yyval.targ) = add_local((yyvsp[(1) - (3)].targ), (yyvsp[(3) - 
(3)].targ)); ;}
     break;
 
   case 109:
-#line 653 "pir.y"
+#line 660 "pir.y"
     { (yyval.targ) = new_local((yyvsp[(1) - (2)].sval), (yyvsp[(2) - 
(2)].ival)); ;}
     break;
 
   case 110:
-#line 656 "pir.y"
+#line 663 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 111:
-#line 657 "pir.y"
+#line 664 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
   case 112:
-#line 663 "pir.y"
+#line 670 "pir.y"
     { set_lex_flag((yyvsp[(4) - (5)].targ), (yyvsp[(2) - (5)].sval)); ;}
     break;
 
   case 115:
-#line 678 "pir.y"
+#line 685 "pir.y"
     { /* $4 contains an invocation object */
                              set_invocation_args((yyvsp[(4) - (8)].invo), 
(yyvsp[(3) - (8)].argm));
                              set_invocation_results((yyvsp[(4) - (8)].invo), 
(yyvsp[(6) - (8)].targ));
@@ -2414,171 +2421,171 @@
     break;
 
   case 116:
-#line 686 "pir.y"
+#line 693 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 117:
-#line 688 "pir.y"
+#line 695 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 118:
-#line 692 "pir.y"
+#line 699 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 119:
-#line 694 "pir.y"
+#line 701 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - 
(2)].argm)); ;}
     break;
 
   case 120:
-#line 698 "pir.y"
+#line 705 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 121:
-#line 702 "pir.y"
+#line 709 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), 
(yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 122:
-#line 704 "pir.y"
+#line 711 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
   case 123:
-#line 707 "pir.y"
+#line 714 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METH, (yyvsp[(2) - (5)].targ), 
(yyvsp[(5) - (5)].targ)); ;}
     break;
 
   case 124:
-#line 711 "pir.y"
+#line 718 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 125:
-#line 713 "pir.y"
+#line 720 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
   case 126:
-#line 719 "pir.y"
+#line 726 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 127:
-#line 721 "pir.y"
+#line 728 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 128:
-#line 725 "pir.y"
+#line 732 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 129:
-#line 727 "pir.y"
+#line 734 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - 
(2)].targ)); ;}
     break;
 
   case 130:
-#line 731 "pir.y"
+#line 738 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 131:
-#line 733 "pir.y"
+#line 740 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 132:
-#line 737 "pir.y"
+#line 744 "pir.y"
     { set_invocation_results((yyvsp[(3) - (4)].invo), (yyvsp[(1) - 
(4)].targ)); ;}
     break;
 
   case 133:
-#line 739 "pir.y"
+#line 746 "pir.y"
     { set_invocation_results((yyvsp[(3) - (4)].invo), (yyvsp[(1) - 
(4)].targ)); ;}
     break;
 
   case 134:
-#line 741 "pir.y"
+#line 748 "pir.y"
     { set_invocation_results((yyvsp[(1) - (2)].invo), NULL); ;}
     break;
 
   case 137:
-#line 750 "pir.y"
+#line 757 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METH, (yyvsp[(1) - (4)].targ), 
(yyvsp[(3) - (4)].targ));
                               set_invocation_args((yyval.invo), (yyvsp[(4) - 
(4)].argm));
                             ;}
     break;
 
   case 138:
-#line 757 "pir.y"
+#line 764 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
                               set_invocation_args((yyval.invo), (yyvsp[(2) - 
(2)].argm));
                             ;}
     break;
 
   case 139:
-#line 763 "pir.y"
+#line 770 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 140:
-#line 765 "pir.y"
+#line 772 "pir.y"
     { (yyval.targ) = target_from_string((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 143:
-#line 773 "pir.y"
+#line 780 "pir.y"
     { (yyval.targ) = target_from_ident((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 144:
-#line 775 "pir.y"
+#line 782 "pir.y"
     { (yyval.targ) = reg(PMC_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 145:
-#line 779 "pir.y"
+#line 786 "pir.y"
     { (yyval.targ) = target_from_string((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 146:
-#line 781 "pir.y"
+#line 788 "pir.y"
     { (yyval.targ) = reg(STRING_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 147:
-#line 786 "pir.y"
+#line 793 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 148:
-#line 790 "pir.y"
+#line 797 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 149:
-#line 792 "pir.y"
+#line 799 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 150:
-#line 796 "pir.y"
+#line 803 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 151:
-#line 798 "pir.y"
+#line 805 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - 
(3)].targ)); ;}
     break;
 
   case 152:
-#line 802 "pir.y"
+#line 809 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (2)].targ);
                               set_param_flag((yyvsp[(1) - (2)].targ), 
(yyvsp[(2) - (2)].ival));
                               /* get the :named argument if necessary */
@@ -2587,110 +2594,110 @@
     break;
 
   case 153:
-#line 810 "pir.y"
+#line 817 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 154:
-#line 812 "pir.y"
+#line 819 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 155:
-#line 816 "pir.y"
+#line 823 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
   case 156:
-#line 818 "pir.y"
+#line 825 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
   case 157:
-#line 820 "pir.y"
+#line 827 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
   case 158:
-#line 822 "pir.y"
+#line 829 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
   case 159:
-#line 824 "pir.y"
+#line 831 "pir.y"
     { (yyval.ival) = TARGET_FLAG_NAMED;
                                    STORE_NAMED_ALIAS((yyvsp[(2) - (2)].sval));
                             ;}
     break;
 
   case 160:
-#line 830 "pir.y"
+#line 837 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 161:
-#line 832 "pir.y"
+#line 839 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 164:
-#line 840 "pir.y"
+#line 847 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT; ;}
     break;
 
   case 169:
-#line 855 "pir.y"
+#line 862 "pir.y"
     { (yyval.fixme) = invoke(lexer, CALL_RET);
                                set_invocation_args((yyval.fixme), (yyvsp[(2) - 
(3)].argm));
                              ;}
     break;
 
   case 170:
-#line 859 "pir.y"
+#line 866 "pir.y"
     { set_invocation_type((yyvsp[(2) - (3)].invo), CALL_TAIL); ;}
     break;
 
   case 171:
-#line 863 "pir.y"
+#line 870 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_YIELD);
                                 set_invocation_args((yyval.invo), (yyvsp[(2) - 
(3)].argm));
                               ;}
     break;
 
   case 172:
-#line 869 "pir.y"
+#line 876 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 173:
-#line 873 "pir.y"
+#line 880 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 174:
-#line 875 "pir.y"
+#line 882 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 175:
-#line 879 "pir.y"
+#line 886 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 176:
-#line 881 "pir.y"
+#line 888 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - 
(3)].argm)); ;}
     break;
 
   case 179:
-#line 889 "pir.y"
+#line 896 "pir.y"
     { (yyval.argm) = new_argument((yyvsp[(3) - (3)].expr));
                                  set_arg_named((yyval.argm), (yyvsp[(1) - 
(3)].sval));
                                ;}
     break;
 
   case 180:
-#line 895 "pir.y"
+#line 902 "pir.y"
     { (yyval.argm) = new_argument((yyvsp[(1) - (2)].expr));
                               set_arg_flag((yyval.argm), (yyvsp[(2) - 
(2)].ival));
                               IF_NAMED_ARG_SET_ALIAS((yyval.argm), (yyvsp[(2) 
- (2)].ival));
@@ -2698,459 +2705,459 @@
     break;
 
   case 181:
-#line 905 "pir.y"
+#line 912 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_RET);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - 
(5)].argm));
                             ;}
     break;
 
   case 182:
-#line 913 "pir.y"
+#line 920 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - 
(5)].argm));
                             ;}
     break;
 
   case 183:
-#line 919 "pir.y"
+#line 926 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 184:
-#line 921 "pir.y"
+#line 928 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 185:
-#line 926 "pir.y"
+#line 933 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 186:
-#line 928 "pir.y"
+#line 935 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - 
(2)].argm)); ;}
     break;
 
   case 187:
-#line 933 "pir.y"
+#line 940 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 188:
-#line 937 "pir.y"
+#line 944 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 189:
-#line 939 "pir.y"
+#line 946 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 190:
-#line 943 "pir.y"
+#line 950 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 191:
-#line 945 "pir.y"
+#line 952 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - 
(2)].argm)); ;}
     break;
 
   case 192:
-#line 949 "pir.y"
+#line 956 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 193:
-#line 954 "pir.y"
+#line 961 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 194:
-#line 956 "pir.y"
+#line 963 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 195:
-#line 960 "pir.y"
+#line 967 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
   case 196:
-#line 962 "pir.y"
+#line 969 "pir.y"
     { (yyval.ival) = ARG_FLAG_NAMED;
                           STORE_NAMED_ALIAS((yyvsp[(2) - (2)].sval));
                         ;}
     break;
 
   case 197:
-#line 968 "pir.y"
+#line 975 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
   case 198:
-#line 970 "pir.y"
+#line 977 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
   case 199:
-#line 974 "pir.y"
+#line 981 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
   case 200:
-#line 978 "pir.y"
+#line 985 "pir.y"
     { define_const(lexer, (yyvsp[(2) - (2)].constval), !GLOBALCONST); ;}
     break;
 
   case 202:
-#line 983 "pir.y"
+#line 990 "pir.y"
     { define_const(lexer, (yyvsp[(2) - (3)].constval), GLOBALCONST); ;}
     break;
 
   case 203:
-#line 987 "pir.y"
+#line 994 "pir.y"
     { (yyval.constval) = new_const(INT_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].ival)); ;}
     break;
 
   case 204:
-#line 989 "pir.y"
+#line 996 "pir.y"
     { (yyval.constval) = new_const(NUM_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].dval)); ;}
     break;
 
   case 205:
-#line 991 "pir.y"
+#line 998 "pir.y"
     { (yyval.constval) = new_const(PMC_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 206:
-#line 993 "pir.y"
+#line 1000 "pir.y"
     { (yyval.constval) = new_const(STRING_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 207:
-#line 1002 "pir.y"
+#line 1009 "pir.y"
     { (yyval.expr) = expr_from_const((yyvsp[(1) - (1)].constval)); ;}
     break;
 
   case 208:
-#line 1003 "pir.y"
+#line 1010 "pir.y"
     { (yyval.expr) = expr_from_target((yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 209:
-#line 1004 "pir.y"
+#line 1011 "pir.y"
     { (yyval.expr) = expr_from_ident((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 210:
-#line 1007 "pir.y"
+#line 1014 "pir.y"
     { (yyval.expr) = expr_from_target((yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 211:
-#line 1008 "pir.y"
+#line 1015 "pir.y"
     { (yyval.expr) = expr_from_const((yyvsp[(1) - (1)].constval)); ;}
     break;
 
   case 212:
-#line 1011 "pir.y"
+#line 1018 "pir.y"
     { (yyval.constval) = new_const(STRING_TYPE, NULL, (yyvsp[(1) - 
(1)].sval)); ;}
     break;
 
   case 213:
-#line 1012 "pir.y"
+#line 1019 "pir.y"
     { (yyval.constval) = new_const(INT_TYPE, NULL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 214:
-#line 1013 "pir.y"
+#line 1020 "pir.y"
     { (yyval.constval) = new_const(NUM_TYPE, NULL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
   case 215:
-#line 1016 "pir.y"
+#line 1023 "pir.y"
     { (yyval.sval) = "ne"; ;}
     break;
 
   case 216:
-#line 1017 "pir.y"
+#line 1024 "pir.y"
     { (yyval.sval) = "eq"; ;}
     break;
 
   case 217:
-#line 1018 "pir.y"
+#line 1025 "pir.y"
     { (yyval.sval) = "lt"; ;}
     break;
 
   case 218:
-#line 1019 "pir.y"
+#line 1026 "pir.y"
     { (yyval.sval) = "le"; ;}
     break;
 
   case 219:
-#line 1020 "pir.y"
+#line 1027 "pir.y"
     { (yyval.sval) = "ge"; ;}
     break;
 
   case 220:
-#line 1021 "pir.y"
+#line 1028 "pir.y"
     { (yyval.sval) = "gt"; ;}
     break;
 
   case 221:
-#line 1024 "pir.y"
+#line 1031 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 222:
-#line 1025 "pir.y"
+#line 1032 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 223:
-#line 1026 "pir.y"
+#line 1033 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
   case 224:
-#line 1027 "pir.y"
+#line 1034 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
   case 225:
-#line 1030 "pir.y"
+#line 1037 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 226:
-#line 1031 "pir.y"
+#line 1038 "pir.y"
     { (yyval.targ) = new_target(UNKNOWN_TYPE, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 227:
-#line 1034 "pir.y"
+#line 1041 "pir.y"
     { (yyval.targ) = reg(PMC_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 228:
-#line 1035 "pir.y"
+#line 1042 "pir.y"
     { (yyval.targ) = reg(NUM_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 229:
-#line 1036 "pir.y"
+#line 1043 "pir.y"
     { (yyval.targ) = reg(INT_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 230:
-#line 1037 "pir.y"
+#line 1044 "pir.y"
     { (yyval.targ) = reg(STRING_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 233:
-#line 1044 "pir.y"
+#line 1051 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
   case 234:
-#line 1045 "pir.y"
+#line 1052 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
   case 235:
-#line 1046 "pir.y"
+#line 1053 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
   case 236:
-#line 1049 "pir.y"
+#line 1056 "pir.y"
     { (yyval.sval) = "add"; ;}
     break;
 
   case 237:
-#line 1050 "pir.y"
+#line 1057 "pir.y"
     { (yyval.sval) = "sub"; ;}
     break;
 
   case 238:
-#line 1051 "pir.y"
+#line 1058 "pir.y"
     { (yyval.sval) = "div"; ;}
     break;
 
   case 239:
-#line 1052 "pir.y"
+#line 1059 "pir.y"
     { (yyval.sval) = "mul"; ;}
     break;
 
   case 240:
-#line 1053 "pir.y"
+#line 1060 "pir.y"
     { (yyval.sval) = "mod"; ;}
     break;
 
   case 241:
-#line 1054 "pir.y"
+#line 1061 "pir.y"
     { (yyval.sval) = "bor"; ;}
     break;
 
   case 242:
-#line 1055 "pir.y"
+#line 1062 "pir.y"
     { (yyval.sval) = "band"; ;}
     break;
 
   case 243:
-#line 1056 "pir.y"
+#line 1063 "pir.y"
     { (yyval.sval) = "bxor"; ;}
     break;
 
   case 244:
-#line 1057 "pir.y"
+#line 1064 "pir.y"
     { (yyval.sval) = "pow"; ;}
     break;
 
   case 245:
-#line 1058 "pir.y"
+#line 1065 "pir.y"
     { (yyval.sval) = "concat"; ;}
     break;
 
   case 246:
-#line 1059 "pir.y"
+#line 1066 "pir.y"
     { (yyval.sval) = "lsr"; ;}
     break;
 
   case 247:
-#line 1060 "pir.y"
+#line 1067 "pir.y"
     { (yyval.sval) = "shr"; ;}
     break;
 
   case 248:
-#line 1061 "pir.y"
+#line 1068 "pir.y"
     { (yyval.sval) = "shl"; ;}
     break;
 
   case 249:
-#line 1062 "pir.y"
+#line 1069 "pir.y"
     { (yyval.sval) = "or";  ;}
     break;
 
   case 250:
-#line 1063 "pir.y"
+#line 1070 "pir.y"
     { (yyval.sval) = "and"; ;}
     break;
 
   case 251:
-#line 1064 "pir.y"
+#line 1071 "pir.y"
     { (yyval.sval) = "fdiv"; ;}
     break;
 
   case 252:
-#line 1065 "pir.y"
+#line 1072 "pir.y"
     { (yyval.sval) = "xor"; ;}
     break;
 
   case 253:
-#line 1066 "pir.y"
+#line 1073 "pir.y"
     { (yyval.sval) = "iseq"; ;}
     break;
 
   case 254:
-#line 1067 "pir.y"
+#line 1074 "pir.y"
     { (yyval.sval) = "isle"; ;}
     break;
 
   case 255:
-#line 1068 "pir.y"
+#line 1075 "pir.y"
     { (yyval.sval) = "islt"; ;}
     break;
 
   case 256:
-#line 1069 "pir.y"
+#line 1076 "pir.y"
     { (yyval.sval) = "isge"; ;}
     break;
 
   case 257:
-#line 1070 "pir.y"
+#line 1077 "pir.y"
     { (yyval.sval) = "isgt"; ;}
     break;
 
   case 258:
-#line 1071 "pir.y"
+#line 1078 "pir.y"
     { (yyval.sval) = "isne"; ;}
     break;
 
   case 259:
-#line 1075 "pir.y"
+#line 1082 "pir.y"
     { (yyval.sval) = "add"; ;}
     break;
 
   case 260:
-#line 1076 "pir.y"
+#line 1083 "pir.y"
     { (yyval.sval) = "sub"; ;}
     break;
 
   case 261:
-#line 1077 "pir.y"
+#line 1084 "pir.y"
     { (yyval.sval) = "mul"; ;}
     break;
 
   case 262:
-#line 1078 "pir.y"
+#line 1085 "pir.y"
     { (yyval.sval) = "mod"; ;}
     break;
 
   case 263:
-#line 1079 "pir.y"
+#line 1086 "pir.y"
     { (yyval.sval) = "pow"; ;}
     break;
 
   case 264:
-#line 1080 "pir.y"
+#line 1087 "pir.y"
     { (yyval.sval) = "div"; ;}
     break;
 
   case 265:
-#line 1081 "pir.y"
+#line 1088 "pir.y"
     { (yyval.sval) = "fdiv"; ;}
     break;
 
   case 266:
-#line 1082 "pir.y"
+#line 1089 "pir.y"
     { (yyval.sval) = "bor"; ;}
     break;
 
   case 267:
-#line 1083 "pir.y"
+#line 1090 "pir.y"
     { (yyval.sval) = "band" ;}
     break;
 
   case 268:
-#line 1084 "pir.y"
+#line 1091 "pir.y"
     { (yyval.sval) = "bxor"; ;}
     break;
 
   case 269:
-#line 1085 "pir.y"
+#line 1092 "pir.y"
     { (yyval.sval) = "concat"; ;}
     break;
 
   case 270:
-#line 1086 "pir.y"
+#line 1093 "pir.y"
     { (yyval.sval) = "shr"; ;}
     break;
 
   case 271:
-#line 1087 "pir.y"
+#line 1094 "pir.y"
     { (yyval.sval) = "shl"; ;}
     break;
 
   case 272:
-#line 1088 "pir.y"
+#line 1095 "pir.y"
     { (yyval.sval) = "lsr"; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3154 "pirparser.c"
+#line 3161 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3364,7 +3371,7 @@
 }
 
 
-#line 1090 "pir.y"
+#line 1097 "pir.y"
 
 
 

Modified: trunk/compilers/pirc/new/pirparser.h
==============================================================================
--- trunk/compilers/pirc/new/pirparser.h        (original)
+++ trunk/compilers/pirc/new/pirparser.h        Wed Jul 30 09:37:41 2008
@@ -238,7 +238,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 82 "pir.y"
+#line 89 "pir.y"
 {
     double              dval;
     int                 ival;

Reply via email to