Author: kjs
Date: Fri Aug 22 02:57:34 2008
New Revision: 30436

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

Log:
[pirc/new] improve lexer to handle difference between '.' concat and '.' method 
call dot.

{WS}"."{WS} means concatenation (as in $P0 . $P1)
{WS}"." means concatenation (as in $P0 .$P1)
"."{WS} means concatenation (as in $P0. $P1)
"." means method call (as in $P0.$P1)

Modified: trunk/compilers/pirc/new/pir.l
==============================================================================
--- trunk/compilers/pirc/new/pir.l      (original)
+++ trunk/compilers/pirc/new/pir.l      Fri Aug 22 02:57:34 2008
@@ -287,9 +287,22 @@
 {WS}"."{WS} { /* if the dot is surrounded by whitespace, it's a concatenation 
operator */
               return TK_CONC;
             }
-".."        { return TK_CONC; }
 
-"."         { return '.'; }
+{WS}"."     { /* $P0 .$P1 means concatenation */
+              return TK_CONC;
+            }
+
+"."{WS}     { /* $P0. $P1 means concatenation */
+              return TK_CONC;
+            }
+
+"."         { /* at this point all dot-whitespace combinations have been 
covered;
+               * so we can be sure that the dot does not have any surrounding
+               * whitespace: that's the method-call dot, as in $P0.$P1().
+               */
+               return '.';
+            }
+
 "="         { return '='; }
 ";"         { return ';'; }
 

Modified: trunk/compilers/pirc/new/pirlexer.c
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.c (original)
+++ trunk/compilers/pirc/new/pirlexer.c Fri Aug 22 02:57:34 2008
@@ -444,8 +444,8 @@
     yyg->yy_c_buf_p = yy_cp;
 
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go 
here */
-#define YY_NUM_RULES 121
-#define YY_END_OF_BUFFER 122
+#define YY_NUM_RULES 122
+#define YY_END_OF_BUFFER 123
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -455,49 +455,49 @@
     };
 static yyconst flex_int16_t yy_accept[399] =
     {   0,
-        0,    0,  122,  120,    1,    3,    1,   24,  120,  120,
-      120,   21,  120,  120,   27,   28,   22,   20,   29,   26,
-       34,   23,  116,  116,  120,   36,   14,   35,   15,  114,
-       30,   31,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  120,   25,    0,    3,    3,   11,    0,  108,
-        0,    0,    2,    0,    0,    0,    0,   41,   17,   44,
-        0,    0,   40,    0,  116,   37,   38,   33,  115,   47,
+        0,    0,  123,  121,    1,    3,    1,   24,  121,  121,
+      121,   21,  121,  121,   27,   28,   22,   20,   29,   26,
+       35,   23,  117,  117,  121,   37,   14,   36,   15,  115,
+       30,   31,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  121,   25,   33,    3,    3,   11,    0,  109,
+        0,    0,    2,    0,    0,    0,    0,   42,   17,   45,
+        0,    0,   41,    0,  117,   38,   39,   34,  116,   48,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   16,   39,  115,    0,    0,    0,
+        0,    0,    0,    0,   16,   40,  116,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    8,   12,   10,    9,   13,    7,  114,  113,
-      114,  114,  114,  114,   48,  114,  114,  114,  114,  114,
-      114,  114,  114,   43,   18,   46,   19,   32,  112,  111,
-      109,  110,   42,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    8,   12,   10,    9,   13,    7,  115,  114,
+      115,  115,  115,  115,   49,  115,  115,  115,  115,  115,
+      115,  115,  115,   44,   18,   47,   19,   32,  113,  112,
+      110,  111,   43,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   45,  115,  118,    0,  115,  119,  117,    0,
+        0,    0,   46,  116,  119,    0,  116,  120,  118,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    6,    5,   53,   56,  114,
-      114,   58,   55,  114,   59,   60,   52,  114,   54,  114,
-        0,  115,   67,   62,    0,    0,    0,   64,    0,    0,
+        0,    0,    0,    0,    0,    6,    5,   54,   57,  115,
+      115,   59,   56,  115,   60,   61,   53,  115,   55,  115,
+        0,  116,   68,   63,    0,    0,    0,   65,    0,    0,
 
-        0,   70,    0,    0,    0,    0,    0,    0,    0,    0,
-       86,    0,    0,    0,    0,    0,    0,    0,   95,    0,
+        0,   71,    0,    0,    0,    0,    0,    0,    0,    0,
+       87,    0,    0,    0,    0,    0,    0,    0,   96,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        4,   57,   49,   51,  114,  114,    0,    0,   80,    0,
+        4,   58,   50,   52,  115,  115,    0,    0,   81,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   88,  106,    0,   89,    0,    0,    0,
-       90,   93,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  114,  114,    0,    0,   63,    0,    0,    0,
-        0,    0,    0,    0,   72,    0,    0,    0,   76,    0,
-        0,   87,    0,    0,    0,   99,    0,   98,  105,    0,
+        0,    0,    0,   89,  107,    0,   90,    0,    0,    0,
+       91,   94,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  115,  115,    0,    0,   64,    0,    0,    0,
+        0,    0,    0,    0,   73,    0,    0,    0,   77,    0,
+        0,   88,    0,    0,    0,  100,    0,   99,  106,    0,
 
-        0,   96,    0,    0,    0,    0,   61,   50,    0,    0,
+        0,   97,    0,    0,    0,    0,   62,   51,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       84,   85,    0,    0,    0,   94,    0,    0,    0,  104,
-        0,   97,   68,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   71,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   81,    0,    0,    0,
-        0,   69,    0,    0,   75,    0,    0,  107,  103,  102,
-       91,    0,    0,    0,    0,    0,   83,    0,    0,   73,
-       74,   92,    0,    0,   77,    0,    0,   82,    0,    0,
-      100,  101,    0,   79,   65,   66,   78,    0
+       85,   86,    0,    0,    0,   95,    0,    0,    0,  105,
+        0,   98,   69,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   72,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   82,    0,    0,    0,
+        0,   70,    0,    0,   76,    0,    0,  108,  104,  103,
+       92,    0,    0,    0,    0,    0,   84,    0,    0,   74,
+       75,   93,    0,    0,   78,    0,    0,   83,    0,    0,
+      101,  102,    0,   80,   66,   67,   79,    0
 
     } ;
 
@@ -546,51 +546,51 @@
 
 static yyconst flex_int16_t yy_base[404] =
     {   0,
-        0,    0,  606,  607,  586,   68,   69,  576,   67,  600,
-       40,  574,   65,  589,  607,  607,   63,   62,  607,   73,
-       92,   78,  141,  100,  162,  607,   72,   74,   76,  575,
-      607,  607,   82,   64,   83,   87,   84,   92,  102,  105,
-      130,  100,  100,  101,  132,  173,  181,  607,  160,  607,
-        0,  596,  607,  174,  188,  207,  211,  607,  607,  607,
-      586,  569,  607,  215,  221,  607,  607,  607,  225,  607,
-      560,  534,  544,  123,  536,   32,  535,  127,  541,  141,
-      544,  539,  524,  533,  558,  607,  229,  150,  243,  179,
-        0,  528,  529,  148,  156,  210,  537,  204,  524,  526,
-
-      523,  516,  607,  607,  607,  607,  607,  194,  553,  607,
-      232,  127,  216,  230,  552,  244,  247,  248,  251,  252,
-      253,  258,  255,  607,  607,  607,  607,  607,  263,  267,
-      273,  295,  607,  304,  540,  523,  522,  518,  515,  522,
-      507,  511,  503,  501,  252,  503,  509,  510,  502,  246,
-      515,  511,  607,  308,  290,  312,  316,  321,    0,  502,
-      513,  502,  259,  491,  510,  501,  491,  498,  496,  488,
-      487,  487,  484,  493,  500,  607,  517,  519,  518,  281,
-      298,  517,  516,  320,  515,  514,  513,  322,  512,  165,
-      327,  331,  491,  607,  481,  479,  471,  487,  486,  483,
-
-      471,  607,  479,  481,  473,  475,  479,  477,  458,  457,
-      607,  465,  462,  455,  467,  453,  452,  456,  459,  463,
-      454,  457,  446,  458,  247,  457,  443,  444,  444,  456,
-      607,  477,  476,  475,  332,  334,  443,  441,  607,  434,
-      312,  435,  449,  446,  438,  437,  446,  428,  441,  432,
-      432,  425,  436,  607,  607,  435,  607,  437,  434,  432,
-      607,  607,  422,  425,  429,  426,  418,  414,  426,  414,
-      408,  416,  336,  337,  424,  424,  607,  422,  417,  412,
-      415,  409,  417,  408,  607,  413,  401,  413,  607,  395,
-      400,  607,  402,  398,  408,  607,  404,  607,  607,  397,
-
-      394,  607,  392,  382,  398,  397,  421,  420,  385,  316,
-      388,  379,  391,  378,  391,  381,  390,  390,  389,  379,
-      607,  607,  387,  384,  374,  607,  384,  383,  372,  607,
-      382,  607,  607,  380,  375,  370,  368,  358,  366,  356,
-      361,  355,  607,  362,  368,  360,  351,  359,  338,  346,
-      342,  336,  333,  338,  329,  341,  607,  329,  338,  331,
-      328,  607,  329,  332,  607,  331,  322,  607,  607,  607,
-      607,  328,  319,  308,  316,  313,  607,  306,  306,  607,
-      607,  607,  316,  314,  607,  304,  314,  607,  220,  162,
-      607,  607,  101,  607,  607,  607,  607,  607,  399,  403,
+        0,    0,  608,  609,  588,   68,   69,  578,   67,  602,
+       40,  576,   65,  591,  609,  609,   63,   62,  609,   73,
+      109,   78,  158,   96,  179,  609,   72,   74,   76,  577,
+      609,  609,   87,   62,   96,   64,   83,   84,   98,   82,
+      110,  101,   99,  100,  137,  147,  181,  609,  144,  609,
+        0,  598,  609,  171,  179,  188,  196,  609,  609,  609,
+      588,  571,  609,  205,  226,  609,  609,  609,  230,  609,
+      562,  536,  546,  139,  538,  205,  537,  148,  543,  167,
+      546,  541,  526,  535,  560,  609,  244,  103,  263,  200,
+        0,  530,  531,   97,  181,  211,  539,  205,  526,  528,
+
+      525,  518,  609,  609,  609,  609,  609,  160,  555,  609,
+      207,  217,  150,  215,  554,  233,  237,  245,  247,  246,
+      153,  258,  248,  609,  609,  609,  609,  609,  267,  289,
+      293,  297,  609,  306,  542,  525,  524,  520,  517,  524,
+      509,  513,  505,  503,  251,  505,  511,  512,  504,  244,
+      517,  513,  609,  310,  304,  314,  318,  323,    0,  504,
+      515,  504,  293,  493,  512,  503,  493,  500,  498,  490,
+      489,  489,  486,  495,  502,  609,  519,  521,  520,  283,
+      298,  519,  518,  249,  517,  516,  515,  324,  514,  122,
+      329,  340,  493,  609,  483,  481,  473,  489,  488,  485,
+
+      473,  609,  481,  483,  475,  477,  481,  479,  460,  459,
+      609,  467,  464,  457,  469,  455,  454,  458,  461,  465,
+      456,  459,  448,  460,  248,  459,  445,  446,  446,  458,
+      609,  479,  478,  477,  329,  332,  445,  443,  609,  436,
+      318,  437,  451,  448,  440,  439,  448,  430,  443,  434,
+      434,  427,  438,  609,  609,  437,  609,  439,  436,  434,
+      609,  609,  424,  427,  431,  428,  420,  416,  428,  416,
+      410,  418,  340,  334,  426,  426,  609,  424,  419,  414,
+      417,  411,  419,  410,  609,  415,  403,  415,  609,  397,
+      402,  609,  404,  400,  410,  609,  406,  609,  609,  399,
+
+      396,  609,  394,  384,  400,  399,  423,  422,  387,  320,
+      390,  381,  393,  380,  393,  383,  392,  392,  391,  381,
+      609,  609,  389,  386,  376,  609,  386,  385,  374,  609,
+      384,  609,  609,  382,  377,  372,  370,  360,  368,  358,
+      363,  357,  609,  364,  370,  362,  353,  365,  351,  361,
+      357,  352,  345,  343,  332,  343,  609,  330,  341,  334,
+      331,  609,  329,  333,  609,  332,  322,  609,  609,  609,
+      609,  327,  321,  311,  319,  316,  609,  309,  309,  609,
+      609,  609,  319,  317,  609,  306,  249,  609,  184,  144,
+      609,  609,   87,  609,  609,  609,  609,  609,  396,  400,
 
-      407,  409,  140
+      404,  406,   79
     } ;
 
 static yyconst flex_int16_t yy_def[404] =
@@ -642,7 +642,7 @@
       398,  398,  398
     } ;
 
-static yyconst flex_int16_t yy_nxt[677] =
+static yyconst flex_int16_t yy_nxt[679] =
     {   0,
         4,    5,    6,    5,    7,    8,    9,   10,   11,   12,
        13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
@@ -652,75 +652,75 @@
        35,   36,   30,   37,   30,   38,   39,   30,   40,   30,
        30,   41,   30,   42,   30,   30,   30,   43,   44,   46,
        46,   47,   46,   50,   54,   59,   55,   62,   56,   57,
-       64,  141,   65,   65,   65,   65,  142,   45,  110,   66,
+       64,  159,   65,   65,   65,   65,  110,   45,  110,   66,
        63,   64,   60,   65,   65,   65,   65,   85,  103,  104,
 
        67,  105,  106,  107,  108,   86,  110,  110,  110,   51,
-       68,  110,   69,   69,   69,   69,  110,  112,   87,   70,
-       65,   65,   65,   65,  110,   71,  110,  124,  126,  110,
-      111,  113,   89,  128,  115,  128,  128,   72,   73,   74,
-      116,   75,  159,   76,  114,   77,   78,   79,   80,   89,
-       81,  110,   82,   83,  110,  117,  123,  397,   84,   87,
-      119,   65,   65,   65,   65,  118,   50,  125,  138,  127,
-      155,  155,   88,   89,   46,   46,  144,   46,   90,  120,
-      139,   91,   46,   46,  145,   46,  147,   88,  148,  110,
-       89,  179,  121,  122,  129,  129,  129,  129,   90,  158,
-
-      158,  158,   51,  162,  163,  164,   91,   92,  130,  130,
-      130,  130,   93,  165,  236,   94,   95,   96,   97,   98,
-       99,  176,  177,  100,  396,  101,  102,  131,  131,  131,
-      131,  132,  132,  132,  132,   69,   69,   69,   69,   87,
-      110,   65,   65,   65,   65,   69,   69,   69,   69,  154,
-      154,  154,  154,   89,  110,  166,  110,  134,  156,  167,
-      156,  134,  170,  157,  157,  157,  157,  171,  110,  180,
-       89,  110,  110,  168,  134,  110,  110,  110,  134,  110,
-      178,  395,  110,  129,  129,  129,  129,  130,  130,  130,
-      130,  266,  181,  131,  131,  131,  131,  203,  186,  204,
-
-      267,  183,  184,  185,  189,  110,  182,  209,  210,  190,
-      155,  155,  216,  188,  187,  132,  132,  132,  132,  191,
-      217,  191,  110,  218,  192,  192,  192,  192,  154,  154,
-      154,  154,  157,  157,  157,  157,  157,  157,  157,  157,
-      134,  158,  158,  158,  110,  232,  110,  192,  192,  192,
-      192,  192,  192,  192,  192,  233,  110,  134,  110,  278,
-      110,  110,  394,  334,  393,  392,  391,  390,  389,  388,
-      387,  386,  279,  385,  234,  235,  335,  384,  280,  383,
-      382,  381,  336,  380,  379,  378,  377,  307,  273,  376,
-      375,  374,  373,  372,  371,  274,  370,  369,  308,   49,
-
-      368,   49,   49,   52,   52,   52,   52,   61,  367,   61,
-       61,  109,  109,  366,  365,  364,  363,  362,  361,  360,
-      359,  358,  357,  356,  355,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      339,  338,  337,  333,  110,  110,  332,  331,  330,  329,
-      328,  327,  326,  325,  324,  323,  322,  321,  320,  319,
-      318,  317,  316,  315,  314,  313,  312,  311,  310,  309,
-      306,  305,  304,  303,  302,  301,  300,  299,  298,  297,
-      296,  295,  294,  293,  292,  291,  290,  289,  288,  287,
-      286,  285,  284,  283,  282,  281,  277,  276,  275,  110,
-
-      110,  110,  272,  271,  270,  269,  268,  265,  264,  263,
-      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
-      252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
-      242,  241,  240,  239,  238,  237,  110,  110,  110,  110,
-      110,  110,  110,  110,  231,  230,  229,  228,  227,  226,
-      225,  224,  223,  222,  221,  220,  219,  215,  214,  213,
-      212,  211,  208,  207,  206,  205,  202,  201,  200,  199,
-      198,  197,  196,  195,  194,  193,  110,  110,  175,  174,
-      173,  172,  169,  161,  160,  153,  152,  151,  150,  149,
-      146,  143,  140,  137,  136,  135,  133,   50,   53,  110,
+       68,  110,   68,   68,   87,  112,   65,   65,   65,   65,
+      110,  114,  110,  155,  155,  110,  124,  126,   89,   69,
+       69,   69,   69,  115,  110,  111,   70,  119,  128,  116,
+      128,  128,   71,  397,  113,   89,  110,  117,   46,   46,
+       50,   46,  162,  163,   72,   73,   74,  123,   75,  120,
+       76,  118,   77,   78,   79,   80,  125,   81,  127,   82,
+       83,  236,  121,  122,  110,   84,   87,  110,   65,   65,
+       65,   65,   46,   46,  138,   46,   51,  176,  177,   88,
+       89,  129,  129,  129,  129,   90,  139,  144,   91,  130,
+
+      130,  130,  130,  180,   88,  145,  396,   89,  131,  131,
+      131,  131,  147,  188,  148,   90,  132,  132,  132,  132,
+      158,  158,  158,   91,   92,   69,   69,   69,   69,   93,
+      164,  110,   94,   95,   96,   97,   98,   99,  165,  110,
+      100,  110,  101,  102,   87,  395,   65,   65,   65,   65,
+       69,   69,   69,   69,  141,  178,  166,  110,   89,  142,
+      167,  110,  134,  170,  154,  154,  154,  154,  171,  110,
+      110,  110,  110,  110,  168,   89,  134,  181,  156,  134,
+      156,  179,  110,  157,  157,  157,  157,  129,  129,  129,
+      129,  183,  266,  134,  186,  182,  203,  394,  204,  184,
+
+      185,  267,  190,  234,  189,  209,  210,  110,  187,  130,
+      130,  130,  130,  131,  131,  131,  131,  132,  132,  132,
+      132,  191,  110,  191,  155,  155,  192,  192,  192,  192,
+      154,  154,  154,  154,  157,  157,  157,  157,  157,  157,
+      157,  157,  134,  158,  158,  158,  216,  232,  110,  192,
+      192,  192,  192,  110,  217,  233,  110,  218,  110,  134,
+      192,  192,  192,  192,  110,  278,  393,  334,  392,  391,
+      390,  389,  388,  387,  386,  385,  384,  235,  279,  383,
+      335,  382,  381,  380,  280,  273,  336,  379,  378,  377,
+      376,  307,  375,  274,  374,  308,   49,  373,   49,   49,
+
+       52,   52,   52,   52,   61,  372,   61,   61,  109,  109,
+      371,  370,  369,  368,  367,  366,  365,  364,  363,  362,
+      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
+      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  339,  338,  337,  333,  110,  110,  332,  331,
+      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
+      320,  319,  318,  317,  316,  315,  314,  313,  312,  311,
+      310,  309,  306,  305,  304,  303,  302,  301,  300,  299,
+      298,  297,  296,  295,  294,  293,  292,  291,  290,  289,
+      288,  287,  286,  285,  284,  283,  282,  281,  277,  276,
+
+      275,  110,  110,  110,  272,  271,  270,  269,  268,  265,
+      264,  263,  262,  261,  260,  259,  258,  257,  256,  255,
+      254,  253,  252,  251,  250,  249,  248,  247,  246,  245,
+      244,  243,  242,  241,  240,  239,  238,  237,  110,  110,
+      110,  110,  110,  110,  110,  110,  231,  230,  229,  228,
+      227,  226,  225,  224,  223,  222,  221,  220,  219,  215,
+      214,  213,  212,  211,  208,  207,  206,  205,  202,  201,
+      200,  199,  198,  197,  196,  195,  194,  193,  110,  110,
+      175,  174,  173,  172,  169,  161,  160,  153,  152,  151,
+      150,  149,  146,  143,  140,  137,  136,  135,  133,   50,
 
-       50,   58,   53,   48,   45,  398,    3,  398,  398,  398,
+       53,  110,   50,   58,   53,   48,   45,  398,    3,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398
+      398,  398,  398,  398,  398,  398,  398,  398
     } ;
 
-static yyconst flex_int16_t yy_chk[677] =
+static yyconst flex_int16_t yy_chk[679] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -730,76 +730,76 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    6,
         6,    7,    6,    9,   11,   13,   11,   17,   11,   11,
-       18,   76,   18,   18,   18,   18,   76,    7,   34,   18,
+       18,  403,   18,   18,   18,   18,   34,    7,   36,   18,
        17,   20,   13,   20,   20,   20,   20,   22,   27,   27,
 
-       20,   28,   28,   29,   29,   22,   33,   35,   37,    9,
-       21,   36,   21,   21,   21,   21,   38,   34,   24,   21,
-       24,   24,   24,   24,   42,   21,   39,   43,   44,   40,
-       33,   35,   24,   45,   37,   45,   45,   21,   21,   21,
-       37,   21,  403,   21,   36,   21,   21,   21,   21,   24,
-       21,  112,   21,   21,   41,   38,   42,  393,   21,   23,
-       40,   23,   23,   23,   23,   39,   49,   43,   74,   44,
-       88,   88,   23,   23,   46,   46,   78,   46,   23,   41,
-       74,   23,   47,   47,   78,   47,   80,   23,   80,  190,
-       23,  112,   41,   41,   54,   54,   54,   54,   23,   90,
-
-       90,   90,   49,   94,   94,   95,   23,   25,   55,   55,
-       55,   55,   25,   95,  190,   25,   25,   25,   25,   25,
-       25,  108,  108,   25,  390,   25,   25,   56,   56,   56,
-       56,   57,   57,   57,   57,   64,   64,   64,   64,   65,
-      113,   65,   65,   65,   65,   69,   69,   69,   69,   87,
-       87,   87,   87,   65,  114,   96,  111,   69,   89,   96,
-       89,   87,   98,   89,   89,   89,   89,   98,  116,  113,
-       65,  117,  118,   96,   69,  119,  120,  121,   87,  123,
-      111,  389,  122,  129,  129,  129,  129,  130,  130,  130,
-      130,  225,  114,  131,  131,  131,  131,  145,  119,  145,
-
-      225,  117,  118,  118,  122,  180,  116,  150,  150,  123,
-      155,  155,  163,  121,  120,  132,  132,  132,  132,  134,
-      163,  134,  181,  163,  134,  134,  134,  134,  154,  154,
-      154,  154,  156,  156,  156,  156,  157,  157,  157,  157,
-      154,  158,  158,  158,  184,  180,  188,  191,  191,  191,
-      191,  192,  192,  192,  192,  181,  235,  154,  236,  241,
-      273,  274,  387,  310,  386,  384,  383,  379,  378,  376,
-      375,  374,  241,  373,  184,  188,  310,  372,  241,  367,
-      366,  364,  310,  363,  361,  360,  359,  273,  235,  358,
-      356,  355,  354,  353,  352,  236,  351,  350,  274,  399,
-
-      349,  399,  399,  400,  400,  400,  400,  401,  348,  401,
-      401,  402,  402,  347,  346,  345,  344,  342,  341,  340,
-      339,  338,  337,  336,  335,  334,  331,  329,  328,  327,
-      325,  324,  323,  320,  319,  318,  317,  316,  315,  314,
-      313,  312,  311,  309,  308,  307,  306,  305,  304,  303,
-      301,  300,  297,  295,  294,  293,  291,  290,  288,  287,
-      286,  284,  283,  282,  281,  280,  279,  278,  276,  275,
-      272,  271,  270,  269,  268,  267,  266,  265,  264,  263,
-      260,  259,  258,  256,  253,  252,  251,  250,  249,  248,
-      247,  246,  245,  244,  243,  242,  240,  238,  237,  234,
-
-      233,  232,  230,  229,  228,  227,  226,  224,  223,  222,
-      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
-      210,  209,  208,  207,  206,  205,  204,  203,  201,  200,
-      199,  198,  197,  196,  195,  193,  189,  187,  186,  185,
-      183,  182,  179,  178,  177,  175,  174,  173,  172,  171,
-      170,  169,  168,  167,  166,  165,  164,  162,  161,  160,
-      152,  151,  149,  148,  147,  146,  144,  143,  142,  141,
-      140,  139,  138,  137,  136,  135,  115,  109,  102,  101,
-      100,   99,   97,   93,   92,   85,   84,   83,   82,   81,
-       79,   77,   75,   73,   72,   71,   62,   61,   52,   30,
+       20,   28,   28,   29,   29,   22,   40,   37,   38,    9,
+       21,   33,   21,   21,   24,   34,   24,   24,   24,   24,
+       35,   36,   39,   88,   88,   42,   43,   44,   24,   21,
+       21,   21,   21,   37,   41,   33,   21,   40,   45,   37,
+       45,   45,   21,  393,   35,   24,  190,   38,   46,   46,
+       49,   46,   94,   94,   21,   21,   21,   42,   21,   41,
+       21,   39,   21,   21,   21,   21,   43,   21,   44,   21,
+       21,  190,   41,   41,  113,   21,   23,  121,   23,   23,
+       23,   23,   47,   47,   74,   47,   49,  108,  108,   23,
+       23,   54,   54,   54,   54,   23,   74,   78,   23,   55,
+
+       55,   55,   55,  113,   23,   78,  390,   23,   56,   56,
+       56,   56,   80,  121,   80,   23,   57,   57,   57,   57,
+       90,   90,   90,   23,   25,   64,   64,   64,   64,   25,
+       95,  111,   25,   25,   25,   25,   25,   25,   95,  114,
+       25,  112,   25,   25,   65,  389,   65,   65,   65,   65,
+       69,   69,   69,   69,   76,  111,   96,  116,   65,   76,
+       96,  117,   69,   98,   87,   87,   87,   87,   98,  118,
+      120,  119,  123,  184,   96,   65,   87,  114,   89,   69,
+       89,  112,  122,   89,   89,   89,   89,  129,  129,  129,
+      129,  117,  225,   87,  119,  116,  145,  387,  145,  118,
+
+      118,  225,  123,  184,  122,  150,  150,  180,  120,  130,
+      130,  130,  130,  131,  131,  131,  131,  132,  132,  132,
+      132,  134,  181,  134,  155,  155,  134,  134,  134,  134,
+      154,  154,  154,  154,  156,  156,  156,  156,  157,  157,
+      157,  157,  154,  158,  158,  158,  163,  180,  188,  191,
+      191,  191,  191,  235,  163,  181,  236,  163,  274,  154,
+      192,  192,  192,  192,  273,  241,  386,  310,  384,  383,
+      379,  378,  376,  375,  374,  373,  372,  188,  241,  367,
+      310,  366,  364,  363,  241,  235,  310,  361,  360,  359,
+      358,  273,  356,  236,  355,  274,  399,  354,  399,  399,
+
+      400,  400,  400,  400,  401,  353,  401,  401,  402,  402,
+      352,  351,  350,  349,  348,  347,  346,  345,  344,  342,
+      341,  340,  339,  338,  337,  336,  335,  334,  331,  329,
+      328,  327,  325,  324,  323,  320,  319,  318,  317,  316,
+      315,  314,  313,  312,  311,  309,  308,  307,  306,  305,
+      304,  303,  301,  300,  297,  295,  294,  293,  291,  290,
+      288,  287,  286,  284,  283,  282,  281,  280,  279,  278,
+      276,  275,  272,  271,  270,  269,  268,  267,  266,  265,
+      264,  263,  260,  259,  258,  256,  253,  252,  251,  250,
+      249,  248,  247,  246,  245,  244,  243,  242,  240,  238,
+
+      237,  234,  233,  232,  230,  229,  228,  227,  226,  224,
+      223,  222,  221,  220,  219,  218,  217,  216,  215,  214,
+      213,  212,  210,  209,  208,  207,  206,  205,  204,  203,
+      201,  200,  199,  198,  197,  196,  195,  193,  189,  187,
+      186,  185,  183,  182,  179,  178,  177,  175,  174,  173,
+      172,  171,  170,  169,  168,  167,  166,  165,  164,  162,
+      161,  160,  152,  151,  149,  148,  147,  146,  144,  143,
+      142,  141,  140,  139,  138,  137,  136,  135,  115,  109,
+      102,  101,  100,   99,   97,   93,   92,   85,   84,   83,
+       82,   81,   79,   77,   75,   73,   72,   71,   62,   61,
 
-       14,   12,   10,    8,    5,    3,  398,  398,  398,  398,
+       52,   30,   14,   12,   10,    8,    5,    3,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
       398,  398,  398,  398,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398
+      398,  398,  398,  398,  398,  398,  398,  398
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[122] =
+static yyconst flex_int32_t yy_rule_can_match_eol[123] =
     {   0,
 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -807,23 +807,24 @@
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0,     };
+    0, 0, 0,     };
 
-static yyconst flex_int16_t yy_rule_linenum[121] =
+static yyconst flex_int16_t yy_rule_linenum[122] =
     {   0,
       248,  250,  252,  256,  257,  258,  259,  260,  261,  262,
       263,  264,  265,  266,  267,  269,  270,  271,  272,  274,
       275,  276,  277,  278,  279,  280,  281,  282,  283,  284,
-      285,  287,  290,  292,  293,  294,  296,  297,  298,  299,
-      300,  301,  302,  303,  304,  305,  306,  308,  309,  310,
-      311,  313,  314,  315,  316,  317,  318,  320,  321,  322,
-      323,  325,  326,  327,  329,  330,  331,  332,  333,  334,
-      335,  336,  338,  339,  340,  341,  342,  343,  344,  345,
-      346,  347,  348,  349,  350,  351,  352,  354,  355,  356,
-      357,  358,  359,  360,  361,  362,  363,  364,  365,  366,
-
-      368,  369,  370,  371,  372,  373,  374,  377,  382,  383,
-      384,  385,  387,  392,  441,  442,  443,  444,  445,  450
+      285,  287,  291,  295,  299,  306,  307,  309,  310,  311,
+      312,  313,  314,  315,  316,  317,  318,  319,  321,  322,
+      323,  324,  326,  327,  328,  329,  330,  331,  333,  334,
+      335,  336,  338,  339,  340,  342,  343,  344,  345,  346,
+      347,  348,  349,  351,  352,  353,  354,  355,  356,  357,
+      358,  359,  360,  361,  362,  363,  364,  365,  367,  368,
+      369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
+
+      379,  381,  382,  383,  384,  385,  386,  387,  390,  395,
+      396,  397,  398,  400,  405,  454,  455,  456,  457,  458,
+      463
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1030,7 +1031,7 @@
 /* make yywrap() always return true. */
 /* always show warnings if something's wrong with our spec. */
 /* create a scanner in debug mode */
-#line 1034 "pirlexer.c"
+#line 1035 "pirlexer.c"
 
 #define INITIAL 0
 
@@ -1323,7 +1324,7 @@
 
 
 
-#line 1327 "pirlexer.c"
+#line 1328 "pirlexer.c"
 
     yylval = yylval_param;
 
@@ -1425,13 +1426,13 @@
             {
             if ( yy_act == 0 )
                 fprintf( stderr, "--scanner backing up\n" );
-            else if ( yy_act < 121 )
+            else if ( yy_act < 122 )
                 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                          (long)yy_rule_linenum[yy_act], yytext );
-            else if ( yy_act == 121 )
+            else if ( yy_act == 122 )
                 fprintf( stderr, "--accepting default rule (\"%s\")\n",
                          yytext );
-            else if ( yy_act == 122 )
+            else if ( yy_act == 123 )
                 fprintf( stderr, "--(end of buffer or a NUL)\n" );
             else
                 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1615,418 +1616,432 @@
     YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 290 "pir.l"
-{ return TK_CONC; }
+#line 291 "pir.l"
+{ /* $P0 .$P1 means concatenation */
+              return TK_CONC;
+            }
     YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 292 "pir.l"
-{ return '.'; }
+#line 295 "pir.l"
+{ /* $P0. $P1 means concatenation */
+              return TK_CONC;
+            }
     YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 293 "pir.l"
-{ return '='; }
+#line 299 "pir.l"
+{ /* at this point all dot-whitespace combinations have been covered;
+               * so we can be sure that the dot does not have any surrounding
+               * whitespace: that's the method-call dot, as in $P0.$P1().
+               */
+               return '.';
+            }
     YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 294 "pir.l"
-{ return ';'; }
+#line 306 "pir.l"
+{ return '='; }
     YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 296 "pir.l"
-{ return TK_ASSIGN_INC; }
+#line 307 "pir.l"
+{ return ';'; }
     YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 297 "pir.l"
-{ return TK_ASSIGN_DEC; }
+#line 309 "pir.l"
+{ return TK_ASSIGN_INC; }
     YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 298 "pir.l"
-{ return TK_ASSIGN_DIV; }
+#line 310 "pir.l"
+{ return TK_ASSIGN_DEC; }
     YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 299 "pir.l"
-{ return TK_ASSIGN_MUL; }
+#line 311 "pir.l"
+{ return TK_ASSIGN_DIV; }
     YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 300 "pir.l"
-{ return TK_ASSIGN_MOD; }
+#line 312 "pir.l"
+{ return TK_ASSIGN_MUL; }
     YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 301 "pir.l"
-{ return TK_ASSIGN_POW; }
+#line 313 "pir.l"
+{ return TK_ASSIGN_MOD; }
     YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 302 "pir.l"
-{ return TK_ASSIGN_BOR; }
+#line 314 "pir.l"
+{ return TK_ASSIGN_POW; }
     YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 303 "pir.l"
-{ return TK_ASSIGN_BAND; }
+#line 315 "pir.l"
+{ return TK_ASSIGN_BOR; }
     YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 304 "pir.l"
-{ return TK_ASSIGN_FDIV; }
+#line 316 "pir.l"
+{ return TK_ASSIGN_BAND; }
     YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 305 "pir.l"
-{ return TK_ASSIGN_BNOT; }
+#line 317 "pir.l"
+{ return TK_ASSIGN_FDIV; }
     YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 306 "pir.l"
-{ return TK_ASSIGN_CONC; }
+#line 318 "pir.l"
+{ return TK_ASSIGN_BNOT; }
     YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 308 "pir.l"
-{ return TK_IF; }
+#line 319 "pir.l"
+{ return TK_ASSIGN_CONC; }
     YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 309 "pir.l"
-{ return TK_GOTO; }
+#line 321 "pir.l"
+{ return TK_IF; }
     YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 310 "pir.l"
-{ return TK_UNLESS; }
+#line 322 "pir.l"
+{ return TK_GOTO; }
     YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 311 "pir.l"
-{ return TK_NULL; }
+#line 323 "pir.l"
+{ return TK_UNLESS; }
     YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 313 "pir.l"
-{ return TK_PARROT_SET; }
+#line 324 "pir.l"
+{ return TK_NULL; }
     YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 314 "pir.l"
-{ return TK_PARROT_ADD; }
+#line 326 "pir.l"
+{ return TK_PARROT_SET; }
     YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 315 "pir.l"
-{ return TK_PARROT_SUB; }
+#line 327 "pir.l"
+{ return TK_PARROT_ADD; }
     YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 316 "pir.l"
-{ return TK_PARROT_MUL; }
+#line 328 "pir.l"
+{ return TK_PARROT_SUB; }
     YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 317 "pir.l"
-{ return TK_PARROT_DIV; }
+#line 329 "pir.l"
+{ return TK_PARROT_MUL; }
     YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 318 "pir.l"
-{ return TK_PARROT_FDIV; }
+#line 330 "pir.l"
+{ return TK_PARROT_DIV; }
     YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 320 "pir.l"
-{ return TK_INT; }
+#line 331 "pir.l"
+{ return TK_PARROT_FDIV; }
     YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 321 "pir.l"
-{ return TK_NUM; }
+#line 333 "pir.l"
+{ return TK_INT; }
     YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 322 "pir.l"
-{ return TK_PMC; }
+#line 334 "pir.l"
+{ return TK_NUM; }
     YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 323 "pir.l"
-{ return TK_STRING; }
+#line 335 "pir.l"
+{ return TK_PMC; }
     YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 325 "pir.l"
-{ return TK_ARG; }
+#line 336 "pir.l"
+{ return TK_STRING; }
     YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 326 "pir.l"
-{ return TK_CONST; }
+#line 338 "pir.l"
+{ return TK_ARG; }
     YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 327 "pir.l"
-{ return TK_END; }
+#line 339 "pir.l"
+{ return TK_CONST; }
     YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 329 "pir.l"
-{ return TK_GET_RESULTS; }
+#line 340 "pir.l"
+{ return TK_END; }
     YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 330 "pir.l"
-{ return TK_GLOBALCONST; }
+#line 342 "pir.l"
+{ return TK_GET_RESULTS; }
     YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 331 "pir.l"
-{ return TK_HLL; }
+#line 343 "pir.l"
+{ return TK_GLOBALCONST; }
     YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 332 "pir.l"
-{ return TK_HLL_MAP; }
+#line 344 "pir.l"
+{ return TK_HLL; }
     YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 333 "pir.l"
-{ return TK_INVOCANT; }
+#line 345 "pir.l"
+{ return TK_HLL_MAP; }
     YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 334 "pir.l"
-{ return TK_LEX; }
+#line 346 "pir.l"
+{ return TK_INVOCANT; }
     YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 335 "pir.l"
-{ return TK_LOADLIB; }
+#line 347 "pir.l"
+{ return TK_LEX; }
     YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 336 "pir.l"
-{ return TK_LOCAL; }
+#line 348 "pir.l"
+{ return TK_LOADLIB; }
     YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 338 "pir.l"
-{ return TK_METH_CALL; }
+#line 349 "pir.l"
+{ return TK_LOCAL; }
     YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 339 "pir.l"
-{ return TK_NAMESPACE; }
+#line 351 "pir.l"
+{ return TK_METH_CALL; }
     YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 340 "pir.l"
-{ return TK_NCI_CALL; }
+#line 352 "pir.l"
+{ return TK_NAMESPACE; }
     YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 341 "pir.l"
-{ return TK_PARAM; }
+#line 353 "pir.l"
+{ return TK_NCI_CALL; }
     YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 342 "pir.l"
-{ return TK_BEGIN_CALL; }
+#line 354 "pir.l"
+{ return TK_PARAM; }
     YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 343 "pir.l"
-{ return TK_BEGIN_RETURN; }
+#line 355 "pir.l"
+{ return TK_BEGIN_CALL; }
     YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 344 "pir.l"
-{ return TK_BEGIN_YIELD; }
+#line 356 "pir.l"
+{ return TK_BEGIN_RETURN; }
     YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 345 "pir.l"
-{ return TK_CALL; }
+#line 357 "pir.l"
+{ return TK_BEGIN_YIELD; }
     YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 346 "pir.l"
-{ return TK_END_CALL; }
+#line 358 "pir.l"
+{ return TK_CALL; }
     YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 347 "pir.l"
-{ return TK_END_RETURN; }
+#line 359 "pir.l"
+{ return TK_END_CALL; }
     YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 348 "pir.l"
-{ return TK_END_YIELD; }
+#line 360 "pir.l"
+{ return TK_END_RETURN; }
     YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 349 "pir.l"
-{ return TK_RESULT; }
+#line 361 "pir.l"
+{ return TK_END_YIELD; }
     YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 350 "pir.l"
-{ return TK_RETURN; }
+#line 362 "pir.l"
+{ return TK_RESULT; }
     YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 351 "pir.l"
-{ return TK_SUB; }
+#line 363 "pir.l"
+{ return TK_RETURN; }
     YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 352 "pir.l"
-{ return TK_YIELD; }
+#line 364 "pir.l"
+{ return TK_SUB; }
     YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 354 "pir.l"
-{ return TK_FLAG_ANON; }
+#line 365 "pir.l"
+{ return TK_YIELD; }
     YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 355 "pir.l"
-{ return TK_FLAG_INIT; }
+#line 367 "pir.l"
+{ return TK_FLAG_ANON; }
     YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 356 "pir.l"
-{ return TK_FLAG_LOAD; }
+#line 368 "pir.l"
+{ return TK_FLAG_INIT; }
     YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 357 "pir.l"
-{ return TK_FLAG_POSTCOMP; }
+#line 369 "pir.l"
+{ return TK_FLAG_LOAD; }
     YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 358 "pir.l"
-{ return TK_FLAG_IMMEDIATE; }
+#line 370 "pir.l"
+{ return TK_FLAG_POSTCOMP; }
     YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 359 "pir.l"
-{ return TK_FLAG_MAIN; }
+#line 371 "pir.l"
+{ return TK_FLAG_IMMEDIATE; }
     YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 360 "pir.l"
-{ return TK_FLAG_METHOD; }
+#line 372 "pir.l"
+{ return TK_FLAG_MAIN; }
     YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 361 "pir.l"
-{ return TK_FLAG_LEX; }
+#line 373 "pir.l"
+{ return TK_FLAG_METHOD; }
     YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 362 "pir.l"
-{ return TK_FLAG_OUTER; }
+#line 374 "pir.l"
+{ return TK_FLAG_LEX; }
     YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 363 "pir.l"
-{ return TK_FLAG_VTABLE; }
+#line 375 "pir.l"
+{ return TK_FLAG_OUTER; }
     YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 364 "pir.l"
-{ return TK_FLAG_MULTI; }
+#line 376 "pir.l"
+{ return TK_FLAG_VTABLE; }
     YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 365 "pir.l"
-{ return TK_FLAG_LEXID; }
+#line 377 "pir.l"
+{ return TK_FLAG_MULTI; }
     YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 366 "pir.l"
-{ return TK_INSTANCEOF; }
+#line 378 "pir.l"
+{ return TK_FLAG_LEXID; }
     YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 368 "pir.l"
-{ return TK_FLAG_UNIQUE_REG; }
+#line 379 "pir.l"
+{ return TK_INSTANCEOF; }
     YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 369 "pir.l"
-{ return TK_FLAG_OPTIONAL; }
+#line 381 "pir.l"
+{ return TK_FLAG_UNIQUE_REG; }
     YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 370 "pir.l"
-{ return TK_FLAG_OPT_FLAG; }
+#line 382 "pir.l"
+{ return TK_FLAG_OPTIONAL; }
     YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 371 "pir.l"
-{ return TK_FLAG_SLURPY; }
+#line 383 "pir.l"
+{ return TK_FLAG_OPT_FLAG; }
     YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 372 "pir.l"
-{ return TK_FLAG_NAMED; }
+#line 384 "pir.l"
+{ return TK_FLAG_SLURPY; }
     YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 373 "pir.l"
-{ return TK_FLAG_FLAT; }
+#line 385 "pir.l"
+{ return TK_FLAG_NAMED; }
     YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 374 "pir.l"
-{ return TK_FLAG_INVOCANT; }
+#line 386 "pir.l"
+{ return TK_FLAG_FLAT; }
     YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 377 "pir.l"
+#line 387 "pir.l"
+{ return TK_FLAG_INVOCANT; }
+    YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 390 "pir.l"
 { /* copy the string, remove the quotes. */
                yylval->sval = dupstrn(yytext + 1, yyleng - 2);
                return TK_STRINGC;
              }
     YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 382 "pir.l"
+#line 395 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_PREG; }
     YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 383 "pir.l"
+#line 396 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_SREG; }
     YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 384 "pir.l"
+#line 397 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_NREG; }
     YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 385 "pir.l"
+#line 398 "pir.l"
 { yylval->ival = atoi(yytext + 2); return TK_IREG; }
     YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 387 "pir.l"
+#line 400 "pir.l"
 { /* make the label Id available in the parser. remove the ":" first. */
                 yylval->sval = dupstrn(yytext, yyleng - 1);
                 return TK_LABEL;
               }
     YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 392 "pir.l"
+#line 405 "pir.l"
 { /* identifier; can be a global (sub or const), local or parrot op */
                 lexer_state *lexer = yyget_extra(yyscanner);
                 symbol      *sym   = find_symbol(lexer, yytext);
@@ -2075,50 +2090,50 @@
                 return TK_IDENT;
               }
     YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 441 "pir.l"
-{ yylval->dval = atof(yytext); return TK_NUMC; }
-    YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 442 "pir.l"
-{ yylval->ival = atoi(yytext); return TK_INTC; }
+#line 454 "pir.l"
+{ yylval->dval = atof(yytext); return TK_NUMC; }
     YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 443 "pir.l"
+#line 455 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 444 "pir.l"
+#line 456 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 445 "pir.l"
+#line 457 "pir.l"
 { yylval->ival = atoi(yytext); return TK_INTC; }
     YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 450 "pir.l"
+#line 458 "pir.l"
+{ yylval->ival = atoi(yytext); return TK_INTC; }
+    YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 463 "pir.l"
 { /* any character not covered in the rules above is an error. */
          yyerror(yyscanner, yyget_extra(yyscanner), "Unexpected character");
        }
     YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 455 "pir.l"
+#line 468 "pir.l"
 { /* end of file, stop scanning. */
               yyterminate();
             }
     YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 459 "pir.l"
+#line 472 "pir.l"
 ECHO;
     YY_BREAK
-#line 2122 "pirlexer.c"
+#line 2137 "pirlexer.c"
 
     case YY_END_OF_BUFFER:
         {
@@ -3335,7 +3350,7 @@
 
 /* %ok-for-header */
 
-#line 459 "pir.l"
+#line 472 "pir.l"
 
 
 

Modified: trunk/compilers/pirc/new/pirlexer.h
==============================================================================
--- trunk/compilers/pirc/new/pirlexer.h (original)
+++ trunk/compilers/pirc/new/pirlexer.h Fri Aug 22 02:57:34 2008
@@ -443,7 +443,7 @@
 #undef YY_DECL
 #endif
 
-#line 459 "pir.l"
+#line 472 "pir.l"
 
 
 #line 450 "pirlexer.h"

Reply via email to