Author: kjs
Date: Wed Jul 30 09:44:25 2008
New Revision: 29878

Modified:
   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] rename TK_SYM_?REG to TK_?REG

+ remove update_location() function, as this is built-in in flex.
+ fix alignment a bit
+ change alias of TK_PARROT_OP into "parrot instruction" for better error 
message.

Modified: trunk/compilers/pirc/new/pir.l
==============================================================================
--- trunk/compilers/pirc/new/pir.l      (original)
+++ trunk/compilers/pirc/new/pir.l      Wed Jul 30 09:44:25 2008
@@ -101,35 +101,6 @@
 
 =over 4
 
-=item C<update_location>
-
-Update the line number. The yytext buffer is scanned for '\n'
-characters; for each one, the line number is incremented. It's done this
-way, because we can't increment it in the rule for matching newlines, as
-a set of consecutive newlines are matched together and a single newline
-token is returned.
-
-*/
-static void
-update_location(void *yyscanner, lexer_state * const lexer) {
-    char const *iter = yyget_text(yyscanner);
-    assert(lexer != NULL);
-
-    /* TODO: is yytext NULL terminated? */
-    while (*iter != '\0') {
-        if (*iter == '\n') {
-            ++lexer->line_nr;
-            lexer->line_pos = 1; /* reset column */
-        }
-        else {
-            ++lexer->line_pos;
-        }
-        iter++;
-    }
-}
-
-/*
-
 =item C<dupstr>
 
 The C89 standard does not define a strdup() in the C library,
@@ -383,10 +354,10 @@
                return TK_STRINGC;
              }
 
-"$P"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_SYM_PREG; }
-"$S"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_SYM_SREG; }
-"$N"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_SYM_NREG; }
-"$I"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_SYM_IREG; }
+"$P"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_PREG; }
+"$S"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_SREG; }
+"$N"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_NREG; }
+"$I"{DIGIT}+  { yylval->ival = atoi(yytext + 2); return TK_IREG; }
 
 {IDENT}":"    { /* make the label Id available in the parser. remove the ":" 
first. */
                 yylval->sval = dupstrn(yytext, yyleng - 1);

Modified: trunk/compilers/pirc/new/pir.y
==============================================================================
--- trunk/compilers/pirc/new/pir.y      (original)
+++ trunk/compilers/pirc/new/pir.y      Wed Jul 30 09:44:25 2008
@@ -15,11 +15,6 @@
 
 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)
-
 =cut
 
 */
@@ -99,48 +94,48 @@
 }
 
 
-%token <sval> TK_LABEL  "label"
-       TK_NL            "\n"
+%token <sval> TK_LABEL      "label"
+       TK_NL                "\n"
 
-%token TK_HLL           ".HLL"
-       TK_HLL_MAP       ".HLL_map"
-       TK_N_OPERATORS   "n_operators"
-       TK_PRAGMA        ".pragma"
-       TK_LOADLIB       ".loadlib"
-
-%token TK_SUB           ".sub"
-       TK_END           ".end"
-       TK_PARAM         ".param"
-       TK_LEX           ".lex"
-       TK_LOCAL         ".local"
-       TK_NAMESPACE     ".namespace"
-       TK_INVOCANT      ".invocant"
-       TK_METH_CALL     ".meth_call"
-       TK_GLOBALCONST   ".globalconst"
-       TK_CONST         ".const"
-       TK_RETURN        ".return"
-       TK_YIELD         ".yield"
-       TK_BEGIN_YIELD   ".begin_yield"
-       TK_END_YIELD     ".end_yield"
-       TK_BEGIN_RETURN  ".begin_return"
-       TK_END_RETURN    ".end_return"
-       TK_BEGIN_CALL    ".begin_call"
-       TK_END_CALL      ".end_call"
-       TK_GET_RESULTS   ".get_results"
-       TK_CALL          ".call"
-       TK_ARG           ".arg"
-       TK_RESULT        ".result"
-       TK_NCI_CALL      ".nci_call"
-
-%token <sval> TK_IDENT         "identifier"
-       <sval> TK_STRINGC       "string constant"
-       <ival> TK_INTC          "integer constant"
-       <dval> TK_NUMC          "number constant"
-       <ival> TK_SYM_PREG      "Symbolic PMC register"
-       <ival> TK_SYM_NREG      "Symbolic number register"
-       <ival> TK_SYM_SREG      "Symbolic string register"
-       <ival> TK_SYM_IREG      "Symbolic integer register"
-       <sval> TK_PARROT_OP     "parrot op"
+%token TK_HLL               ".HLL"
+       TK_HLL_MAP           ".HLL_map"
+       TK_N_OPERATORS       "n_operators"
+       TK_PRAGMA            ".pragma"
+       TK_LOADLIB           ".loadlib"
+
+%token TK_SUB               ".sub"
+       TK_END               ".end"
+       TK_PARAM             ".param"
+       TK_LEX               ".lex"
+       TK_LOCAL             ".local"
+       TK_NAMESPACE         ".namespace"
+       TK_INVOCANT          ".invocant"
+       TK_METH_CALL         ".meth_call"
+       TK_GLOBALCONST       ".globalconst"
+       TK_CONST             ".const"
+       TK_RETURN            ".return"
+       TK_YIELD             ".yield"
+       TK_BEGIN_YIELD       ".begin_yield"
+       TK_END_YIELD         ".end_yield"
+       TK_BEGIN_RETURN      ".begin_return"
+       TK_END_RETURN        ".end_return"
+       TK_BEGIN_CALL        ".begin_call"
+       TK_END_CALL          ".end_call"
+       TK_GET_RESULTS       ".get_results"
+       TK_CALL              ".call"
+       TK_ARG               ".arg"
+       TK_RESULT            ".result"
+       TK_NCI_CALL          ".nci_call"
+
+%token <sval> TK_IDENT      "identifier"
+       <sval> TK_STRINGC    "string constant"
+       <ival> TK_INTC       "integer constant"
+       <dval> TK_NUMC       "number constant"
+       <ival> TK_PREG       "Symbolic PMC register"
+       <ival> TK_NREG       "Symbolic number register"
+       <ival> TK_SREG       "Symbolic string register"
+       <ival> TK_IREG       "Symbolic integer register"
+       <sval> TK_PARROT_OP  "parrot instruction"
 
 %token TK_INT               "int"
        TK_NUM               "num"
@@ -776,13 +771,13 @@
 
 invokable            : identifier
                             { $$ = target_from_ident($1); }
-                     | TK_SYM_PREG
+                     | TK_PREG
                             { $$ = reg(PMC_TYPE, $1, 0); }
                      ;
 
 string_object        : TK_STRINGC
                             { $$ = target_from_string($1); }
-                     | TK_SYM_SREG
+                     | TK_SREG
                             { $$ = reg(STRING_TYPE, $1, 0); }
                      ;
 
@@ -1036,10 +1031,10 @@
             | identifier     { $$ = new_target(UNKNOWN_TYPE, $1); }
             ;
 
-reg         : TK_SYM_PREG    { $$ = reg(PMC_TYPE, $1, 0); }
-            | TK_SYM_NREG    { $$ = reg(NUM_TYPE, $1, 0); }
-            | TK_SYM_IREG    { $$ = reg(INT_TYPE, $1, 0); }
-            | TK_SYM_SREG    { $$ = reg(STRING_TYPE, $1, 0); }
+reg         : TK_PREG    { $$ = reg(PMC_TYPE, $1, 0); }
+            | TK_NREG    { $$ = reg(NUM_TYPE, $1, 0); }
+            | TK_IREG    { $$ = reg(INT_TYPE, $1, 0); }
+            | TK_SREG    { $$ = reg(STRING_TYPE, $1, 0); }
             ;
 
 identifier  : TK_IDENT

Modified: trunk/compilers/pirc/new/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.c (original)
+++ trunk/compilers/pirc/new/pirlexer.c Wed Jul 30 09:44:25 2008
@@ -801,19 +801,19 @@
 
 static yyconst flex_int16_t yy_rule_linenum[114] =
     {   0,
-      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,
+      233,  235,  239,  240,  241,  242,  243,  244,  245,  246,
+      247,  248,  249,  250,  252,  253,  254,  255,  257,  258,
+      259,  260,  261,  262,  263,  264,  265,  266,  267,  268,
+      270,  273,  274,  275,  277,  278,  279,  280,  281,  282,
+      283,  284,  285,  286,  287,  289,  290,  291,  292,  293,
+      295,  296,  297,  298,  300,  301,  302,  304,  305,  306,
+      307,  308,  309,  310,  311,  313,  314,  315,  316,  317,
+      318,  319,  320,  321,  322,  323,  324,  325,  326,  327,
+      328,  330,  331,  332,  333,  334,  335,  336,  337,  338,
+      339,  340,  341,  343,  344,  345,  346,  347,  348,  349,
 
-      381,  386,  387,  388,  389,  391,  396,  402,  403,  404,
-      405,  406,  411
+      352,  357,  358,  359,  360,  362,  367,  373,  374,  375,
+      376,  377,  382
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -927,35 +927,6 @@
 
 =over 4
 
-=item C<update_location>
-
-Update the line number. The yytext buffer is scanned for '\n'
-characters; for each one, the line number is incremented. It's done this
-way, because we can't increment it in the rule for matching newlines, as
-a set of consecutive newlines are matched together and a single newline
-token is returned.
-
-*/
-static void
-update_location(void *yyscanner, lexer_state * const lexer) {
-    char const *iter = yyget_text(yyscanner);
-    assert(lexer != NULL);
-
-    /* TODO: is yytext NULL terminated? */
-    while (*iter != '\0') {
-        if (*iter == '\n') {
-            ++lexer->line_nr;
-            lexer->line_pos = 1; /* reset column */
-        }
-        else {
-            ++lexer->line_pos;
-        }
-        iter++;
-    }
-}
-
-/*
-
 =item C<dupstr>
 
 The C89 standard does not define a strdup() in the C library,
@@ -1034,7 +1005,7 @@
 /* make yywrap() always return true. */
 /* always show warnings if something's wrong with our spec. */
 /* create a scanner in debug mode */
-#line 1038 "pirlexer.c"
+#line 1009 "pirlexer.c"
 
 #define INITIAL 0
 
@@ -1330,11 +1301,11 @@
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 /* %% [7.0] user's declarations go here */
-#line 259 "pir.l"
+#line 230 "pir.l"
 
 
 
-#line 1338 "pirlexer.c"
+#line 1309 "pirlexer.c"
 
     yylval = yylval_param;
 
@@ -1460,512 +1431,512 @@
 
 case 1:
 YY_RULE_SETUP
-#line 262 "pir.l"
+#line 233 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 264 "pir.l"
+#line 235 "pir.l"
 { /* a set of continuous newlines yields a single newline token. */
                    return TK_NL;
                  }
     YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 268 "pir.l"
+#line 239 "pir.l"
 { return TK_ASSIGN_USHIFT; }
     YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 269 "pir.l"
+#line 240 "pir.l"
 { return TK_USHIFT; }
     YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 270 "pir.l"
+#line 241 "pir.l"
 { return TK_ASSIGN_RSHIFT; }
     YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 271 "pir.l"
+#line 242 "pir.l"
 { return TK_RSHIFT; }
     YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 272 "pir.l"
+#line 243 "pir.l"
 { return TK_LSHIFT; }
     YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 273 "pir.l"
+#line 244 "pir.l"
 { return TK_ARROW; }
     YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 274 "pir.l"
+#line 245 "pir.l"
 { return TK_EQ; }
     YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 275 "pir.l"
+#line 246 "pir.l"
 { return TK_NE; }
     YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 276 "pir.l"
+#line 247 "pir.l"
 { return TK_LE; }
     YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 277 "pir.l"
+#line 248 "pir.l"
 { return TK_GE; }
     YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 278 "pir.l"
+#line 249 "pir.l"
 { return TK_LT; }
     YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 279 "pir.l"
+#line 250 "pir.l"
 { return TK_GT; }
     YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 281 "pir.l"
+#line 252 "pir.l"
 { return TK_FDIV; }
     YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 282 "pir.l"
+#line 253 "pir.l"
 { return TK_AND; }
     YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 283 "pir.l"
+#line 254 "pir.l"
 { return TK_OR; }
     YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 284 "pir.l"
+#line 255 "pir.l"
 { return TK_XOR; }
     YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 286 "pir.l"
+#line 257 "pir.l"
 { return '+'; }
     YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 287 "pir.l"
+#line 258 "pir.l"
 { return '%'; }
     YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 288 "pir.l"
+#line 259 "pir.l"
 { return '*'; }
     YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 289 "pir.l"
+#line 260 "pir.l"
 { return '/'; }
     YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 290 "pir.l"
+#line 261 "pir.l"
 { return '!'; }
     YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 291 "pir.l"
+#line 262 "pir.l"
 { return '~'; }
     YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 292 "pir.l"
+#line 263 "pir.l"
 { return '-'; }
     YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 293 "pir.l"
+#line 264 "pir.l"
 { return '('; }
     YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 294 "pir.l"
+#line 265 "pir.l"
 { return ')'; }
     YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 295 "pir.l"
+#line 266 "pir.l"
 { return ','; }
     YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 296 "pir.l"
+#line 267 "pir.l"
 { return '['; }
     YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 297 "pir.l"
+#line 268 "pir.l"
 { return ']'; }
     YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 299 "pir.l"
+#line 270 "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 302 "pir.l"
+#line 273 "pir.l"
 { return '.'; }
     YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 303 "pir.l"
+#line 274 "pir.l"
 { return '='; }
     YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 304 "pir.l"
+#line 275 "pir.l"
 { return ';'; }
     YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 306 "pir.l"
+#line 277 "pir.l"
 { return TK_ASSIGN_INC; }
     YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 307 "pir.l"
+#line 278 "pir.l"
 { return TK_ASSIGN_DEC; }
     YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 308 "pir.l"
+#line 279 "pir.l"
 { return TK_ASSIGN_DIV; }
     YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 309 "pir.l"
+#line 280 "pir.l"
 { return TK_ASSIGN_MUL; }
     YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 310 "pir.l"
+#line 281 "pir.l"
 { return TK_ASSIGN_MOD; }
     YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 311 "pir.l"
+#line 282 "pir.l"
 { return TK_ASSIGN_POW; }
     YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 312 "pir.l"
+#line 283 "pir.l"
 { return TK_ASSIGN_BOR; }
     YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 313 "pir.l"
+#line 284 "pir.l"
 { return TK_ASSIGN_BAND; }
     YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 314 "pir.l"
+#line 285 "pir.l"
 { return TK_ASSIGN_FDIV; }
     YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 315 "pir.l"
+#line 286 "pir.l"
 { return TK_ASSIGN_BNOT; }
     YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 316 "pir.l"
+#line 287 "pir.l"
 { return TK_ASSIGN_CONC; }
     YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 318 "pir.l"
+#line 289 "pir.l"
 { return TK_IF; }
     YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 319 "pir.l"
+#line 290 "pir.l"
 { return TK_GOTO; }
     YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 320 "pir.l"
+#line 291 "pir.l"
 { return TK_N_OPERATORS; }
     YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 321 "pir.l"
+#line 292 "pir.l"
 { return TK_UNLESS; }
     YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 322 "pir.l"
+#line 293 "pir.l"
 { return TK_NULL; }
     YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 324 "pir.l"
+#line 295 "pir.l"
 { return TK_INT; }
     YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 325 "pir.l"
+#line 296 "pir.l"
 { return TK_NUM; }
     YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 326 "pir.l"
+#line 297 "pir.l"
 { return TK_PMC; }
     YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 327 "pir.l"
+#line 298 "pir.l"
 { return TK_STRING; }
     YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 329 "pir.l"
+#line 300 "pir.l"
 { return TK_ARG; }
     YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 330 "pir.l"
+#line 301 "pir.l"
 { return TK_CONST; }
     YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 331 "pir.l"
+#line 302 "pir.l"
 { return TK_END; }
     YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 333 "pir.l"
+#line 304 "pir.l"
 { return TK_GET_RESULTS; }
     YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 334 "pir.l"
+#line 305 "pir.l"
 { return TK_GLOBALCONST; }
     YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 335 "pir.l"
+#line 306 "pir.l"
 { return TK_HLL; }
     YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 336 "pir.l"
+#line 307 "pir.l"
 { return TK_HLL_MAP; }
     YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 337 "pir.l"
+#line 308 "pir.l"
 { return TK_INVOCANT; }
     YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 338 "pir.l"
+#line 309 "pir.l"
 { return TK_LEX; }
     YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 339 "pir.l"
+#line 310 "pir.l"
 { return TK_LOADLIB; }
     YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 340 "pir.l"
+#line 311 "pir.l"
 { return TK_LOCAL; }
     YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 342 "pir.l"
+#line 313 "pir.l"
 { return TK_METH_CALL; }
     YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 343 "pir.l"
+#line 314 "pir.l"
 { return TK_NAMESPACE; }
     YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 344 "pir.l"
+#line 315 "pir.l"
 { return TK_NCI_CALL; }
     YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 345 "pir.l"
+#line 316 "pir.l"
 { return TK_PARAM; }
     YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 346 "pir.l"
+#line 317 "pir.l"
 { return TK_BEGIN_CALL; }
     YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 347 "pir.l"
+#line 318 "pir.l"
 { return TK_BEGIN_RETURN; }
     YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 348 "pir.l"
+#line 319 "pir.l"
 { return TK_BEGIN_YIELD; }
     YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 349 "pir.l"
+#line 320 "pir.l"
 { return TK_CALL; }
     YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 350 "pir.l"
+#line 321 "pir.l"
 { return TK_END_CALL; }
     YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 351 "pir.l"
+#line 322 "pir.l"
 { return TK_END_RETURN; }
     YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 352 "pir.l"
+#line 323 "pir.l"
 { return TK_END_YIELD; }
     YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 353 "pir.l"
+#line 324 "pir.l"
 { return TK_PRAGMA; }
     YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 354 "pir.l"
+#line 325 "pir.l"
 { return TK_RESULT; }
     YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 355 "pir.l"
+#line 326 "pir.l"
 { return TK_RETURN; }
     YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 356 "pir.l"
+#line 327 "pir.l"
 { return TK_SUB; }
     YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 357 "pir.l"
+#line 328 "pir.l"
 { return TK_YIELD; }
     YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 359 "pir.l"
+#line 330 "pir.l"
 { return TK_FLAG_ANON; }
     YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 360 "pir.l"
+#line 331 "pir.l"
 { return TK_FLAG_INIT; }
     YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 361 "pir.l"
+#line 332 "pir.l"
 { return TK_FLAG_LOAD; }
     YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 362 "pir.l"
+#line 333 "pir.l"
 { return TK_FLAG_POSTCOMP; }
     YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 363 "pir.l"
+#line 334 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
     YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 364 "pir.l"
+#line 335 "pir.l"
 { return TK_FLAG_MAIN; }
     YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 365 "pir.l"
+#line 336 "pir.l"
 { return TK_FLAG_METHOD; }
     YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 366 "pir.l"
+#line 337 "pir.l"
 { return TK_FLAG_LEX; }
     YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 367 "pir.l"
+#line 338 "pir.l"
 { return TK_FLAG_OUTER; }
     YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 368 "pir.l"
+#line 339 "pir.l"
 { return TK_FLAG_VTABLE; }
     YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 369 "pir.l"
+#line 340 "pir.l"
 { return TK_FLAG_MULTI; }
     YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 370 "pir.l"
+#line 341 "pir.l"
 { return TK_FLAG_LEXID; }
     YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 372 "pir.l"
+#line 343 "pir.l"
 { return TK_FLAG_UNIQUE_REG; }
     YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 373 "pir.l"
+#line 344 "pir.l"
 { return TK_FLAG_OPTIONAL; }
     YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 374 "pir.l"
+#line 345 "pir.l"
 { return TK_FLAG_OPT_FLAG; }
     YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 375 "pir.l"
+#line 346 "pir.l"
 { return TK_FLAG_SLURPY; }
     YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 376 "pir.l"
+#line 347 "pir.l"
 { return TK_FLAG_NAMED; }
     YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 377 "pir.l"
+#line 348 "pir.l"
 { return TK_FLAG_FLAT; }
     YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 378 "pir.l"
+#line 349 "pir.l"
 { return TK_FLAG_INVOCANT; }
     YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 381 "pir.l"
+#line 352 "pir.l"
 { /* copy the string, remove the quotes. */
                yylval->sval = dupstrn(yytext + 1, yyleng - 2);
                return TK_STRINGC;
@@ -1973,27 +1944,27 @@
     YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 386 "pir.l"
-{ yylval->ival = atoi(yytext + 2); return TK_SYM_PREG; }
+#line 357 "pir.l"
+{ yylval->ival = atoi(yytext + 2); return TK_PREG; }
     YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 387 "pir.l"
-{ yylval->ival = atoi(yytext + 2); return TK_SYM_SREG; }
+#line 358 "pir.l"
+{ yylval->ival = atoi(yytext + 2); return TK_SREG; }
     YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 388 "pir.l"
-{ yylval->ival = atoi(yytext + 2); return TK_SYM_NREG; }
+#line 359 "pir.l"
+{ yylval->ival = atoi(yytext + 2); return TK_NREG; }
     YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 389 "pir.l"
-{ yylval->ival = atoi(yytext + 2); return TK_SYM_IREG; }
+#line 360 "pir.l"
+{ yylval->ival = atoi(yytext + 2); return TK_IREG; }
     YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 391 "pir.l"
+#line 362 "pir.l"
 { /* make the label Id available in the parser. remove the ":" first. */
                 yylval->sval = dupstrn(yytext, yyleng - 1);
                 return TK_LABEL;
@@ -2001,7 +1972,7 @@
     YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 396 "pir.l"
+#line 367 "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;
@@ -2009,49 +1980,49 @@
     YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 402 "pir.l"
+#line 373 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 403 "pir.l"
+#line 374 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 404 "pir.l"
+#line 375 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 405 "pir.l"
+#line 376 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 406 "pir.l"
+#line 377 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 411 "pir.l"
+#line 382 "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 417 "pir.l"
+#line 388 "pir.l"
 { /* end of file, stop scanning. */
               yyterminate();
             }
     YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 421 "pir.l"
+#line 392 "pir.l"
 ECHO;
     YY_BREAK
-#line 2055 "pirlexer.c"
+#line 2026 "pirlexer.c"
 
     case YY_END_OF_BUFFER:
         {
@@ -3316,7 +3287,7 @@
 
 /* %ok-for-header */
 
-#line 421 "pir.l"
+#line 392 "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:44:25 2008
@@ -452,7 +452,7 @@
 #undef YY_DECL
 #endif
 
-#line 421 "pir.l"
+#line 392 "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:44:25 2008
@@ -100,10 +100,10 @@
      TK_STRINGC = 289,
      TK_INTC = 290,
      TK_NUMC = 291,
-     TK_SYM_PREG = 292,
-     TK_SYM_NREG = 293,
-     TK_SYM_SREG = 294,
-     TK_SYM_IREG = 295,
+     TK_PREG = 292,
+     TK_NREG = 293,
+     TK_SREG = 294,
+     TK_IREG = 295,
      TK_PARROT_OP = 296,
      TK_INT = 297,
      TK_NUM = 298,
@@ -198,10 +198,10 @@
 #define TK_STRINGC 289
 #define TK_INTC 290
 #define TK_NUMC 291
-#define TK_SYM_PREG 292
-#define TK_SYM_NREG 293
-#define TK_SYM_SREG 294
-#define TK_SYM_IREG 295
+#define TK_PREG 292
+#define TK_NREG 293
+#define TK_SREG 294
+#define TK_IREG 295
 #define TK_PARROT_OP 296
 #define TK_INT 297
 #define TK_NUM 298
@@ -282,13 +282,6 @@
 
 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
 
 */
@@ -373,7 +366,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 89 "pir.y"
+#line 82 "pir.y"
 {
     double              dval;
     int                 ival;
@@ -388,7 +381,7 @@
     void               *fixme;
 }
 /* Line 187 of yacc.c.  */
-#line 392 "pirparser.c"
+#line 385 "pirparser.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -401,7 +394,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 405 "pirparser.c"
+#line 398 "pirparser.c"
 
 #ifdef short
 # undef short
@@ -789,34 +782,34 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       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
+       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
 };
 #endif
 
@@ -836,12 +829,12 @@
   "\"string constant\"", "\"integer constant\"", "\"number constant\"",
   "\"Symbolic PMC register\"", "\"Symbolic number register\"",
   "\"Symbolic string register\"", "\"Symbolic integer register\"",
-  "\"parrot op\"", "\"int\"", "\"num\"", "\"pmc\"", "\"string\"", "\"if\"",
-  "\"unless\"", "\"null\"", "\"goto\"", "\"=>\"", "\"!=\"", "\"==\"",
-  "\"<\"", "\"<=\"", "\">\"", "\">=\"", "\">>>\"", "\">>\"", "\"<<\"",
-  "\"//\"", "\"||\"", "\"&&\"", "\"~~\"", "\".\"", "\">>>=\"", "\">>=\"",
-  "\"<<=\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"%=\"", "\"**=\"", "\"/=\"",
-  "\"|=\"", "\"&=\"", "\"//=\"", "\"~=\"", "\".=\"", "\":init\"",
+  "\"parrot instruction\"", "\"int\"", "\"num\"", "\"pmc\"", "\"string\"",
+  "\"if\"", "\"unless\"", "\"null\"", "\"goto\"", "\"=>\"", "\"!=\"",
+  "\"==\"", "\"<\"", "\"<=\"", "\">\"", "\">=\"", "\">>>\"", "\">>\"",
+  "\"<<\"", "\"//\"", "\"||\"", "\"&&\"", "\"~~\"", "\".\"", "\">>>=\"",
+  "\">>=\"", "\"<<=\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"%=\"", "\"**=\"",
+  "\"/=\"", "\"|=\"", "\"&=\"", "\"//=\"", "\"~=\"", "\".=\"", "\":init\"",
   "\":load\"", "\":main\"", "\":anon\"", "\":method\"", "\":outer\"",
   "\":vtable\"", "\":lex\"", "\":multi\"", "\":postcomp\"",
   "\":immediate\"", "\":lexid\"", "\":unique_reg\"", "\":named\"",
@@ -2063,127 +2056,127 @@
   switch (yyn)
     {
         case 14:
-#line 359 "pir.y"
+#line 352 "pir.y"
     { set_pragma(PRAGMA_N_OPERATORS, (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 15:
-#line 363 "pir.y"
+#line 356 "pir.y"
     { load_library(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 16:
-#line 369 "pir.y"
+#line 362 "pir.y"
     { /*set_hll($2, $4);*/ ;}
     break;
 
   case 17:
-#line 373 "pir.y"
+#line 366 "pir.y"
     { set_hll_map((yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 19:
-#line 383 "pir.y"
+#line 376 "pir.y"
     { (yyval.fixme) = NULL; ;}
     break;
 
   case 20:
-#line 385 "pir.y"
+#line 378 "pir.y"
     { (yyval.fixme) = (yyvsp[(1) - (1)].fixme); ;}
     break;
 
   case 21:
-#line 389 "pir.y"
+#line 382 "pir.y"
     { (yyval.fixme) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
   case 22:
-#line 391 "pir.y"
+#line 384 "pir.y"
     { ;}
     break;
 
   case 23:
-#line 397 "pir.y"
+#line 390 "pir.y"
     { new_subr(lexer, (yyvsp[(2) - (2)].sval)); ;}
     break;
 
   case 24:
-#line 398 "pir.y"
+#line 391 "pir.y"
     { set_sub_flag(lexer, (yyvsp[(4) - (5)].ival)); ;}
     break;
 
   case 28:
-#line 409 "pir.y"
+#line 402 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 29:
-#line 411 "pir.y"
+#line 404 "pir.y"
     { (yyval.ival) |= (yyvsp[(2) - (2)].ival); ;}
     break;
 
   case 30:
-#line 415 "pir.y"
+#line 408 "pir.y"
     { (yyval.ival) = SUB_FLAG_ANON;;}
     break;
 
   case 31:
-#line 417 "pir.y"
+#line 410 "pir.y"
     { (yyval.ival) = SUB_FLAG_INIT; ;}
     break;
 
   case 32:
-#line 419 "pir.y"
+#line 412 "pir.y"
     { (yyval.ival) = SUB_FLAG_LOAD; ;}
     break;
 
   case 33:
-#line 421 "pir.y"
+#line 414 "pir.y"
     { (yyval.ival) = SUB_FLAG_MAIN; ;}
     break;
 
   case 34:
-#line 423 "pir.y"
+#line 416 "pir.y"
     { (yyval.ival) = SUB_FLAG_METHOD; ;}
     break;
 
   case 35:
-#line 425 "pir.y"
+#line 418 "pir.y"
     { (yyval.ival) = SUB_FLAG_LEX; ;}
     break;
 
   case 36:
-#line 427 "pir.y"
+#line 420 "pir.y"
     { (yyval.ival) = SUB_FLAG_POSTCOMP; ;}
     break;
 
   case 37:
-#line 429 "pir.y"
+#line 422 "pir.y"
     { (yyval.ival) = SUB_FLAG_IMMEDIATE; ;}
     break;
 
   case 38:
-#line 431 "pir.y"
+#line 424 "pir.y"
     { (yyval.ival) = SUB_FLAG_MULTI; ;}
     break;
 
   case 39:
-#line 433 "pir.y"
+#line 426 "pir.y"
     { (yyval.ival) = SUB_FLAG_OUTER;  set_sub_outer(lexer, (yyvsp[(3) - 
(4)].sval)); ;}
     break;
 
   case 40:
-#line 435 "pir.y"
+#line 428 "pir.y"
     { (yyval.ival) = SUB_FLAG_VTABLE; set_sub_vtable(lexer, (yyvsp[(2) - 
(2)].sval)); ;}
     break;
 
   case 41:
-#line 437 "pir.y"
+#line 430 "pir.y"
     { (yyval.ival) = SUB_FLAG_LEXID; /* do something with this */ ;}
     break;
 
   case 48:
-#line 452 "pir.y"
+#line 445 "pir.y"
     { /* set_param_flag($2, $3);
                           IF_NAMED_PARAM_SET_ALIAS($2, $3);
                           */
@@ -2191,22 +2184,22 @@
     break;
 
   case 50:
-#line 463 "pir.y"
+#line 456 "pir.y"
     { new_instr(lexer); ;}
     break;
 
   case 52:
-#line 469 "pir.y"
+#line 462 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 53:
-#line 471 "pir.y"
+#line 464 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 68:
-#line 491 "pir.y"
+#line 484 "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 */
@@ -2216,108 +2209,108 @@
     break;
 
   case 69:
-#line 500 "pir.y"
+#line 493 "pir.y"
     { set_instr(lexer, "null");
                           add_operand(lexer, expr_from_target((yyvsp[(2) - 
(3)].targ)));
                         ;}
     break;
 
   case 70:
-#line 504 "pir.y"
+#line 497 "pir.y"
     { set_instr(lexer, "null");
                           add_operand(lexer, expr_from_target((yyvsp[(1) - 
(4)].targ)));
                         ;}
     break;
 
   case 71:
-#line 510 "pir.y"
+#line 503 "pir.y"
     { set_instr(lexer, "get_results");
                           add_operand(lexer, expr_from_target((yyvsp[(2) - 
(3)].targ)));
                         ;}
     break;
 
   case 73:
-#line 519 "pir.y"
+#line 512 "pir.y"
     { add_first_operand(lexer, expr_from_target((yyvsp[(1) - (3)].targ))); ;}
     break;
 
   case 74:
-#line 544 "pir.y"
+#line 537 "pir.y"
     { assign(lexer, RHS_AUGMENT, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - 
(2)].expr)); ;}
     break;
 
   case 75:
-#line 546 "pir.y"
+#line 539 "pir.y"
     { assign(lexer, RHS_SETKEYED, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - 
(3)].expr)); ;}
     break;
 
   case 76:
-#line 548 "pir.y"
+#line 541 "pir.y"
     { /* nothing to do */ ;}
     break;
 
   case 77:
-#line 552 "pir.y"
+#line 545 "pir.y"
     { assign(lexer, RHS_UNOP, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - 
(2)].expr)); ;}
     break;
 
   case 78:
-#line 554 "pir.y"
+#line 547 "pir.y"
     { assign(lexer, RHS_SIMPLE, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 79:
-#line 556 "pir.y"
+#line 549 "pir.y"
     { assign(lexer, RHS_BINOP, (yyvsp[(2) - (3)].sval), (yyvsp[(1) - 
(3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 80:
-#line 558 "pir.y"
+#line 551 "pir.y"
     { assign(lexer, RHS_GETKEYED, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - 
(2)].expr)); ;}
     break;
 
   case 81:
-#line 560 "pir.y"
+#line 553 "pir.y"
     { /* nothing to do */ ;}
     break;
 
   case 82:
-#line 564 "pir.y"
+#line 557 "pir.y"
     { set_instr(lexer, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 87:
-#line 577 "pir.y"
+#line 570 "pir.y"
     { add_operand(lexer, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
   case 88:
-#line 582 "pir.y"
+#line 575 "pir.y"
     { /* nothing to do */;}
     break;
 
   case 89:
-#line 584 "pir.y"
+#line 577 "pir.y"
     { add_operand(lexer, (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 92:
-#line 592 "pir.y"
+#line 585 "pir.y"
     { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
     break;
 
   case 93:
-#line 596 "pir.y"
+#line 589 "pir.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr); ;}
     break;
 
   case 94:
-#line 598 "pir.y"
+#line 591 "pir.y"
     { (yyval.expr) = add_key((yyvsp[(1) - (3)].expr), (yyvsp[(3) - 
(3)].expr)); ;}
     break;
 
   case 95:
-#line 602 "pir.y"
+#line 595 "pir.y"
     { /* it was "unless", so "invert" the opcode */
                            if ((yyvsp[(1) - (5)].ival) > 0) {
                               invert_instr(lexer);
@@ -2327,7 +2320,7 @@
     break;
 
   case 96:
-#line 609 "pir.y"
+#line 602 "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)));
@@ -2335,34 +2328,34 @@
     break;
 
   case 97:
-#line 615 "pir.y"
+#line 608 "pir.y"
     { (yyval.ival) = 0; /* no need to invert */ ;}
     break;
 
   case 98:
-#line 616 "pir.y"
+#line 609 "pir.y"
     { (yyval.ival) = 1; /* yes, invert opname */ ;}
     break;
 
   case 99:
-#line 621 "pir.y"
+#line 614 "pir.y"
     { (yyval.sval) = "if_null"; ;}
     break;
 
   case 100:
-#line 623 "pir.y"
+#line 616 "pir.y"
     { (yyval.sval) = "unless_null"; ;}
     break;
 
   case 103:
-#line 632 "pir.y"
+#line 625 "pir.y"
     { set_instr(lexer, "if");
                            add_operand(lexer, (yyvsp[(1) - (1)].expr));
                          ;}
     break;
 
   case 104:
-#line 636 "pir.y"
+#line 629 "pir.y"
     { set_instr(lexer, (yyvsp[(2) - (3)].sval));
                            add_operand(lexer, (yyvsp[(1) - (3)].expr));
                            add_operand(lexer, (yyvsp[(3) - (3)].expr));
@@ -2370,49 +2363,49 @@
     break;
 
   case 105:
-#line 644 "pir.y"
+#line 637 "pir.y"
     { set_instr(lexer, "branch");
                            add_operand(lexer, expr_from_ident((yyvsp[(2) - 
(3)].sval)));
                          ;}
     break;
 
   case 106:
-#line 650 "pir.y"
+#line 643 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].targ)); 
;}
     break;
 
   case 107:
-#line 654 "pir.y"
+#line 647 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 108:
-#line 656 "pir.y"
+#line 649 "pir.y"
     { (yyval.targ) = add_local((yyvsp[(1) - (3)].targ), (yyvsp[(3) - 
(3)].targ)); ;}
     break;
 
   case 109:
-#line 660 "pir.y"
+#line 653 "pir.y"
     { (yyval.targ) = new_local((yyvsp[(1) - (2)].sval), (yyvsp[(2) - 
(2)].ival)); ;}
     break;
 
   case 110:
-#line 663 "pir.y"
+#line 656 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 111:
-#line 664 "pir.y"
+#line 657 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
   case 112:
-#line 670 "pir.y"
+#line 663 "pir.y"
     { set_lex_flag((yyvsp[(4) - (5)].targ), (yyvsp[(2) - (5)].sval)); ;}
     break;
 
   case 115:
-#line 685 "pir.y"
+#line 678 "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));
@@ -2421,171 +2414,171 @@
     break;
 
   case 116:
-#line 693 "pir.y"
+#line 686 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 117:
-#line 695 "pir.y"
+#line 688 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 118:
-#line 699 "pir.y"
+#line 692 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 119:
-#line 701 "pir.y"
+#line 694 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - 
(2)].argm)); ;}
     break;
 
   case 120:
-#line 705 "pir.y"
+#line 698 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 121:
-#line 709 "pir.y"
+#line 702 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), 
(yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 122:
-#line 711 "pir.y"
+#line 704 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
   case 123:
-#line 714 "pir.y"
+#line 707 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METH, (yyvsp[(2) - (5)].targ), 
(yyvsp[(5) - (5)].targ)); ;}
     break;
 
   case 124:
-#line 718 "pir.y"
+#line 711 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 125:
-#line 720 "pir.y"
+#line 713 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
   case 126:
-#line 726 "pir.y"
+#line 719 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 127:
-#line 728 "pir.y"
+#line 721 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 128:
-#line 732 "pir.y"
+#line 725 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 129:
-#line 734 "pir.y"
+#line 727 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - 
(2)].targ)); ;}
     break;
 
   case 130:
-#line 738 "pir.y"
+#line 731 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 131:
-#line 740 "pir.y"
+#line 733 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 132:
-#line 744 "pir.y"
+#line 737 "pir.y"
     { set_invocation_results((yyvsp[(3) - (4)].invo), (yyvsp[(1) - 
(4)].targ)); ;}
     break;
 
   case 133:
-#line 746 "pir.y"
+#line 739 "pir.y"
     { set_invocation_results((yyvsp[(3) - (4)].invo), (yyvsp[(1) - 
(4)].targ)); ;}
     break;
 
   case 134:
-#line 748 "pir.y"
+#line 741 "pir.y"
     { set_invocation_results((yyvsp[(1) - (2)].invo), NULL); ;}
     break;
 
   case 137:
-#line 757 "pir.y"
+#line 750 "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 764 "pir.y"
+#line 757 "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 770 "pir.y"
+#line 763 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 140:
-#line 772 "pir.y"
+#line 765 "pir.y"
     { (yyval.targ) = target_from_string((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 143:
-#line 780 "pir.y"
+#line 773 "pir.y"
     { (yyval.targ) = target_from_ident((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 144:
-#line 782 "pir.y"
+#line 775 "pir.y"
     { (yyval.targ) = reg(PMC_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 145:
-#line 786 "pir.y"
+#line 779 "pir.y"
     { (yyval.targ) = target_from_string((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 146:
-#line 788 "pir.y"
+#line 781 "pir.y"
     { (yyval.targ) = reg(STRING_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 147:
-#line 793 "pir.y"
+#line 786 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 148:
-#line 797 "pir.y"
+#line 790 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 149:
-#line 799 "pir.y"
+#line 792 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 150:
-#line 803 "pir.y"
+#line 796 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 151:
-#line 805 "pir.y"
+#line 798 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - 
(3)].targ)); ;}
     break;
 
   case 152:
-#line 809 "pir.y"
+#line 802 "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 */
@@ -2594,110 +2587,110 @@
     break;
 
   case 153:
-#line 817 "pir.y"
+#line 810 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 154:
-#line 819 "pir.y"
+#line 812 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 155:
-#line 823 "pir.y"
+#line 816 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
   case 156:
-#line 825 "pir.y"
+#line 818 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
   case 157:
-#line 827 "pir.y"
+#line 820 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
   case 158:
-#line 829 "pir.y"
+#line 822 "pir.y"
     { (yyval.ival) = TARGET_FLAG_UNIQUE_REG; ;}
     break;
 
   case 159:
-#line 831 "pir.y"
+#line 824 "pir.y"
     { (yyval.ival) = TARGET_FLAG_NAMED;
                                    STORE_NAMED_ALIAS((yyvsp[(2) - (2)].sval));
                             ;}
     break;
 
   case 160:
-#line 837 "pir.y"
+#line 830 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 161:
-#line 839 "pir.y"
+#line 832 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 164:
-#line 847 "pir.y"
+#line 840 "pir.y"
     { (yyval.ival) = TARGET_FLAG_INVOCANT; ;}
     break;
 
   case 169:
-#line 862 "pir.y"
+#line 855 "pir.y"
     { (yyval.fixme) = invoke(lexer, CALL_RET);
                                set_invocation_args((yyval.fixme), (yyvsp[(2) - 
(3)].argm));
                              ;}
     break;
 
   case 170:
-#line 866 "pir.y"
+#line 859 "pir.y"
     { set_invocation_type((yyvsp[(2) - (3)].invo), CALL_TAIL); ;}
     break;
 
   case 171:
-#line 870 "pir.y"
+#line 863 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_YIELD);
                                 set_invocation_args((yyval.invo), (yyvsp[(2) - 
(3)].argm));
                               ;}
     break;
 
   case 172:
-#line 876 "pir.y"
+#line 869 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 173:
-#line 880 "pir.y"
+#line 873 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 174:
-#line 882 "pir.y"
+#line 875 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 175:
-#line 886 "pir.y"
+#line 879 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 176:
-#line 888 "pir.y"
+#line 881 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - 
(3)].argm)); ;}
     break;
 
   case 179:
-#line 896 "pir.y"
+#line 889 "pir.y"
     { (yyval.argm) = new_argument((yyvsp[(3) - (3)].expr));
                                  set_arg_named((yyval.argm), (yyvsp[(1) - 
(3)].sval));
                                ;}
     break;
 
   case 180:
-#line 902 "pir.y"
+#line 895 "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));
@@ -2705,459 +2698,459 @@
     break;
 
   case 181:
-#line 912 "pir.y"
+#line 905 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_RET);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - 
(5)].argm));
                             ;}
     break;
 
   case 182:
-#line 920 "pir.y"
+#line 913 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - 
(5)].argm));
                             ;}
     break;
 
   case 183:
-#line 926 "pir.y"
+#line 919 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 184:
-#line 928 "pir.y"
+#line 921 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 185:
-#line 933 "pir.y"
+#line 926 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 186:
-#line 935 "pir.y"
+#line 928 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - 
(2)].argm)); ;}
     break;
 
   case 187:
-#line 940 "pir.y"
+#line 933 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 188:
-#line 944 "pir.y"
+#line 937 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 189:
-#line 946 "pir.y"
+#line 939 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 190:
-#line 950 "pir.y"
+#line 943 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 191:
-#line 952 "pir.y"
+#line 945 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - 
(2)].argm)); ;}
     break;
 
   case 192:
-#line 956 "pir.y"
+#line 949 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 193:
-#line 961 "pir.y"
+#line 954 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 194:
-#line 963 "pir.y"
+#line 956 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 195:
-#line 967 "pir.y"
+#line 960 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
   case 196:
-#line 969 "pir.y"
+#line 962 "pir.y"
     { (yyval.ival) = ARG_FLAG_NAMED;
                           STORE_NAMED_ALIAS((yyvsp[(2) - (2)].sval));
                         ;}
     break;
 
   case 197:
-#line 975 "pir.y"
+#line 968 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
   case 198:
-#line 977 "pir.y"
+#line 970 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
   case 199:
-#line 981 "pir.y"
+#line 974 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
   case 200:
-#line 985 "pir.y"
+#line 978 "pir.y"
     { define_const(lexer, (yyvsp[(2) - (2)].constval), !GLOBALCONST); ;}
     break;
 
   case 202:
-#line 990 "pir.y"
+#line 983 "pir.y"
     { define_const(lexer, (yyvsp[(2) - (3)].constval), GLOBALCONST); ;}
     break;
 
   case 203:
-#line 994 "pir.y"
+#line 987 "pir.y"
     { (yyval.constval) = new_const(INT_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].ival)); ;}
     break;
 
   case 204:
-#line 996 "pir.y"
+#line 989 "pir.y"
     { (yyval.constval) = new_const(NUM_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].dval)); ;}
     break;
 
   case 205:
-#line 998 "pir.y"
+#line 991 "pir.y"
     { (yyval.constval) = new_const(PMC_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 206:
-#line 1000 "pir.y"
+#line 993 "pir.y"
     { (yyval.constval) = new_const(STRING_TYPE, (yyvsp[(2) - (4)].sval), 
(yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 207:
-#line 1009 "pir.y"
+#line 1002 "pir.y"
     { (yyval.expr) = expr_from_const((yyvsp[(1) - (1)].constval)); ;}
     break;
 
   case 208:
-#line 1010 "pir.y"
+#line 1003 "pir.y"
     { (yyval.expr) = expr_from_target((yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 209:
-#line 1011 "pir.y"
+#line 1004 "pir.y"
     { (yyval.expr) = expr_from_ident((yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 210:
-#line 1014 "pir.y"
+#line 1007 "pir.y"
     { (yyval.expr) = expr_from_target((yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 211:
-#line 1015 "pir.y"
+#line 1008 "pir.y"
     { (yyval.expr) = expr_from_const((yyvsp[(1) - (1)].constval)); ;}
     break;
 
   case 212:
-#line 1018 "pir.y"
+#line 1011 "pir.y"
     { (yyval.constval) = new_const(STRING_TYPE, NULL, (yyvsp[(1) - 
(1)].sval)); ;}
     break;
 
   case 213:
-#line 1019 "pir.y"
+#line 1012 "pir.y"
     { (yyval.constval) = new_const(INT_TYPE, NULL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 214:
-#line 1020 "pir.y"
+#line 1013 "pir.y"
     { (yyval.constval) = new_const(NUM_TYPE, NULL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
   case 215:
-#line 1023 "pir.y"
+#line 1016 "pir.y"
     { (yyval.sval) = "ne"; ;}
     break;
 
   case 216:
-#line 1024 "pir.y"
+#line 1017 "pir.y"
     { (yyval.sval) = "eq"; ;}
     break;
 
   case 217:
-#line 1025 "pir.y"
+#line 1018 "pir.y"
     { (yyval.sval) = "lt"; ;}
     break;
 
   case 218:
-#line 1026 "pir.y"
+#line 1019 "pir.y"
     { (yyval.sval) = "le"; ;}
     break;
 
   case 219:
-#line 1027 "pir.y"
+#line 1020 "pir.y"
     { (yyval.sval) = "ge"; ;}
     break;
 
   case 220:
-#line 1028 "pir.y"
+#line 1021 "pir.y"
     { (yyval.sval) = "gt"; ;}
     break;
 
   case 221:
-#line 1031 "pir.y"
+#line 1024 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 222:
-#line 1032 "pir.y"
+#line 1025 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 223:
-#line 1033 "pir.y"
+#line 1026 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
   case 224:
-#line 1034 "pir.y"
+#line 1027 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
   case 225:
-#line 1037 "pir.y"
+#line 1030 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 226:
-#line 1038 "pir.y"
+#line 1031 "pir.y"
     { (yyval.targ) = new_target(UNKNOWN_TYPE, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 227:
-#line 1041 "pir.y"
+#line 1034 "pir.y"
     { (yyval.targ) = reg(PMC_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 228:
-#line 1042 "pir.y"
+#line 1035 "pir.y"
     { (yyval.targ) = reg(NUM_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 229:
-#line 1043 "pir.y"
+#line 1036 "pir.y"
     { (yyval.targ) = reg(INT_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 230:
-#line 1044 "pir.y"
+#line 1037 "pir.y"
     { (yyval.targ) = reg(STRING_TYPE, (yyvsp[(1) - (1)].ival), 0); ;}
     break;
 
   case 233:
-#line 1051 "pir.y"
+#line 1044 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
   case 234:
-#line 1052 "pir.y"
+#line 1045 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
   case 235:
-#line 1053 "pir.y"
+#line 1046 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
   case 236:
-#line 1056 "pir.y"
+#line 1049 "pir.y"
     { (yyval.sval) = "add"; ;}
     break;
 
   case 237:
-#line 1057 "pir.y"
+#line 1050 "pir.y"
     { (yyval.sval) = "sub"; ;}
     break;
 
   case 238:
-#line 1058 "pir.y"
+#line 1051 "pir.y"
     { (yyval.sval) = "div"; ;}
     break;
 
   case 239:
-#line 1059 "pir.y"
+#line 1052 "pir.y"
     { (yyval.sval) = "mul"; ;}
     break;
 
   case 240:
-#line 1060 "pir.y"
+#line 1053 "pir.y"
     { (yyval.sval) = "mod"; ;}
     break;
 
   case 241:
-#line 1061 "pir.y"
+#line 1054 "pir.y"
     { (yyval.sval) = "bor"; ;}
     break;
 
   case 242:
-#line 1062 "pir.y"
+#line 1055 "pir.y"
     { (yyval.sval) = "band"; ;}
     break;
 
   case 243:
-#line 1063 "pir.y"
+#line 1056 "pir.y"
     { (yyval.sval) = "bxor"; ;}
     break;
 
   case 244:
-#line 1064 "pir.y"
+#line 1057 "pir.y"
     { (yyval.sval) = "pow"; ;}
     break;
 
   case 245:
-#line 1065 "pir.y"
+#line 1058 "pir.y"
     { (yyval.sval) = "concat"; ;}
     break;
 
   case 246:
-#line 1066 "pir.y"
+#line 1059 "pir.y"
     { (yyval.sval) = "lsr"; ;}
     break;
 
   case 247:
-#line 1067 "pir.y"
+#line 1060 "pir.y"
     { (yyval.sval) = "shr"; ;}
     break;
 
   case 248:
-#line 1068 "pir.y"
+#line 1061 "pir.y"
     { (yyval.sval) = "shl"; ;}
     break;
 
   case 249:
-#line 1069 "pir.y"
+#line 1062 "pir.y"
     { (yyval.sval) = "or";  ;}
     break;
 
   case 250:
-#line 1070 "pir.y"
+#line 1063 "pir.y"
     { (yyval.sval) = "and"; ;}
     break;
 
   case 251:
-#line 1071 "pir.y"
+#line 1064 "pir.y"
     { (yyval.sval) = "fdiv"; ;}
     break;
 
   case 252:
-#line 1072 "pir.y"
+#line 1065 "pir.y"
     { (yyval.sval) = "xor"; ;}
     break;
 
   case 253:
-#line 1073 "pir.y"
+#line 1066 "pir.y"
     { (yyval.sval) = "iseq"; ;}
     break;
 
   case 254:
-#line 1074 "pir.y"
+#line 1067 "pir.y"
     { (yyval.sval) = "isle"; ;}
     break;
 
   case 255:
-#line 1075 "pir.y"
+#line 1068 "pir.y"
     { (yyval.sval) = "islt"; ;}
     break;
 
   case 256:
-#line 1076 "pir.y"
+#line 1069 "pir.y"
     { (yyval.sval) = "isge"; ;}
     break;
 
   case 257:
-#line 1077 "pir.y"
+#line 1070 "pir.y"
     { (yyval.sval) = "isgt"; ;}
     break;
 
   case 258:
-#line 1078 "pir.y"
+#line 1071 "pir.y"
     { (yyval.sval) = "isne"; ;}
     break;
 
   case 259:
-#line 1082 "pir.y"
+#line 1075 "pir.y"
     { (yyval.sval) = "add"; ;}
     break;
 
   case 260:
-#line 1083 "pir.y"
+#line 1076 "pir.y"
     { (yyval.sval) = "sub"; ;}
     break;
 
   case 261:
-#line 1084 "pir.y"
+#line 1077 "pir.y"
     { (yyval.sval) = "mul"; ;}
     break;
 
   case 262:
-#line 1085 "pir.y"
+#line 1078 "pir.y"
     { (yyval.sval) = "mod"; ;}
     break;
 
   case 263:
-#line 1086 "pir.y"
+#line 1079 "pir.y"
     { (yyval.sval) = "pow"; ;}
     break;
 
   case 264:
-#line 1087 "pir.y"
+#line 1080 "pir.y"
     { (yyval.sval) = "div"; ;}
     break;
 
   case 265:
-#line 1088 "pir.y"
+#line 1081 "pir.y"
     { (yyval.sval) = "fdiv"; ;}
     break;
 
   case 266:
-#line 1089 "pir.y"
+#line 1082 "pir.y"
     { (yyval.sval) = "bor"; ;}
     break;
 
   case 267:
-#line 1090 "pir.y"
+#line 1083 "pir.y"
     { (yyval.sval) = "band" ;}
     break;
 
   case 268:
-#line 1091 "pir.y"
+#line 1084 "pir.y"
     { (yyval.sval) = "bxor"; ;}
     break;
 
   case 269:
-#line 1092 "pir.y"
+#line 1085 "pir.y"
     { (yyval.sval) = "concat"; ;}
     break;
 
   case 270:
-#line 1093 "pir.y"
+#line 1086 "pir.y"
     { (yyval.sval) = "shr"; ;}
     break;
 
   case 271:
-#line 1094 "pir.y"
+#line 1087 "pir.y"
     { (yyval.sval) = "shl"; ;}
     break;
 
   case 272:
-#line 1095 "pir.y"
+#line 1088 "pir.y"
     { (yyval.sval) = "lsr"; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3161 "pirparser.c"
+#line 3154 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3371,7 +3364,7 @@
 }
 
 
-#line 1097 "pir.y"
+#line 1090 "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:44:25 2008
@@ -73,10 +73,10 @@
      TK_STRINGC = 289,
      TK_INTC = 290,
      TK_NUMC = 291,
-     TK_SYM_PREG = 292,
-     TK_SYM_NREG = 293,
-     TK_SYM_SREG = 294,
-     TK_SYM_IREG = 295,
+     TK_PREG = 292,
+     TK_NREG = 293,
+     TK_SREG = 294,
+     TK_IREG = 295,
      TK_PARROT_OP = 296,
      TK_INT = 297,
      TK_NUM = 298,
@@ -171,10 +171,10 @@
 #define TK_STRINGC 289
 #define TK_INTC 290
 #define TK_NUMC 291
-#define TK_SYM_PREG 292
-#define TK_SYM_NREG 293
-#define TK_SYM_SREG 294
-#define TK_SYM_IREG 295
+#define TK_PREG 292
+#define TK_NREG 293
+#define TK_SREG 294
+#define TK_IREG 295
 #define TK_PARROT_OP 296
 #define TK_INT 297
 #define TK_NUM 298
@@ -238,7 +238,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 89 "pir.y"
+#line 82 "pir.y"
 {
     double              dval;
     int                 ival;

Reply via email to