develooper Front page | perl.cvs.parrot | Postings from January 2009

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

From:
kjs
Date:
January 5, 2009 05:00
Subject:
[svn:parrot] r34983 - trunk/compilers/pirc/src
Message ID:
20090105130033.06A14CB9F9@x12.develooper.com
Author: kjs
Date: Mon Jan  5 05:00:31 2009
New Revision: 34983

Modified:
   trunk/compilers/pirc/src/pir.l
   trunk/compilers/pirc/src/pir.y
   trunk/compilers/pirc/src/pircompunit.c
   trunk/compilers/pirc/src/pirlexer.c
   trunk/compilers/pirc/src/pirlexer.h
   trunk/compilers/pirc/src/pirparser.c
   trunk/compilers/pirc/src/pirsymbol.c

Log:
[pirc] value of basic .consts are now returned by lexer.

Modified: trunk/compilers/pirc/src/pir.l
==============================================================================
--- trunk/compilers/pirc/src/pir.l	(original)
+++ trunk/compilers/pirc/src/pir.l	Mon Jan  5 05:00:31 2009
@@ -491,6 +491,28 @@
 
 {IDENT}           { /* identifier; can be a global (sub or const), local or parrot op */
                     lexer_state * const lexer = yyget_extra(yyscanner);
+                    constdecl   * const c = find_global_constant(lexer, yytext);
+
+                    if (c) {
+                        switch (c->type) {
+                            case INT_VAL:
+                                yylval->ival = c->val.ival;
+                                return TK_INTC;
+                            case STRING_VAL:
+                                yylval->sval = c->val.sval;
+                                return TK_STRINGC;
+                            case NUM_VAL:
+                                yylval->dval = c->val.nval;
+                                return TK_NUMC;
+                            case USTRING_VAL:
+                                yylval->sval = c->val.ustr->contents;
+                                return TK_USTRINGC;
+                            default:
+                                panic(lexer, "unsupported constant type");
+                                break;
+                        }
+                    }
+
                     yylval->sval = dupstr(lexer, yytext);
                     return TK_IDENT;
                   }

Modified: trunk/compilers/pirc/src/pir.y
==============================================================================
--- trunk/compilers/pirc/src/pir.y	(original)
+++ trunk/compilers/pirc/src/pir.y	Mon Jan  5 05:00:31 2009
@@ -2021,7 +2021,7 @@
                       | pmc_const_tail
                       ;
 
-globalconst_decl      : ".globalconst" const_tail
+globalconst_decl      : ".globalconst" basic_const_tail
                             { store_global_constant(lexer, $2); }
                       ;
 
@@ -2029,8 +2029,10 @@
                             { $$ = new_named_const(lexer, INT_VAL, $2, $4); }
                       | "num" identifier '=' TK_NUMC
                             { $$ = new_named_const(lexer, NUM_VAL, $2, $4); }
-                      | "string" identifier '=' stringconst
+                      | "string" identifier '=' TK_STRINGC
                             { $$ = new_named_const(lexer, STRING_VAL, $2, $4); }
+                      //| "string" identifier '=' TK_USTRINGC
+                      //      { $$ = new_named_const(lexer, USTRING_VAL, $2, $4); }
                       ;
 
 pmc_const_tail        : TK_STRINGC identifier '=' pmc_const

Modified: trunk/compilers/pirc/src/pircompunit.c
==============================================================================
--- trunk/compilers/pirc/src/pircompunit.c	(original)
+++ trunk/compilers/pirc/src/pircompunit.c	Mon Jan  5 05:00:31 2009
@@ -1321,6 +1321,8 @@
             c->val.nval = va_arg(arg_ptr, double);
             break;
         case PMC_VAL:  /* value of a PMC_VAL constant is also a string */
+            c->val.pval = va_arg(arg_ptr, char *);
+            break;
         case STRING_VAL:
             c->val.sval = va_arg(arg_ptr, char *);
             break;

Modified: trunk/compilers/pirc/src/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.c	(original)
+++ trunk/compilers/pirc/src/pirlexer.c	Mon Jan  5 05:00:31 2009
@@ -1406,17 +1406,17 @@
       363,  364,  365,  366,  367,  368,  369,  370,  371,  372,
 
       373,  375,  376,  377,  378,  379,  380,  381,  383,  388,
-      393,  422,  470,  471,  472,  473,  475,  480,  492,  498,
-      499,  500,  501,  502,  504,  512,  563,  576,  598,  603,
-      608,  615,  616,  631,  636,  637,  642,  643,  644,  646,
-      662,  716,  744,  749,  754,  755,  756,  757,  762,  773,
-      774,  776,  778,  789,  803,  808,  809,  810,  811,  813,
-      828,  842,  871,  896,  898,  903,  913,  918,  936,  942,
-      949,  982,  984,  989, 1025, 1026, 1027, 1029, 1030, 1031,
-     1032, 1033, 1034, 1036, 1037, 1038, 1040, 1045, 1050, 1051,
-     1054, 1088, 1093, 1096, 1097, 1098, 1099, 1101, 1106, 1107,
+      393,  422,  470,  471,  472,  473,  475,  480,  492,  520,
+      521,  522,  523,  524,  526,  534,  585,  598,  620,  625,
+      630,  637,  638,  653,  658,  659,  664,  665,  666,  668,
+      684,  738,  766,  771,  776,  777,  778,  779,  784,  795,
+      796,  798,  800,  811,  825,  830,  831,  832,  833,  835,
+      850,  864,  893,  918,  920,  925,  935,  940,  958,  964,
+      971, 1004, 1006, 1011, 1047, 1048, 1049, 1051, 1052, 1053,
+     1054, 1055, 1056, 1058, 1059, 1060, 1062, 1067, 1072, 1073,
+     1076, 1110, 1115, 1118, 1119, 1120, 1121, 1123, 1128, 1129,
 
-     1108, 1109, 1110, 1112, 1117, 1119, 1121
+     1130, 1131, 1132, 1134, 1139, 1141, 1143
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2685,33 +2685,55 @@
 #line 492 "pir.l"
 { /* identifier; can be a global (sub or const), local or parrot op */
                     lexer_state * const lexer = yypirget_extra(yyscanner);
+                    constdecl   * const c = find_global_constant(lexer, yytext);
+
+                    if (c) {
+                        switch (c->type) {
+                            case INT_VAL:
+                                yylval->ival = c->val.ival;
+                                return TK_INTC;
+                            case STRING_VAL:
+                                yylval->sval = c->val.sval;
+                                return TK_STRINGC;
+                            case NUM_VAL:
+                                yylval->dval = c->val.nval;
+                                return TK_NUMC;
+                            case USTRING_VAL:
+                                yylval->sval = c->val.ustr->contents;
+                                return TK_USTRINGC;
+                            default:
+                                panic(lexer, "unsupported constant type");
+                                break;
+                        }
+                    }
+
                     yylval->sval = dupstr(lexer, yytext);
                     return TK_IDENT;
                   }
     YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 498 "pir.l"
+#line 520 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 499 "pir.l"
+#line 521 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 500 "pir.l"
+#line 522 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 501 "pir.l"
+#line 523 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 502 "pir.l"
+#line 524 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 125:
@@ -2719,7 +2741,7 @@
 yyg->yy_c_buf_p = yy_cp = yy_bp + 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 504 "pir.l"
+#line 526 "pir.l"
 { /* Make sure the dot is followed by a character that
                      * starts a method object. $ for registers,
                      * quotes for quoted strings, and letters for identifiers.
@@ -2731,7 +2753,7 @@
 case 126:
 /* rule 126 can match eol */
 YY_RULE_SETUP
-#line 512 "pir.l"
+#line 534 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                     "no space allowed before a methodcall dot, "
                     "or space expected after the '.' operator");
@@ -2754,7 +2776,7 @@
 
 
 case YY_STATE_EOF(SCANSTR):
-#line 534 "pir.l"
+#line 556 "pir.l"
 { /* switch back from .macro_const buffer to file. */
                      lexer_state * const lexer = yypirget_extra(yyscanner);
                      yy_pop_state(yyscanner);
@@ -2762,7 +2784,7 @@
                    }
     YY_BREAK
 case YY_STATE_EOF(SCANMACRO):
-#line 540 "pir.l"
+#line 562 "pir.l"
 { /* override the default <<EOF>> action; go back to normal state and
                       * switch back to the saved file.
                       */
@@ -2788,7 +2810,7 @@
     YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 563 "pir.l"
+#line 585 "pir.l"
 { /* when scanning a macro body, the @ marker indicates the {IDENT} must
                           * be munged.
                           */
@@ -2799,14 +2821,14 @@
                        }
     YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 572 "pir.l"
+#line 594 "pir.l"
 { /* end of file, stop scanning. */
                     yyterminate();
                   }
     YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 576 "pir.l"
+#line 598 "pir.l"
 { /* any character not covered in the rules above is an error. */
                     yypirerror(yyscanner, yypirget_extra(yyscanner),
                                "unexpected character: '%c'", yytext[0]);
@@ -2827,7 +2849,7 @@
 
 case 129:
 YY_RULE_SETUP
-#line 598 "pir.l"
+#line 620 "pir.l"
 {
                                yy_push_state(MACROCONST, yyscanner);
                                return TK_MACRO_CONST;
@@ -2835,7 +2857,7 @@
     YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 603 "pir.l"
+#line 625 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
@@ -2843,7 +2865,7 @@
     YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 608 "pir.l"
+#line 630 "pir.l"
 {
                                /* only these tokens can be macro constant values */
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
@@ -2853,19 +2875,19 @@
     YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 615 "pir.l"
+#line 637 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 616 "pir.l"
+#line 638 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character: '%c'", yytext[0]);
                              }
     YY_BREAK
 case YY_STATE_EOF(MACROCONST):
-#line 620 "pir.l"
+#line 642 "pir.l"
 {
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file during .macro_const definition");
@@ -2878,7 +2900,7 @@
 
 case 134:
 YY_RULE_SETUP
-#line 631 "pir.l"
+#line 653 "pir.l"
 { /* start a macro definition */
                                yy_push_state(MACROHEAD, yyscanner);
                                return TK_MACRO;
@@ -2886,12 +2908,12 @@
     YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 636 "pir.l"
+#line 658 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 637 "pir.l"
+#line 659 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_IDENT;
@@ -2899,23 +2921,23 @@
     YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 642 "pir.l"
+#line 664 "pir.l"
 { return '('; }
     YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 643 "pir.l"
+#line 665 "pir.l"
 { return ')'; }
     YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 644 "pir.l"
+#line 666 "pir.l"
 { return ','; }
     YY_BREAK
 case 140:
 /* rule 140 can match eol */
 YY_RULE_SETUP
-#line 646 "pir.l"
+#line 668 "pir.l"
 { /* a set of continuous newlines yields a single newline token. */
                                yy_pop_state(yyscanner); /* remove MACROHEAD state */
                                yy_push_state(MACROBODY, yyscanner); /* enter MACROBODY state */
@@ -2933,7 +2955,7 @@
 
 case 141:
 YY_RULE_SETUP
-#line 662 "pir.l"
+#line 684 "pir.l"
 { /* .foo; it can be a macro, macro_local, or just $P0.foo(),
                                 * but we need to check that.
                                 */
@@ -2990,7 +3012,7 @@
     YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 716 "pir.l"
+#line 738 "pir.l"
 { /* expand a .macro_const or parameter in argument list */
                                lexer_state * const lexer = yypirget_extra(yyscanner);
                                macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3021,7 +3043,7 @@
     YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 744 "pir.l"
+#line 766 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_IDENT;
@@ -3029,7 +3051,7 @@
     YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 749 "pir.l"
+#line 771 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
@@ -3037,22 +3059,22 @@
     YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 754 "pir.l"
+#line 776 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 755 "pir.l"
+#line 777 "pir.l"
 { return ','; }
     YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 756 "pir.l"
+#line 778 "pir.l"
 { return '('; }
     YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 757 "pir.l"
+#line 779 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROEXPAND state */
                                return ')';
@@ -3060,14 +3082,14 @@
     YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 762 "pir.l"
+#line 784 "pir.l"
 {
                                yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                                return TK_MACRO_ARG_OTHER;
                              }
     YY_BREAK
 case YY_STATE_EOF(STRINGEXPAND):
-#line 767 "pir.l"
+#line 789 "pir.l"
 {
                                lexer_state * const lexer = yypirget_extra(yyscanner);
                                yy_pop_state(yyscanner);
@@ -3076,23 +3098,23 @@
     YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 773 "pir.l"
+#line 795 "pir.l"
 { return '{'; }
     YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 774 "pir.l"
+#line 796 "pir.l"
 { return '}'; }
     YY_BREAK
 case 152:
 /* rule 152 can match eol */
 YY_RULE_SETUP
-#line 776 "pir.l"
+#line 798 "pir.l"
 { yylval->sval = "\n"; return TK_NL; }
     YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 778 "pir.l"
+#line 800 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "unknown character in macro expansion: %c", yytext[0]);
                              }
@@ -3104,7 +3126,7 @@
 
 case 154:
 YY_RULE_SETUP
-#line 789 "pir.l"
+#line 811 "pir.l"
 { /* give a warning if the right flag is set */
                               /*
                               lexer_state * const lexer = yypirget_extra(yyscanner);
@@ -3120,7 +3142,7 @@
     YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 803 "pir.l"
+#line 825 "pir.l"
 {
                               yy_push_state(MACROLOCAL, yyscanner);
                               return TK_MACRO_LOCAL;
@@ -3128,27 +3150,27 @@
     YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 808 "pir.l"
+#line 830 "pir.l"
 { return TK_INT; }
     YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 809 "pir.l"
+#line 831 "pir.l"
 { return TK_PMC; }
     YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 810 "pir.l"
+#line 832 "pir.l"
 { return TK_NUM; }
     YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 811 "pir.l"
+#line 833 "pir.l"
 { return TK_STRING; }
     YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 813 "pir.l"
+#line 835 "pir.l"
 { /* normal .macro_local */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               /* reserve space for {IDENT}, the @ marker and the NULL char. */
@@ -3166,7 +3188,7 @@
     YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 828 "pir.l"
+#line 850 "pir.l"
 { /* declare a .macro_local based on a parameter */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
 
@@ -3183,7 +3205,7 @@
     YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 842 "pir.l"
+#line 864 "pir.l"
 { /* .$foo */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               macro_table * const table = peek_macro_table(lexer);
@@ -3215,7 +3237,7 @@
     YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 871 "pir.l"
+#line 893 "pir.l"
 { /* expanding a .macro_local using a macro parameter value */
                              lexer_state * const lexer     = yypirget_extra(yyscanner);
                              char  const * const paramname = dupstrn(lexer, yytext + 1, yyleng - 2);
@@ -3243,13 +3265,13 @@
     YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 896 "pir.l"
+#line 918 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
 case 165:
 /* rule 165 can match eol */
 YY_RULE_SETUP
-#line 898 "pir.l"
+#line 920 "pir.l"
 { /* newline after .macro_local <type> <ident> line */
                               yy_pop_state(yyscanner);
                               return TK_NL;
@@ -3257,7 +3279,7 @@
     YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 903 "pir.l"
+#line 925 "pir.l"
 { /* this state is only used for declaring .macro_locals */
                               yypirerror(yyscanner, yypirget_extra(yyscanner),
                                  "unknown character '%c' when declaring .macro_local", yytext[0]);
@@ -3270,7 +3292,7 @@
 
 case 167:
 YY_RULE_SETUP
-#line 913 "pir.l"
+#line 935 "pir.l"
 {
                               yy_push_state(MACROLABEL, yyscanner);
                               return TK_MACRO_LABEL;
@@ -3278,7 +3300,7 @@
     YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 918 "pir.l"
+#line 940 "pir.l"
 { /* if the "$" is there, it's a macro label using a macro
                                * parameter's value; otherwise it's a normal macro label
                                */
@@ -3299,7 +3321,7 @@
 case 169:
 /* rule 169 can match eol */
 YY_RULE_SETUP
-#line 936 "pir.l"
+#line 958 "pir.l"
 { /* the newline character after a ".macro_label $foo:" declaration */
                               yy_pop_state(yyscanner); /* leave MACROLABEL state */
                               return TK_NL;
@@ -3307,7 +3329,7 @@
     YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 942 "pir.l"
+#line 964 "pir.l"
 { /* scan a label when expanding a buffer; declared as .macro_label */
                               lexer_state * const lexer = yypirget_extra(yyscanner);
                               char const  * const label = dupstrn(lexer, yytext, yyleng - 2);
@@ -3317,7 +3339,7 @@
     YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 949 "pir.l"
+#line 971 "pir.l"
 { /* scan a label when expanding macro; was a macro parameter */
                              lexer_state * const lexer     = yypirget_extra(yyscanner);
                              char const  * const paramname = dupstrn(lexer, yytext + 1, yyleng - 3);
@@ -3352,12 +3374,12 @@
 case 172:
 /* rule 172 can match eol */
 YY_RULE_SETUP
-#line 982 "pir.l"
+#line 1004 "pir.l"
 { store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), '\n'); }
     YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 984 "pir.l"
+#line 1006 "pir.l"
 {
                                yy_pop_state(yyscanner); /* leave MACROBODY state */
                                return TK_ENDM;
@@ -3365,13 +3387,13 @@
     YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 989 "pir.l"
+#line 1011 "pir.l"
 { /* store everything else */
                                store_macro_char(CURRENT_MACRO(yypirget_extra(yyscanner)), yytext[0]);
                              }
     YY_BREAK
 case YY_STATE_EOF(MACROBODY):
-#line 993 "pir.l"
+#line 1015 "pir.l"
 { /* catch run-away macro bodys */
                                yypirerror(yyscanner, yypirget_extra(yyscanner),
                                           "read end of file while reading macro body");
@@ -3403,67 +3425,67 @@
 
 case 175:
 YY_RULE_SETUP
-#line 1025 "pir.l"
+#line 1047 "pir.l"
 { return ','; }
     YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 1026 "pir.l"
+#line 1048 "pir.l"
 { return '['; }
     YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 1027 "pir.l"
+#line 1049 "pir.l"
 { return ']'; }
     YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 1029 "pir.l"
+#line 1051 "pir.l"
 { return TK_FLAG_MAIN; }
     YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 1030 "pir.l"
+#line 1052 "pir.l"
 { return TK_FLAG_LOAD; }
     YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 1031 "pir.l"
+#line 1053 "pir.l"
 { return TK_FLAG_INIT; }
     YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 1032 "pir.l"
+#line 1054 "pir.l"
 { return TK_FLAG_ANON; }
     YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 1033 "pir.l"
+#line 1055 "pir.l"
 { return TK_FLAG_POSTCOMP; }
     YY_BREAK
 case 183:
 YY_RULE_SETUP
-#line 1034 "pir.l"
+#line 1056 "pir.l"
 { return TK_FLAG_IMMEDIATE; }
     YY_BREAK
 case 184:
 YY_RULE_SETUP
-#line 1036 "pir.l"
+#line 1058 "pir.l"
 { return TK_PCC_SUB; }
     YY_BREAK
 case 185:
 YY_RULE_SETUP
-#line 1037 "pir.l"
+#line 1059 "pir.l"
 { return TK_LEX; }
     YY_BREAK
 case 186:
 YY_RULE_SETUP
-#line 1038 "pir.l"
+#line 1060 "pir.l"
 { return TK_NAMESPACE; }
     YY_BREAK
 case 187:
 YY_RULE_SETUP
-#line 1040 "pir.l"
+#line 1062 "pir.l"
 {
                           yy_push_state(MACROHEAD, yyscanner);
                           return TK_MACRO;
@@ -3471,7 +3493,7 @@
     YY_BREAK
 case 188:
 YY_RULE_SETUP
-#line 1045 "pir.l"
+#line 1067 "pir.l"
 {
                           yy_push_state(MACROCONST, yyscanner);
                           return TK_MACRO_CONST;
@@ -3479,17 +3501,17 @@
     YY_BREAK
 case 189:
 YY_RULE_SETUP
-#line 1050 "pir.l"
+#line 1072 "pir.l"
 { return TK_LINE; }
     YY_BREAK
 case 190:
 YY_RULE_SETUP
-#line 1051 "pir.l"
+#line 1073 "pir.l"
 { return TK_FILE; }
     YY_BREAK
 case 191:
 YY_RULE_SETUP
-#line 1054 "pir.l"
+#line 1076 "pir.l"
 { /* macro expansion in PASM mode. */
                           lexer_state * const lexer = yypirget_extra(yyscanner);
                           macro_def   * const macro = find_macro(lexer->macros, yytext + 1);
@@ -3526,7 +3548,7 @@
     YY_BREAK
 case 192:
 YY_RULE_SETUP
-#line 1088 "pir.l"
+#line 1110 "pir.l"
 { /* a label in PASM */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext, yyleng - 1);
                           return TK_LABEL;
@@ -3534,34 +3556,34 @@
     YY_BREAK
 case 193:
 YY_RULE_SETUP
-#line 1093 "pir.l"
+#line 1115 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "symbolic registers are not allowed in PASM mode");
                         }
     YY_BREAK
 case 194:
 YY_RULE_SETUP
-#line 1096 "pir.l"
+#line 1118 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_PREG; }
     YY_BREAK
 case 195:
 YY_RULE_SETUP
-#line 1097 "pir.l"
+#line 1119 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_NREG; }
     YY_BREAK
 case 196:
 YY_RULE_SETUP
-#line 1098 "pir.l"
+#line 1120 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_IREG; }
     YY_BREAK
 case 197:
 YY_RULE_SETUP
-#line 1099 "pir.l"
+#line 1121 "pir.l"
 { yylval->ival = atoi(yytext + 1); return TK_SREG; }
     YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 1101 "pir.l"
+#line 1123 "pir.l"
 { /* can be a parrot op or a label; the check is done in the parser. */
                           yylval->sval = dupstr(yypirget_extra(yyscanner), yytext);
                           return TK_IDENT;
@@ -3569,32 +3591,32 @@
     YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 1106 "pir.l"
+#line 1128 "pir.l"
 { yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 1107 "pir.l"
+#line 1129 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 201:
 YY_RULE_SETUP
-#line 1108 "pir.l"
+#line 1130 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 202:
 YY_RULE_SETUP
-#line 1109 "pir.l"
+#line 1131 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 1110 "pir.l"
+#line 1132 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 204:
 YY_RULE_SETUP
-#line 1112 "pir.l"
+#line 1134 "pir.l"
 { /* copy the string, remove the quotes. */
                           yylval->sval = dupstrn(yypirget_extra(yyscanner), yytext + 1, yyleng - 2);
                           return TK_STRINGC;
@@ -3602,32 +3624,32 @@
     YY_BREAK
 case 205:
 YY_RULE_SETUP
-#line 1117 "pir.l"
+#line 1139 "pir.l"
 { /* ignore whitespace */ }
     YY_BREAK
 case 206:
 /* rule 206 can match eol */
 YY_RULE_SETUP
-#line 1119 "pir.l"
+#line 1141 "pir.l"
 { return TK_NL; }
     YY_BREAK
 case 207:
 YY_RULE_SETUP
-#line 1121 "pir.l"
+#line 1143 "pir.l"
 { yypirerror(yyscanner, yypirget_extra(yyscanner),
                                      "unrecognized character: %c", yytext[0]);
                         }
     YY_BREAK
 case YY_STATE_EOF(PASM):
-#line 1124 "pir.l"
+#line 1146 "pir.l"
 { yyterminate(); }
     YY_BREAK
 case 208:
 YY_RULE_SETUP
-#line 1126 "pir.l"
+#line 1148 "pir.l"
 ECHO;
     YY_BREAK
-#line 3631 "pirlexer.c"
+#line 3653 "pirlexer.c"
 case YY_STATE_EOF(MACROHEAD):
 case YY_STATE_EOF(MACROLOCAL):
 case YY_STATE_EOF(MACROLABEL):
@@ -4881,7 +4903,7 @@
 
 /* %ok-for-header */
 
-#line 1126 "pir.l"
+#line 1148 "pir.l"
 
 
 

Modified: trunk/compilers/pirc/src/pirlexer.h
==============================================================================
--- trunk/compilers/pirc/src/pirlexer.h	(original)
+++ trunk/compilers/pirc/src/pirlexer.h	Mon Jan  5 05:00:31 2009
@@ -492,7 +492,7 @@
 #undef YY_DECL
 #endif
 
-#line 1126 "pir.l"
+#line 1148 "pir.l"
 
 
 #line 499 "pirlexer.h"

Modified: trunk/compilers/pirc/src/pirparser.c
==============================================================================
--- trunk/compilers/pirc/src/pirparser.c	(original)
+++ trunk/compilers/pirc/src/pirparser.c	Mon Jan  5 05:00:31 2009
@@ -1029,9 +1029,9 @@
       21,   265,    35,    -1,    -1,   275,   276,    -1,   100,    -1,
       98,   277,    -1,    -1,   278,    -1,   119,    46,   120,    -1,
      281,    35,    -1,    17,   285,    -1,   282,    -1,   284,    -1,
-      17,   283,    -1,   285,    -1,   286,    -1,    16,   283,    -1,
+      17,   283,    -1,   285,    -1,   286,    -1,    16,   285,    -1,
       38,   296,   122,    48,    -1,    39,   296,   122,    49,    -1,
-      41,   296,   122,   290,    -1,    46,   296,   122,   287,    -1,
+      41,   296,   122,    46,    -1,    46,   296,   122,   287,    -1,
      289,    -1,   296,    -1,   293,    -1,   289,    -1,    48,    -1,
       49,    -1,   290,    -1,    46,    -1,    47,    -1,    55,    -1,
       56,    -1,    57,    -1,    58,    -1,    60,    -1,    59,    -1,
@@ -1090,16 +1090,16 @@
     1905,  1907,  1911,  1912,  1915,  1919,  1923,  1927,  1936,  1946,
     1947,  1952,  1954,  1959,  1964,  1965,  1969,  1971,  1975,  1981,
     1982,  1986,  1988,  1996,  1997,  2001,  2005,  2008,  2012,  2013,
-    2016,  2020,  2021,  2024,  2028,  2030,  2032,  2036,  2040,  2041,
-    2054,  2055,  2059,  2060,  2061,  2064,  2065,  2068,  2069,  2070,
-    2071,  2072,  2073,  2076,  2077,  2078,  2079,  2087,  2090,  2091,
-    2104,  2105,  2106,  2107,  2111,  2112,  2115,  2116,  2117,  2118,
-    2119,  2120,  2121,  2122,  2125,  2126,  2127,  2130,  2131,  2132,
-    2133,  2134,  2135,  2136,  2137,  2138,  2139,  2140,  2141,  2142,
-    2143,  2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,  2152,
-    2158,  2159,  2160,  2161,  2162,  2163,  2164,  2165,  2166,  2167,
-    2168,  2169,  2181,  2189,  2193,  2194,  2197,  2198,  2199,  2200,
-    2201,  2202,  2205,  2207,  2208,  2211,  2212,  2215,  2219,  2224
+    2016,  2020,  2021,  2024,  2028,  2030,  2032,  2038,  2042,  2043,
+    2056,  2057,  2061,  2062,  2063,  2066,  2067,  2070,  2071,  2072,
+    2073,  2074,  2075,  2078,  2079,  2080,  2081,  2089,  2092,  2093,
+    2106,  2107,  2108,  2109,  2113,  2114,  2117,  2118,  2119,  2120,
+    2121,  2122,  2123,  2124,  2127,  2128,  2129,  2132,  2133,  2134,
+    2135,  2136,  2137,  2138,  2139,  2140,  2141,  2142,  2143,  2144,
+    2145,  2146,  2147,  2148,  2149,  2150,  2151,  2152,  2153,  2154,
+    2160,  2161,  2162,  2163,  2164,  2165,  2166,  2167,  2168,  2169,
+    2170,  2171,  2183,  2191,  2195,  2196,  2199,  2200,  2201,  2202,
+    2203,  2204,  2207,  2209,  2210,  2213,  2214,  2217,  2221,  2226
 };
 #endif
 
@@ -1336,7 +1336,7 @@
        0,   263,   265,   264,     0,   268,     0,   101,   289,   290,
      292,   291,   293,   100,     0,   328,   329,     0,   359,   365,
      353,   354,   355,   356,    84,     0,     0,    36,    22,    32,
-      33,    75,     0,     0,   333,   331,   332,   330,   298,     0,
+      33,    75,     0,   333,     0,   330,   331,   332,   298,     0,
        0,   309,   314,   244,     0,     0,    93,     0,     0,     0,
        0,     0,   278,   279,   283,   130,   134,   135,   138,   139,
      146,   158,   189,   364,   369,   370,   372,   371,   366,   367,
@@ -1390,7 +1390,7 @@
       97,   296,   341,   342,   343,   428,   506,   297,   298,   299,
      300,   329,   399,   400,   401,   402,   403,   404,   301,   302,
      409,   410,   411,   413,   414,   415,   515,   615,   188,   189,
-     303,    55,   304,   305,   324,   306,   325,   326,   608,   405,
+     303,    55,   304,   305,   325,   306,   115,   327,   608,   405,
      142,    99,   458,   315,   143,   144,   145,   146,    74,   493,
      595,   389,     6,     7,    30,    31,    32,    62,    33,    34,
       35
@@ -1398,99 +1398,99 @@
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -593
+#define YYPACT_NINF -591
 static const yytype_int16 yypact[] =
 {
-     -69,     1,     1,    79,  -593,  -593,  -593,    40,  -593,    77,
-    -593,    55,    56,    62,   -13,    32,  -593,   697,    82,    31,
-    -593,   127,  -593,  -593,    46,   132,   137,  -593,   666,  -593,
-      40,  -593,  -593,    32,  -593,  -593,   147,   138,   156,   160,
-     553,   139,   162,   174,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,    91,  -593,  -593,   172,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,   105,   -20,   191,  -593,   697,
-    -593,  -593,  -593,  -593,  -593,  -593,   104,  -593,  -593,  -593,
-     810,   193,   109,  -593,  -593,  -593,  -593,   108,  -593,  -593,
-    -593,   110,  -593,  -593,   721,  -593,  -593,   113,  -593,  -593,
-    -593,  -593,   697,   697,   697,  -593,   126,    24,  -593,   387,
-    1034,  -593,   119,   123,  -593,  -593,    31,  -593,  -593,  -593,
-     130,   131,  -593,  -593,  -593,   133,   135,  -593,  -593,  -593,
-      22,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   666,  -593,
-    -593,  -593,  -593,  -593,  -593,   141,   150,   141,  -593,   152,
-    -593,  -593,   141,   141,   141,  -593,   212,   146,   151,   153,
-     228,  -593,  -593,  -593,   242,  -593,  -593,   172,  -593,    29,
-    -593,   -20,   243,   697,  -593,   810,  -593,   233,  -593,  -593,
-     553,  -593,   149,  -593,  -593,  -593,  -593,  -593,   232,   234,
-     114,  -593,  -593,   273,  -593,  -593,  -593,    31,  -593,  -593,
-    -593,  -593,  -593,    64,  -593,  -593,   168,   169,  -593,   170,
-     175,  -593,  -593,  -593,  -593,  -593,  -593,   275,   200,  -593,
-    -593,   200,   186,   195,    64,  -593,   267,  -593,  -593,  -593,
-    -593,  -593,   149,  -593,   200,   176,   176,   188,   188,   274,
-     287,   288,   205,  1020,   533,   704,   827,   850,  1003,   697,
-    -593,    10,   459,   303,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,   305,   666,  -593,  -593,   306,
-    -593,   308,   867,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-     310,  -593,  -593,  -593,   188,   218,   226,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,   314,  -593,  -593,   764,   -67,   108,
-    -593,  -593,  -593,  -593,  -593,   697,   240,  -593,  -593,  -593,
-    -593,  -593,   697,   697,  -593,  -593,  -593,  -593,   884,   316,
-     317,   333,   335,   327,   323,   324,  -593,   325,   326,   244,
-     311,   247,   241,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-     246,  -593,  -593,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
-     292,   -19,   207,   207,   207,   319,   -23,   207,   -23,  -593,
-    -593,   411,  1020,  -593,  -593,  -593,  -593,   597,   711,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   616,   810,
-     248,   102,  -593,  -593,   -14,  -593,   272,   251,   320,   255,
-     256,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   810,   353,
-     333,  -593,   810,   354,   335,  -593,   810,    43,   327,  -593,
-    -593,  -593,  -593,  -593,   810,  1003,  -593,   459,   122,   810,
-    -593,  -593,   697,   697,   697,   697,   697,   697,   697,   339,
+      11,    -2,    -2,    53,  -591,  -591,  -591,    74,  -591,   192,
+    -591,    -1,    34,    47,   -44,   142,  -591,   697,    67,    -7,
+    -591,   103,  -591,  -591,    28,   132,   146,  -591,   666,  -591,
+      74,  -591,  -591,   142,  -591,  -591,   154,    71,   158,   166,
+     553,   131,   177,   173,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,   106,  -591,  -591,   178,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,   114,    33,   195,  -591,   697,
+    -591,  -591,  -591,  -591,  -591,  -591,   108,  -591,  -591,  -591,
+     810,   198,   122,  -591,  -591,  -591,  -591,   112,  -591,  -591,
+    -591,   124,  -591,  -591,   721,  -591,  -591,   126,  -591,  -591,
+    -591,  -591,   697,   697,   697,  -591,   129,    46,  -591,   387,
+    1034,  -591,   128,   133,  -591,  -591,    -7,  -591,  -591,  -591,
+     136,   139,  -591,  -591,  -591,   143,   141,  -591,  -591,  -591,
+      82,  -591,  -591,  -591,  -591,  -591,  -591,  -591,   666,  -591,
+    -591,  -591,  -591,  -591,  -591,   134,   145,   134,  -591,   147,
+    -591,  -591,   134,   134,   134,  -591,   219,   149,   150,   151,
+     221,  -591,  -591,  -591,   233,  -591,  -591,   178,  -591,    29,
+    -591,    33,   234,   697,  -591,   810,  -591,   228,  -591,  -591,
+     553,  -591,    32,  -591,  -591,  -591,  -591,  -591,   227,   229,
+     231,  -591,  -591,   271,  -591,  -591,  -591,    -7,  -591,  -591,
+    -591,  -591,  -591,    45,  -591,  -591,   160,   161,  -591,   163,
+     167,  -591,  -591,  -591,  -591,  -591,  -591,   275,   200,  -591,
+    -591,   200,   180,   185,    45,  -591,   260,  -591,  -591,  -591,
+    -591,  -591,    32,  -591,   200,   131,   119,   183,   183,   274,
+     287,   288,   187,  1020,   533,   704,   827,   850,  1003,   697,
+    -591,    20,   459,   289,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,   303,   666,  -591,  -591,   305,
+    -591,   306,   867,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+     308,  -591,  -591,  -591,   183,   217,   224,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,   313,  -591,  -591,   764,   -87,   112,
+    -591,  -591,  -591,  -591,  -591,   697,   239,  -591,  -591,  -591,
+    -591,  -591,   697,  -591,   697,  -591,  -591,  -591,   884,   315,
+     316,   332,   335,   323,   322,   324,  -591,   325,   326,   236,
+     310,   242,   244,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+     245,  -591,  -591,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
+     292,   -14,   162,   162,   162,   321,   -23,   162,   -23,  -591,
+    -591,   411,  1020,  -591,  -591,  -591,  -591,   597,   711,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,   616,   810,
+     246,    31,  -591,  -591,   -15,  -591,   272,   248,   319,   254,
+     255,  -591,  -591,  -591,  -591,  -591,  -591,  -591,   810,   352,
+     332,  -591,   810,   354,   335,  -591,   810,    87,   323,  -591,
+    -591,  -591,  -591,  -591,   810,  1003,  -591,   459,   -10,   810,
+    -591,  -591,   697,   697,   697,   697,   697,   697,   697,   339,
      340,   342,   344,   345,   346,   348,   350,  1061,   -23,   697,
-     697,   697,  -593,  -593,  -593,  -593,  -593,  -593,   901,   918,
-     935,   697,   697,   810,   697,  -593,  -593,  -593,   188,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,   649,   545,   665,
-     665,    10,  -593,  -593,  -593,   666,  -593,  -593,  -593,  -593,
-     665,   361,   -18,   810,  -593,   810,  -593,  -593,   141,  -593,
-    -593,  -593,   261,  -593,  -593,  -593,  -593,  -593,   697,  -593,
-    -593,  1048,   810,  -593,   884,    45,   362,   363,  -593,   365,
-     366,  -593,   367,  1034,  1020,  1034,   368,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-     697,   697,   697,   697,   697,   697,   697,   697,   697,  -593,
-     697,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,   986,   952,   969,  -593,   283,
-     290,   810,  -593,  -593,  -593,  -593,   149,  -593,  -593,  -593,
-    -593,  -593,  -593,   141,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,   374,   291,  -593,  -593,    42,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,   666,   666,  -593,   294,  -593,   408,
-    1034,  -593,   459,  -593,   397,    42,  -593,   109,   109,  -593,
-     411,  -593,   390,   391,  -593,  -593,  -593,  -593
+     697,   697,  -591,  -591,  -591,  -591,  -591,  -591,   901,   918,
+     935,   697,   697,   810,   697,  -591,  -591,  -591,   183,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,   649,   545,   665,
+     665,    20,  -591,  -591,  -591,   666,  -591,  -591,  -591,  -591,
+     665,   361,   -18,   810,  -591,   810,  -591,  -591,   134,  -591,
+    -591,  -591,   258,  -591,  -591,  -591,  -591,  -591,   697,  -591,
+    -591,  1048,   810,  -591,   884,    94,   362,   363,  -591,   365,
+     366,  -591,   367,  1034,  1020,  1034,   368,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+     697,   697,   697,   697,   697,   697,   697,   697,   697,  -591,
+     697,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,   986,   952,   969,  -591,   259,
+     283,   810,  -591,  -591,  -591,  -591,    32,  -591,  -591,  -591,
+    -591,  -591,  -591,   134,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,   374,   290,  -591,  -591,    27,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,   666,   666,  -591,   294,  -591,   397,
+    1034,  -591,   459,  -591,   396,    27,  -591,   122,   122,  -591,
+     411,  -591,   389,   390,  -591,  -591,  -591,  -591
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -593,  -593,  -593,    17,  -593,   312,     3,  -593,  -593,  -593,
-    -593,  -593,   245,  -593,  -593,   197,  -593,  -593,  -593,  -593,
-       7,  -593,  -593,  -593,     5,  -593,  -593,   250,  -593,  -593,
-    -593,   249,   382,  -593,  -593,  -593,  -593,  -234,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,   182,  -593,
-    -195,   -95,  -593,  -593,   259,  -593,  -593,  -593,  -189,  -593,
-    -188,  -593,  -593,  -593,  -593,  -212,  -593,   161,  -448,  -593,
-     293,   -43,  -593,   -93,  -593,  -593,  -593,  -593,  -593,  -593,
-    -593,  -593,  -593,  -593,  -593,  -241,  -593,  -592,  -593,   -65,
-    -593,  -184,  -593,  -593,  -593,  -593,  -593,    28,  -593,  -593,
-    -593,  -593,  -196,  -593,  -593,  -233,  -593,  -593,   -60,  -194,
-    -118,   213,  -593,  -593,  -420,  -593,    39,  -593,  -593,  -593,
-    -593,  -239,  -593,  -593,   -45,  -593,  -282,   -26,  -593,  -593,
-    -593,  -593,    75,  -593,  -593,    73,  -593,  -593,  -151,   -10,
-    -593,  -593,  -593,  -593,   268,  -593,   447,  -593,  -593,   -85,
-     -27,  -190,  -278,  -160,  -214,  -593,   -25,   -17,  -209,  -593,
-    -321,  -593,  -593,  -593,  -593,   460,  -593,   456,  -593,  -593,
-      41
+    -591,  -591,  -591,    17,  -591,   309,     3,  -591,  -591,  -591,
+    -591,  -591,   252,  -591,  -591,   193,  -591,  -591,  -591,  -591,
+       7,  -591,  -591,  -591,     5,  -591,  -591,   251,  -591,  -591,
+    -591,   241,   376,  -591,  -591,  -591,  -591,  -234,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -591,  -591,  -591,   182,  -591,
+    -193,  -105,  -591,  -591,   256,  -591,  -591,  -591,  -173,  -591,
+    -160,  -591,  -591,  -591,  -591,  -217,  -591,   164,  -483,  -591,
+     291,   -43,  -591,   -93,  -591,  -591,  -591,  -591,  -591,  -591,
+    -591,  -591,  -591,  -591,  -591,  -330,  -591,  -590,  -591,   -67,
+    -591,  -141,  -591,  -591,  -591,  -591,  -591,    25,  -591,  -591,
+    -591,  -591,  -209,  -591,  -591,  -235,  -591,  -591,   -65,  -196,
+    -118,   213,  -591,  -591,  -420,  -591,    38,  -591,  -591,  -591,
+    -591,  -239,  -591,  -591,   -47,  -591,  -228,   -26,  -591,  -591,
+    -591,  -591,    59,  -591,  -591,    73,  -591,  -591,  -151,    37,
+    -591,  -591,  -591,  -591,  -591,  -591,   -31,  -591,  -591,   -85,
+     -27,    97,  -177,  -201,  -214,  -591,   -25,   -17,  -212,  -591,
+    -365,  -591,  -591,  -591,  -591,   458,  -591,   456,  -591,  -591,
+      75
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1501,57 +1501,57 @@
 static const yytype_int16 yytable[] =
 {
       73,    98,   174,   100,   149,   141,   191,   530,   321,   330,
-     226,   101,    45,   307,    51,   276,    47,  -160,   309,     9,
-     335,   507,   430,   111,    -6,    36,   450,    37,    38,    39,
-      40,   178,   268,   653,    12,    13,     4,    14,   269,   271,
-     307,    41,   276,   285,   337,   309,     1,     2,   344,    11,
-      12,    13,  -274,    14,   244,   370,    63,   523,    42,   268,
-     118,  -274,   138,   653,   206,   269,   271,    60,   367,    16,
-     285,   316,   524,   652,    63,   525,    15,    16,    36,    10,
-      37,    38,    39,    40,   322,   459,   460,    12,    13,   463,
-      14,   126,   127,   128,    41,   167,   168,   169,   431,   222,
-     215,    56,   451,   175,    57,    90,   129,   508,    58,   295,
-      59,    42,   230,   433,   434,   435,   436,   437,   438,    75,
-      45,    98,    51,   100,    47,   462,   516,   464,    17,  -275,
-     519,   101,    18,    90,   522,   295,   295,   496,  -275,   470,
-     207,   208,   209,   613,    17,   614,   184,   185,    18,   222,
-      76,    19,   194,   195,   196,   488,   210,    20,   596,   597,
-      82,    83,    78,   473,   476,    79,   138,    80,   339,   601,
-     231,   232,    81,   111,   490,   223,   485,   112,   113,   492,
-     114,    17,   105,   350,   106,    18,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,   218,   657,   658,   489,   497,
-     498,   499,   107,   500,   501,   502,   108,   550,   116,   117,
-     308,   529,   120,   344,   112,   113,   390,   114,   121,   125,
-     498,   499,   323,   500,   501,   223,   134,  -275,   147,   571,
-     148,    90,   662,  -274,   263,   166,   175,   308,   310,   311,
-     312,   313,   338,   176,   558,   562,   566,   170,   177,    98,
-     180,   100,   181,   182,   295,   366,   183,   368,   197,   101,
-     187,   263,   452,   453,   454,   455,   456,   457,   198,   190,
-     295,   192,    90,   199,   201,   200,    36,   204,   213,   216,
-     224,   228,   243,   225,    11,    12,    13,   244,   239,   240,
-     241,   245,   246,   247,   248,   317,   242,   249,   392,   250,
-     318,   251,   320,   252,   494,   396,   397,   328,   253,   331,
+     276,   101,    45,   307,    51,   309,    47,  -160,   335,     9,
+     507,   178,   430,   111,   433,   434,   435,   436,   437,   438,
+     316,   450,  -274,     4,   268,   653,   462,   276,   464,   244,
+     307,  -274,   309,   322,   337,    56,    -6,    36,   344,    37,
+      38,    39,    40,    10,   269,   370,    12,    13,   652,    14,
+     118,   268,   138,    41,   206,   653,   496,   271,   367,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,   218,    59,
+      42,   269,    57,    11,    12,    13,   285,    14,   498,   499,
+      63,   500,   501,    58,   271,   167,   168,   169,   431,   222,
+     215,   523,   230,   175,    75,    90,   508,   451,    63,   295,
+      15,    16,    76,   285,   596,   597,   524,   106,   550,   525,
+      45,    98,    51,   100,    47,   601,     1,     2,   497,   498,
+     499,   101,   500,   501,   502,   295,   295,   470,    78,  -275,
+     207,   208,   209,    90,   126,   127,   128,    79,  -275,   222,
+      17,   231,   232,   488,    18,    90,   210,   112,   113,   129,
+     114,   657,   658,   473,   476,   324,   138,    80,   339,   112,
+     113,   485,   114,   111,   490,   223,   492,    60,    17,    16,
+     516,    81,    18,   350,   519,    19,   459,   460,   522,   105,
+     463,    20,   613,    36,   614,    37,    38,    39,    40,   194,
+     195,   196,    12,    13,   107,    14,   184,   185,   117,    41,
+     308,   529,   108,   344,   323,   326,   390,   452,   453,   454,
+     455,   456,   457,   116,   121,   223,    42,   120,   125,   571,
+     134,  -275,   662,   147,   263,    90,   175,   308,   310,   311,
+     312,   313,   338,   148,   558,   562,   566,  -274,   166,    98,
+     170,   100,   176,   187,   295,   366,   180,   368,   177,   101,
+     181,   263,   183,   182,   190,   197,   192,   201,   204,   213,
+     295,   198,   199,   200,   216,   224,    36,   226,   225,   228,
+     239,   240,   243,   241,    11,    12,    13,   244,   242,   317,
+     318,   245,   246,   247,   248,   320,    17,   249,   392,   250,
+      18,   251,   328,   252,   494,   396,   262,   397,   253,   331,
       60,   254,   255,    65,    66,    67,    68,   256,   257,   258,
-     259,   260,   332,   333,   262,   261,    87,    88,    89,   439,
-     440,   441,   442,   443,   444,   445,   446,   447,   345,   528,
-     346,   351,   448,   352,   532,   369,   371,   605,   372,   373,
-     393,   406,   407,   408,   469,   175,   412,   416,   420,   421,
-     422,   423,   427,   491,   461,   425,   424,   426,   429,   509,
-     495,   308,   647,   511,   512,   513,   517,   514,   569,   520,
-     606,   637,   640,   643,   540,   541,    19,   542,   598,   543,
+     259,   260,   332,   333,   345,   261,    87,    88,    89,   439,
+     440,   441,   442,   443,   444,   445,   446,   447,   346,   528,
+     351,   352,   448,   369,   532,   371,   372,   605,   373,   393,
+     406,   407,   408,   416,   469,   175,   412,   420,   424,   421,
+     422,   423,   426,   491,   425,   427,   461,   429,   495,   509,
+     511,   308,   647,   512,   513,   517,   514,   606,   569,   520,
+     644,   637,   640,   643,   540,   541,    19,   542,   598,   543,
      544,   545,   600,   546,   262,   547,  -164,   616,   617,   602,
-     618,   619,   620,   625,   644,   621,   623,   624,   603,   649,
-     604,   645,   650,   449,   659,   533,   534,   535,   536,   537,
-     538,   539,   172,   660,   663,   666,   667,   205,   214,   171,
-     549,   319,   551,   552,   553,   119,   336,   348,   344,   217,
-     212,   186,   599,   607,   567,   568,   527,   570,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,   465,    98,   664,
-     100,   466,   648,   467,   622,   334,   665,   531,   101,   612,
+     618,   619,   620,   625,   645,   621,   623,   624,   603,   649,
+     604,   650,   660,   449,   659,   533,   534,   535,   536,   537,
+     538,   539,   172,   663,   666,   667,   171,   319,   205,   119,
+     549,   217,   551,   552,   553,   214,   336,   212,   344,   186,
+     348,   607,   599,   527,   567,   568,   664,   570,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,   465,    98,   622,
+     100,   466,   648,   467,   665,   334,   531,   612,   101,   518,
      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   609,   518,   611,   521,   115,   103,
-     102,   396,     0,     0,   610,     0,    64,    65,    66,    67,
+     161,   162,   163,   164,   609,   489,   611,   521,   102,   103,
+       0,   396,     0,     0,   610,     0,    64,    65,    66,    67,
       68,    69,    70,    71,    72,   340,   175,   175,   175,   139,
-      87,    88,    89,   222,   327,     0,   646,     0,     0,     0,
+      87,    88,    89,   222,     0,     0,   646,     0,     0,     0,
        0,     0,     0,   626,   627,   628,   629,   630,   631,   632,
      633,   634,   661,   635,    36,     0,     0,     0,     0,     0,
        0,     0,    11,    12,    13,   244,     0,     0,     0,   245,
@@ -1616,57 +1616,57 @@
 static const yytype_int16 yycheck[] =
 {
       17,    28,   120,    28,    97,    90,   157,   427,   242,   248,
-     200,    28,     9,   227,     9,   227,     9,    35,   227,     2,
-     253,    35,    45,    40,     0,     1,    45,     3,     4,     5,
-       6,   126,   227,   625,    10,    11,    35,    13,   227,   227,
-     254,    17,   254,   227,   258,   254,   115,   116,   262,     9,
-      10,    11,   119,    13,    12,   294,    15,    14,    34,   254,
-      43,   128,    79,   655,    35,   254,   254,    35,   282,    37,
-     254,   231,    29,    31,    33,    32,    36,    37,     1,     0,
-       3,     4,     5,     6,   244,   363,   364,    10,    11,   367,
-      13,   111,   112,   113,    17,   112,   113,   114,   121,   192,
-     185,    46,   121,   120,    48,   123,   126,   121,    46,   227,
-     123,    34,   207,   354,   355,   356,   357,   358,   359,    37,
-     117,   148,   117,   148,   117,   366,   408,   368,   104,   119,
-     412,   148,   108,   123,   416,   253,   254,    35,   128,   372,
-     111,   112,   113,    98,   104,   100,   124,   125,   108,   242,
-     119,   111,   162,   163,   164,   388,   127,   117,   479,   480,
-      46,    47,    35,   377,   378,   119,   183,    35,   261,   490,
-     106,   107,    35,   190,   388,   192,   388,    38,    39,   388,
-      41,   104,    35,   276,    46,   108,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,   644,   645,   388,    97,
-      98,    99,    46,   101,   102,   103,    46,   448,    46,    35,
-     227,   425,   121,   427,    38,    39,   309,    41,    46,   114,
-      98,    99,    46,   101,   102,   242,    35,   123,    35,   468,
-     121,   123,   652,   123,   227,   122,   253,   254,    38,    39,
-      40,    41,   259,   124,   458,   459,   460,   121,   125,   276,
-     120,   276,   121,   120,   372,   282,   121,   282,    46,   276,
-     119,   254,    55,    56,    57,    58,    59,    60,   122,   119,
-     388,   119,   123,   122,    46,   122,     1,    35,    35,    46,
-      48,     8,     7,    49,     9,    10,    11,    12,   120,   120,
-     120,    16,    17,    18,    19,   109,   121,    22,   315,    24,
-     105,    26,    35,    28,   389,   322,   323,   119,    33,    35,
+     227,    28,     9,   227,     9,   227,     9,    35,   253,     2,
+      35,   126,    45,    40,   354,   355,   356,   357,   358,   359,
+     231,    45,   119,    35,   227,   625,   366,   254,   368,    12,
+     254,   128,   254,   244,   258,    46,     0,     1,   262,     3,
+       4,     5,     6,     0,   227,   294,    10,    11,    31,    13,
+      43,   254,    79,    17,    35,   655,    35,   227,   282,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,   123,
+      34,   254,    48,     9,    10,    11,   227,    13,    98,    99,
+      15,   101,   102,    46,   254,   112,   113,   114,   121,   192,
+     185,    14,   207,   120,    37,   123,   121,   121,    33,   227,
+      36,    37,   119,   254,   479,   480,    29,    46,   448,    32,
+     117,   148,   117,   148,   117,   490,   115,   116,    97,    98,
+      99,   148,   101,   102,   103,   253,   254,   372,    35,   119,
+     111,   112,   113,   123,   111,   112,   113,   119,   128,   242,
+     104,   106,   107,   388,   108,   123,   127,    38,    39,   126,
+      41,   644,   645,   377,   378,    46,   183,    35,   261,    38,
+      39,   388,    41,   190,   388,   192,   388,    35,   104,    37,
+     408,    35,   108,   276,   412,   111,   363,   364,   416,    35,
+     367,   117,    98,     1,   100,     3,     4,     5,     6,   162,
+     163,   164,    10,    11,    46,    13,   124,   125,    35,    17,
+     227,   425,    46,   427,   245,   246,   309,    55,    56,    57,
+      58,    59,    60,    46,    46,   242,    34,   121,   114,   468,
+      35,   123,   652,    35,   227,   123,   253,   254,    38,    39,
+      40,    41,   259,   121,   458,   459,   460,   123,   122,   276,
+     121,   276,   124,   119,   372,   282,   120,   282,   125,   276,
+     121,   254,   121,   120,   119,    46,   119,    46,    35,    35,
+     388,   122,   122,   122,    46,    48,     1,    46,    49,     8,
+     120,   120,     7,   120,     9,    10,    11,    12,   121,   109,
+     105,    16,    17,    18,    19,    35,   104,    22,   315,    24,
+     108,    26,   119,    28,   389,   322,   119,   324,    33,    35,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    35,    35,   119,    50,    51,    52,    53,    37,
+      45,    46,    35,    35,    35,    50,    51,    52,    53,    37,
       38,    39,    40,    41,    42,    43,    44,    45,    35,   424,
-      35,    35,    50,    35,   429,    35,   128,   498,   122,    35,
-     110,    35,    35,    20,   371,   372,    21,    30,    35,    35,
-      35,    35,   121,   388,    45,    54,   122,   120,   122,    97,
-     122,   388,   606,   122,    54,   120,    23,   121,   463,    25,
-     119,   595,   596,   597,    45,    45,   111,    45,   481,    45,
+      35,    35,    50,    35,   429,   128,   122,   498,    35,   110,
+      35,    35,    20,    30,   371,   372,    21,    35,   122,    35,
+      35,    35,   120,   388,    54,   121,    45,   122,   122,    97,
+     122,   388,   606,    54,   120,    23,   121,   119,   463,    25,
+     121,   595,   596,   597,    45,    45,   111,    45,   481,    45,
       45,    45,   485,    45,   119,    45,    35,    35,    35,   492,
       35,    35,    35,    35,   121,   523,   524,   525,   493,    35,
-     495,   121,   121,   121,   120,   432,   433,   434,   435,   436,
-     437,   438,    35,    15,    27,    35,    35,   177,   183,   117,
-     447,   234,   449,   450,   451,    53,   254,   276,   652,   190,
-     181,   148,   485,   508,   461,   462,   418,   464,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,   485,   655,
-     485,    50,   613,    52,   524,   252,   660,   428,   485,   514,
+     495,   121,    15,   121,   120,   432,   433,   434,   435,   436,
+     437,   438,    35,    27,    35,    35,   117,   234,   177,    53,
+     447,   190,   449,   450,   451,   183,   254,   181,   652,   148,
+     276,   508,   485,   418,   461,   462,   655,   464,    37,    38,
+      39,    40,    41,    42,    43,    44,    45,    46,   485,   524,
+     485,    50,   613,    52,   660,   252,   428,   514,   485,   410,
       83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,   511,   410,   512,   414,    41,    33,
-      30,   508,    -1,    -1,   511,    -1,    37,    38,    39,    40,
+      93,    94,    95,    96,   511,   388,   512,   414,    30,    33,
+      -1,   508,    -1,    -1,   511,    -1,    37,    38,    39,    40,
       41,    42,    43,    44,    45,    46,   523,   524,   525,    50,
-      51,    52,    53,   606,   246,    -1,   601,    -1,    -1,    -1,
+      51,    52,    53,   606,    -1,    -1,   601,    -1,    -1,    -1,
       -1,    -1,    -1,   540,   541,   542,   543,   544,   545,   546,
      547,   548,   650,   550,     1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,     9,    10,    11,    12,    -1,    -1,    -1,    16,
@@ -1754,7 +1754,7 @@
      119,   277,   119,   173,   278,   278,   278,    46,   122,   122,
      122,    46,   177,   178,    35,   166,    35,   111,   112,   113,
      127,   196,   193,    35,   151,   288,    46,   170,    46,   174,
-     175,   176,   212,   296,    48,    49,   290,   185,     8,   179,
+     175,   176,   212,   296,    48,    49,    46,   185,     8,   179,
      190,   106,   107,   152,   153,   154,   155,   156,   157,   120,
      120,   120,   121,     7,    12,    16,    17,    18,    19,    22,
       24,    26,    28,    33,    36,    37,    42,    43,    44,    45,
@@ -1764,7 +1764,7 @@
      243,   244,   245,   246,   247,   249,   250,   256,   257,   258,
      259,   267,   268,   279,   281,   282,   284,   293,   296,   297,
       38,    39,    40,    41,   180,   292,   292,   109,   105,   154,
-      35,   176,   292,    46,   283,   285,   286,   283,   119,   260,
+      35,   176,   292,   285,    46,   283,   285,   286,   119,   260,
      260,    35,    35,    35,   250,   244,   187,   293,   296,   212,
       46,   251,   252,   253,   293,    35,    35,   205,   206,   208,
      212,    35,    35,    37,    38,    39,    40,    41,    42,    43,
@@ -4359,16 +4359,16 @@
 
   case 336:
 #line 2033 "pir.y"
-    { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
+    { (yyval.cdec) = new_named_const(lexer, STRING_VAL, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 337:
-#line 2037 "pir.y"
+#line 2039 "pir.y"
     { (yyval.cdec) = new_pmc_const(lexer, (yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
   case 339:
-#line 2042 "pir.y"
+#line 2044 "pir.y"
     { /* this alternative is necessary, otherwise the parser
                                * just stops when assigning an identifier to a pmc
                                * const, without an error message. That may be
@@ -4379,97 +4379,97 @@
     break;
 
   case 340:
-#line 2054 "pir.y"
+#line 2056 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 341:
-#line 2055 "pir.y"
+#line 2057 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
   case 342:
-#line 2059 "pir.y"
+#line 2061 "pir.y"
     { (yyval.cval) = new_const(lexer, INT_VAL, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 343:
-#line 2060 "pir.y"
+#line 2062 "pir.y"
     { (yyval.cval) = new_const(lexer, NUM_VAL, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
   case 344:
-#line 2061 "pir.y"
+#line 2063 "pir.y"
     { (yyval.cval) = (yyvsp[(1) - (1)].cval); ;}
     break;
 
   case 345:
-#line 2064 "pir.y"
+#line 2066 "pir.y"
     { (yyval.cval) = new_const(lexer, STRING_VAL, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 346:
-#line 2065 "pir.y"
+#line 2067 "pir.y"
     { (yyval.cval) = new_const(lexer, USTRING_VAL, (yyvsp[(1) - (1)].ustr)); ;}
     break;
 
   case 347:
-#line 2068 "pir.y"
+#line 2070 "pir.y"
     { (yyval.ival) = OP_NE; ;}
     break;
 
   case 348:
-#line 2069 "pir.y"
+#line 2071 "pir.y"
     { (yyval.ival) = OP_EQ; ;}
     break;
 
   case 349:
-#line 2070 "pir.y"
+#line 2072 "pir.y"
     { (yyval.ival) = OP_LT; ;}
     break;
 
   case 350:
-#line 2071 "pir.y"
+#line 2073 "pir.y"
     { (yyval.ival) = OP_LE; ;}
     break;
 
   case 351:
-#line 2072 "pir.y"
+#line 2074 "pir.y"
     { (yyval.ival) = OP_GE; ;}
     break;
 
   case 352:
-#line 2073 "pir.y"
+#line 2075 "pir.y"
     { (yyval.ival) = OP_GT; ;}
     break;
 
   case 353:
-#line 2076 "pir.y"
+#line 2078 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 354:
-#line 2077 "pir.y"
+#line 2079 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 355:
-#line 2078 "pir.y"
+#line 2080 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
   case 356:
-#line 2079 "pir.y"
+#line 2081 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
   case 357:
-#line 2087 "pir.y"
+#line 2089 "pir.y"
     { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
     break;
 
   case 359:
-#line 2091 "pir.y"
+#line 2093 "pir.y"
     { /* a symbol must have been declared; check that at this point. */
                            symbol * sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                            if (sym == NULL) {
@@ -4484,277 +4484,277 @@
     break;
 
   case 360:
-#line 2104 "pir.y"
+#line 2106 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 361:
-#line 2105 "pir.y"
+#line 2107 "pir.y"
     { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 362:
-#line 2106 "pir.y"
+#line 2108 "pir.y"
     { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 363:
-#line 2107 "pir.y"
+#line 2109 "pir.y"
     { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 366:
-#line 2115 "pir.y"
+#line 2117 "pir.y"
     { (yyval.sval) = "if"; ;}
     break;
 
   case 367:
-#line 2116 "pir.y"
+#line 2118 "pir.y"
     { (yyval.sval) = "unless"; ;}
     break;
 
   case 368:
-#line 2117 "pir.y"
+#line 2119 "pir.y"
     { (yyval.sval) = "goto"; ;}
     break;
 
   case 369:
-#line 2118 "pir.y"
+#line 2120 "pir.y"
     { (yyval.sval) = "int"; ;}
     break;
 
   case 370:
-#line 2119 "pir.y"
+#line 2121 "pir.y"
     { (yyval.sval) = "num"; ;}
     break;
 
   case 371:
-#line 2120 "pir.y"
+#line 2122 "pir.y"
     { (yyval.sval) = "string"; ;}
     break;
 
   case 372:
-#line 2121 "pir.y"
+#line 2123 "pir.y"
     { (yyval.sval) = "pmc"; ;}
     break;
 
   case 373:
-#line 2122 "pir.y"
+#line 2124 "pir.y"
     { (yyval.sval) = "null"; ;}
     break;
 
   case 374:
-#line 2125 "pir.y"
+#line 2127 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
   case 375:
-#line 2126 "pir.y"
+#line 2128 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
   case 376:
-#line 2127 "pir.y"
+#line 2129 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
   case 377:
-#line 2130 "pir.y"
+#line 2132 "pir.y"
     { (yyval.ival) = OP_ADD; ;}
     break;
 
   case 378:
-#line 2131 "pir.y"
+#line 2133 "pir.y"
     { (yyval.ival) = OP_SUB; ;}
     break;
 
   case 379:
-#line 2132 "pir.y"
+#line 2134 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 380:
-#line 2133 "pir.y"
+#line 2135 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 381:
-#line 2134 "pir.y"
+#line 2136 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 382:
-#line 2135 "pir.y"
+#line 2137 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 383:
-#line 2136 "pir.y"
+#line 2138 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 384:
-#line 2137 "pir.y"
+#line 2139 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 385:
-#line 2138 "pir.y"
+#line 2140 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
   case 386:
-#line 2139 "pir.y"
+#line 2141 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 387:
-#line 2140 "pir.y"
+#line 2142 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 388:
-#line 2141 "pir.y"
+#line 2143 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 389:
-#line 2142 "pir.y"
+#line 2144 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 390:
-#line 2143 "pir.y"
+#line 2145 "pir.y"
     { (yyval.ival) = OP_OR; ;}
     break;
 
   case 391:
-#line 2144 "pir.y"
+#line 2146 "pir.y"
     { (yyval.ival) = OP_AND; ;}
     break;
 
   case 392:
-#line 2145 "pir.y"
+#line 2147 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 393:
-#line 2146 "pir.y"
+#line 2148 "pir.y"
     { (yyval.ival) = OP_XOR; ;}
     break;
 
   case 394:
-#line 2147 "pir.y"
+#line 2149 "pir.y"
     { (yyval.ival) = OP_ISEQ; ;}
     break;
 
   case 395:
-#line 2148 "pir.y"
+#line 2150 "pir.y"
     { (yyval.ival) = OP_ISLE; ;}
     break;
 
   case 396:
-#line 2149 "pir.y"
+#line 2151 "pir.y"
     { (yyval.ival) = OP_ISLT; ;}
     break;
 
   case 397:
-#line 2150 "pir.y"
+#line 2152 "pir.y"
     { (yyval.ival) = OP_ISGE; ;}
     break;
 
   case 398:
-#line 2151 "pir.y"
+#line 2153 "pir.y"
     { (yyval.ival) = OP_ISGT; ;}
     break;
 
   case 399:
-#line 2152 "pir.y"
+#line 2154 "pir.y"
     { (yyval.ival) = OP_ISNE; ;}
     break;
 
   case 400:
-#line 2158 "pir.y"
+#line 2160 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 401:
-#line 2159 "pir.y"
+#line 2161 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 402:
-#line 2160 "pir.y"
+#line 2162 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
   case 403:
-#line 2161 "pir.y"
+#line 2163 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 404:
-#line 2162 "pir.y"
+#line 2164 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 405:
-#line 2163 "pir.y"
+#line 2165 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 406:
-#line 2164 "pir.y"
+#line 2166 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 407:
-#line 2165 "pir.y"
+#line 2167 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 408:
-#line 2166 "pir.y"
+#line 2168 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 409:
-#line 2167 "pir.y"
+#line 2169 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 410:
-#line 2168 "pir.y"
+#line 2170 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 411:
-#line 2169 "pir.y"
+#line 2171 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 413:
-#line 2190 "pir.y"
+#line 2192 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
   case 422:
-#line 2206 "pir.y"
+#line 2208 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 427:
-#line 2216 "pir.y"
+#line 2218 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
   case 428:
-#line 2220 "pir.y"
+#line 2222 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
   case 429:
-#line 2225 "pir.y"
+#line 2227 "pir.y"
     {
 
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval))) {
@@ -4983,7 +4983,7 @@
 }
 
 
-#line 2239 "pir.y"
+#line 2241 "pir.y"
 
 
 

Modified: trunk/compilers/pirc/src/pirsymbol.c
==============================================================================
--- trunk/compilers/pirc/src/pirsymbol.c	(original)
+++ trunk/compilers/pirc/src/pirsymbol.c	Mon Jan  5 05:00:31 2009
@@ -625,7 +625,6 @@
     bucket *b            = new_bucket(lexer);
     bucket_constant(b)   = c;
     store_bucket(table, b, hash);
-    fprintf(stderr, "store global constant (%s)\n", c->name);
 }
 
 /*
@@ -652,9 +651,6 @@
 
     while (b) {
         if (STREQ(bucket_constant(b)->name, name)) {
-            /*
-            fprintf(stderr, "found!\n");
-            */
             return bucket_constant(b);
         }
 



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