* src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
authorAkim Demaille <akim@epita.fr>
Wed, 12 Jun 2002 15:14:59 +0000 (15:14 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 12 Jun 2002 15:14:59 +0000 (15:14 +0000)
eager.
* tests/actions.at (Exotic Dollars): New.

ChangeLog
src/scan-gram.c
src/scan-gram.l
tests/actions.at

index 13025ab..f0d912d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2002-06-12  Akim Demaille  <akim@epita.fr>
 
+       * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too
+       eager.
+       * tests/actions.at (Exotic Dollars): New.
+
+2002-06-12  Akim Demaille  <akim@epita.fr>
+
        * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst
        ['"/] too eagerly.
        * tests/input.at (Torturing the Scanner): New.
index 58c570c..bdee445 100644 (file)
@@ -311,7 +311,7 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 
 #define YY_NUM_RULES 92
 #define YY_END_OF_BUFFER 93
-static yyconst short int yy_accept[352] =
+static yyconst short int yy_accept[349] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   93,   44,
@@ -335,23 +335,22 @@ static yyconst short int yy_accept[352] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   39,   42,    0,    0,    0,    0,   79,   79,   79,
+        0,   39,   42,    0,    0,    0,   79,   79,   79,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   57,   58,   82,    0,   82,
-        0,    0,    0,    0,    0,    0,    0,    9,    0,    0,
-        0,    0,    0,    0,   16,    0,    0,    0,    0,   21,
-        0,   24,    0,    0,   27,    0,    2,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   14,    0,    0,   18,
-        0,   20,   22,   25,    0,    1,    3,    0,    6,    0,
-        0,    0,    0,    0,    0,   15,    0,    0,    0,    0,
-
-        4,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   26,    0,    0,    0,    0,    0,   12,   13,    0,
-       19,    0,    0,    0,    0,   10,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    7,    0,   11,   17,
-       23,    0,    0,    5,    0,    0,    0,    0,    0,    8,
-        0
+        0,    0,    0,    0,   57,   58,    0,    0,    0,    0,
+        0,    0,    0,    0,    9,    0,    0,    0,    0,    0,
+        0,   16,    0,    0,    0,    0,   21,    0,   24,    0,
+        0,   27,    0,    2,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   14,    0,    0,   18,    0,   20,   22,
+       25,    0,    1,    3,    0,    6,    0,    0,    0,    0,
+        0,    0,   15,    0,    0,    0,    0,    4,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   26,    0,
+        0,    0,    0,    0,   12,   13,    0,   19,    0,    0,
+        0,    0,   10,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    7,    0,   11,   17,   23,    0,    0,
+        5,    0,    0,    0,    0,    0,    8,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -395,97 +394,97 @@ static yyconst int yy_meta[51] =
         9,    9,    9,    9,    9,    9,    9,    5,    1,    5
     } ;
 
-static yyconst short int yy_base[378] =
+static yyconst short int yy_base[375] =
     {   0,
         0,    0,   48,   51,   58,   61,   83,   86,   73,   94,
-      108,  110,  131,  179,  227,  249,  116,  142,  799,  800,
-      796,   55,   64,  800,  267,  800,    0,   44,   79,  800,
-      800,    0,  800,  800,  800,    0,   97,   99,  785,  800,
-      800,    0,  119,  122,  800,  800,    0,  800,  800,  126,
-      138,  800,    0,    0,  145,  153,  800,  311,  800,  155,
-      157,  800,    0,  159,  164,  800,  159,  800,   62,  164,
-      800,  800,  800,  800,    0,  185,  189,  800,  125,  800,
-      185,  192,  201,  203,  205,  207,  209,  794,  211,  213,
-      216,  219,  800,  761,  764,  187,  759,   49,  198,  748,
-
-      199,  757,  109,  208,  752,  759,  762,  800,    0,  800,
-        0,  212,  768,    0,  241,  255,  259,  261,  800,    0,
-      263,  265,  272,  274,  800,  276,  278,  280,  282,  800,
-        0,  284,  286,  288,  296,  800,  800,  773,  800,  800,
-      800,  800,  800,  800,  800,    0,  298,  314,  316,  318,
-        0,  322,  324,  326,  328,  800,  322,  326,  766,  800,
-        0,  800,  330,  332,    0,  344,  347,  355,  357,  243,
-      263,  800,  359,  361,  363,  365,  367,  369,  371,  746,
-      159,  742,  742,  200,  750,  752,  742,  366,  748,  734,
-      746,  734,  742,  743,  746,  730,  735,  729,  734,  726,
-
-      738,    0,  800,  752,    0,  745,  371,    0,  375,  379,
-      737,  718,  727,  721,  729,  728,  727,  713,  729,  724,
-      717,  726,  710,  710,  721,  718,  714,  710,  704,  707,
-      713,  712,  702,  713,  711,  800,  800,  719,  373,  375,
-      696,  704,  697,  693,  705,  722,  702,  800,  687,  386,
-      695,  686,  690,  682,  800,  388,  682,  694,  680,  800,
-      684,  800,  683,  681,  800,  648,  800,  652,  390,  626,
-      626,  392,  610,  603,  602,  593,  800,  591,  592,  800,
-      588,  800,  395,  800,  588,  800,  585,  577,  800,  579,
-      580,  579,  576,  574,  555,  800,  567,  553,  536,  536,
-
-      800,  527,  526,  511,  514,  518,  501,  514,  497,  381,
-      392,  800,  375,  383,  369,  368,  378,  800,  800,  366,
-      800,  380,  353,  321,  313,  800,  307,  303,  287,  265,
-      249,  228,  214,  207,  212,  160,  800,  157,  800,  800,
-      800,  168,  396,  800,  149,  137,   91,   85,   62,  800,
-      800,  421,  434,  447,  460,  473,  486,  499,  512,  517,
-      527,  540,  553,  564,  577,  590,  602,  615,  628,  641,
-      654,  667,   85,  680,  693,  706,   59
+      108,  110,  131,  179,  227,  249,  116,  142,  790,  791,
+      787,   55,   64,  791,  267,  791,    0,   44,   79,  791,
+      791,    0,  791,  791,  791,    0,   97,   99,  776,  791,
+      791,    0,  119,  122,  791,  791,    0,  791,  791,  126,
+      138,  791,    0,    0,  145,  153,  791,  311,  791,  155,
+      157,  791,    0,  159,  164,  791,  159,  791,   62,  164,
+      791,  791,  791,  791,    0,  185,  189,  791,  125,  791,
+      185,  192,  201,  203,  205,  207,  209,  785,  211,  213,
+      216,  219,  791,  752,  755,  187,  750,   49,  198,  739,
+
+      199,  748,  109,  208,  743,  750,  753,  791,    0,  791,
+        0,  212,  759,    0,  241,  255,  259,  261,  791,    0,
+      263,  265,  272,  274,  791,  276,  278,  280,  282,  791,
+        0,  284,  286,  288,  296,  791,  791,  764,  791,  791,
+      791,  791,  791,  791,  791,    0,  298,  314,  316,  318,
+        0,  322,  324,  326,  328,  791,  322,  326,    0,  791,
+        0,  791,  330,  332,    0,  344,  347,  355,  357,  243,
+      263,  791,  359,  361,  363,  365,  367,  369,  371,  738,
+      159,  734,  734,  200,  742,  744,  734,  366,  740,  726,
+      738,  726,  734,  735,  738,  722,  727,  721,  726,  718,
+
+      730,    0,  791,  744,    0,  737,    0,  374,  377,  729,
+      710,  719,  713,  721,  720,  719,  705,  721,  716,  709,
+      718,  702,  702,  713,  710,  706,  702,  696,  699,  705,
+      704,  694,  705,  703,  791,  791,  373,  689,  697,  690,
+      686,  698,  715,  695,  791,  680,  372,  688,  679,  683,
+      675,  791,  375,  675,  687,  673,  791,  677,  791,  676,
+      674,  791,  665,  791,  681,  378,  667,  669,  380,  674,
+      643,  641,  615,  791,  611,  592,  791,  588,  791,  382,
+      791,  586,  791,  581,  577,  791,  579,  580,  579,  574,
+      580,  569,  791,  581,  567,  562,  562,  791,  552,  551,
+
+      536,  529,  524,  503,  516,  502,  502,  510,  791,  490,
+      499,  483,  366,  375,  791,  791,  360,  791,  362,  357,
+      321,  313,  791,  307,  303,  287,  265,  249,  228,  214,
+      207,  212,  160,  791,  157,  791,  791,  791,  168,  384,
+      791,  149,  137,   91,   85,   62,  791,  791,  409,  422,
+      435,  448,  461,  474,  487,  500,  505,  515,  528,  541,
+      552,  565,  578,  590,  603,  616,  629,  642,  655,   85,
+      668,  681,  694,   59
     } ;
 
-static yyconst short int yy_def[378] =
+static yyconst short int yy_def[375] =
     {   0,
-      351,    1,  352,  352,  353,  353,  354,  354,  355,  355,
-      356,  356,  357,  357,  358,  358,  359,  359,  351,  351,
-      351,  351,  351,  351,  351,  351,  360,  351,  351,  351,
-      351,  361,  351,  351,  351,  362,  351,  351,  351,  351,
-      351,  363,  351,  351,  351,  351,  364,  351,  351,  351,
-      351,  351,  365,  366,  351,  351,  351,  367,  351,  351,
-      351,  351,  368,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  369,  351,  351,  351,  370,  351,
-      351,  371,  371,  371,  371,  371,  371,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  360,  351,
-      372,  351,  361,  362,  351,  351,  351,  351,  351,  363,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      366,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  373,  351,  351,  351,  351,
-      368,  351,  351,  351,  351,  351,  351,  351,  374,  351,
-      375,  351,  351,  351,  369,  351,  351,  351,  351,  370,
-      370,  351,  371,  371,  371,  371,  371,  371,  376,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-
-      351,  372,  351,  351,  377,  374,  374,  375,  376,  376,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  374,  374,  374,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-        0,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351
+      348,    1,  349,  349,  350,  350,  351,  351,  352,  352,
+      353,  353,  354,  354,  355,  355,  356,  356,  348,  348,
+      348,  348,  348,  348,  348,  348,  357,  348,  348,  348,
+      348,  358,  348,  348,  348,  359,  348,  348,  348,  348,
+      348,  360,  348,  348,  348,  348,  361,  348,  348,  348,
+      348,  348,  362,  363,  348,  348,  348,  364,  348,  348,
+      348,  348,  365,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  366,  348,  348,  348,  367,  348,
+      348,  368,  368,  368,  368,  368,  368,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+
+      348,  348,  348,  348,  348,  348,  348,  348,  357,  348,
+      369,  348,  358,  359,  348,  348,  348,  348,  348,  360,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      363,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  370,  348,  348,  348,  348,
+      365,  348,  348,  348,  348,  348,  348,  348,  371,  348,
+      372,  348,  348,  348,  366,  348,  348,  348,  348,  367,
+      367,  348,  368,  368,  368,  368,  368,  368,  373,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+
+      348,  369,  348,  348,  374,  371,  372,  373,  373,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,    0,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348
     } ;
 
-static yyconst short int yy_nxt[851] =
+static yyconst short int yy_nxt[842] =
     {   0,
        20,   21,   22,   23,   24,   20,   25,   26,   20,   20,
        27,   28,   29,   29,   30,   31,   32,   33,   20,   20,
@@ -493,96 +492,96 @@ static yyconst short int yy_nxt[851] =
        27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
        27,   27,   27,   27,   27,   27,   27,   34,   35,   20,
        37,   38,  110,   37,   38,  111,   39,   89,   90,   39,
-       43,   44,   45,   43,   44,   45,   91,   92,  237,   40,
+       43,   44,   45,   43,   44,   45,   91,   92,  236,   40,
       160,   41,   40,  161,   41,   55,   56,   57,  185,   46,
        47,   48,   46,   47,   48,   50,   51,  186,   50,   51,
        52,  112,  112,   52,  205,   58,   55,   56,   57,  115,
 
-      116,  117,  118,  350,   46,   53,   48,   46,   53,   48,
-       60,   61,   60,   61,  349,   62,   58,   62,   83,   84,
-       85,  121,  122,   86,  123,  124,  348,   87,  126,  127,
+      116,  117,  118,  347,   46,   53,   48,   46,   53,   48,
+       60,   61,   60,   61,  346,   62,   58,   62,   83,   84,
+       85,  121,  122,   86,  123,  124,  345,   87,  126,  127,
        58,  171,   58,   64,   65,   66,   67,   46,   68,   48,
       128,  129,   69,  194,   83,   84,   85,  132,  133,   86,
        70,  195,   71,   87,   72,  134,  135,  147,  148,  149,
       150,  152,  153,   46,  156,   48,  154,  155,  157,  162,
-      347,  158,  158,  163,  172,  159,  164,  164,   73,  346,
-       74,   64,   65,   66,   67,  212,   68,  166,  167,  213,
-       69,  168,  169,  160,  174,  175,  161,  344,   70,  343,
+      344,  158,  158,  163,  172,  159,  164,  164,   73,  343,
+       74,   64,   65,   66,   67,  211,   68,  166,  167,  212,
+       69,  168,  169,  160,  174,  175,  161,  341,   70,  340,
 
-       71,  342,   72,  174,  176,  177,  175,  174,  175,  174,
+       71,  339,   72,  174,  176,  177,  175,  174,  175,  174,
       175,  174,  175,   89,   90,   91,   92,  178,   89,   90,
       179,   91,   92,  187,  112,  112,   73,  182,   74,   76,
-       77,   78,  183,   79,   80,  216,  188,  196,   81,  191,
-      189,  341,  192,  115,  116,  217,  197,  340,   46,  351,
-       48,   76,   77,   78,  198,   79,   80,  117,  118,  339,
+       77,   78,  183,   79,   80,  215,  188,  196,   81,  191,
+      189,  338,  192,  115,  116,  216,  197,  337,   46,  348,
+       48,   76,   77,   78,  198,   79,   80,  117,  118,  336,
        81,  115,  116,  117,  118,  121,  122,  123,  124,  171,
-       46,  338,   48,   93,  121,  122,  123,  124,  126,  127,
+       46,  335,   48,   93,  121,  122,  123,  124,  126,  127,
       128,  129,  126,  127,  128,  129,  132,  133,  134,  135,
-      132,  133,  351,   94,  337,   95,   96,   97,  134,  135,
-
-      147,  148,   98,  336,   99,  100,  101,  102,  103,  104,
-      105,  106,  351,  107,  108,  137,  149,  150,  147,  148,
-      149,  150,  335,  138,  152,  153,  154,  155,  152,  153,
-      154,  155,  334,  137,  158,  158,  139,  140,  158,  158,
-      333,  141,  164,  164,  164,  164,  166,  167,  142,  168,
-      169,  143,  332,  144,  331,  145,  146,  166,  167,  168,
+      132,  133,  348,   94,  334,   95,   96,   97,  134,  135,
+
+      147,  148,   98,  333,   99,  100,  101,  102,  103,  104,
+      105,  106,  348,  107,  108,  137,  149,  150,  147,  148,
+      149,  150,  332,  138,  152,  153,  154,  155,  152,  153,
+      154,  155,  331,  137,  158,  158,  139,  140,  158,  158,
+      330,  141,  164,  164,  164,  164,  166,  167,  142,  168,
+      169,  143,  329,  144,  328,  145,  146,  166,  167,  168,
       169,  174,  175,  174,  176,  177,  175,  177,  175,  174,
-      176,  174,  175,  174,  210,  221,  238,  174,  210,  330,
-      239,  177,  210,  240,  240,  240,  240,  240,  240,  207,
-      221,  207,  208,  207,  208,  274,  208,  279,  208,  288,
-
-      208,  291,  208,  222,  299,  345,  329,  328,  327,  326,
-      274,  325,  279,  324,  288,  323,  291,  322,  321,  299,
-      345,   36,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   42,   42,   42,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+      176,  174,  175,  174,  209,  220,  174,  209,  156,  177,
+      209,  271,  157,  327,  276,  158,  158,  285,  326,  288,
+      220,  296,  207,  342,  207,  207,  271,  207,  207,  276,
+
+      207,  325,  285,  221,  288,  324,  296,  323,  342,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   54,   54,
        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   63,   63,   63,   75,
-
+       54,   59,   59,   59,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   75,   75,   75,
        75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,  109,  109,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,  113,  320,  113,  113,
-      114,  319,  318,  114,  114,  114,  114,  317,  114,  114,
-      114,  316,  114,  120,  315,  314,  313,  120,  120,  120,
-      120,  120,  120,  120,  125,  312,  125,  125,  125,  125,
-      125,  125,  125,  125,  125,  125,  125,  130,  311,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      131,  310,  309,  308,  131,  131,  131,  131,  131,  131,
-
-      131,  131,  136,  307,  136,  136,  136,  136,  136,  136,
-      136,  136,  136,  136,  136,  151,  306,  305,  304,  303,
-      151,  302,  151,  151,  151,  151,  301,  151,  165,  300,
-      298,  297,  165,  296,  295,  165,  165,  165,  165,  294,
-      165,  170,  293,  292,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  290,  173,  202,  289,  202,
-      202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
-      206,  287,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  208,  286,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  285,
-      284,  283,  282,  281,  280,  278,  277,  276,  275,  273,
-      272,  271,  270,  269,  268,  267,  266,  207,  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,  207,  236,  235,  234,  233,  232,  231,
-      230,  229,  228,  227,  226,  225,  224,  223,  220,  219,
-      218,  215,  214,  211,  207,  204,  203,  201,  200,  199,
-      193,  190,  184,  181,  180,   88,  119,   88,  351,   19,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351
+
+       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,  109,  109,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  322,  113,  113,  114,  321,
+      320,  114,  114,  114,  114,  319,  114,  114,  114,  318,
+      114,  120,  317,  316,  315,  120,  120,  120,  120,  120,
+      120,  120,  125,  314,  125,  125,  125,  125,  125,  125,
+      125,  125,  125,  125,  125,  130,  313,  130,  130,  130,
+      130,  130,  130,  130,  130,  130,  130,  130,  131,  312,
+      311,  310,  131,  131,  131,  131,  131,  131,  131,  131,
+      136,  309,  136,  136,  136,  136,  136,  136,  136,  136,
+
+      136,  136,  136,  151,  308,  307,  306,  305,  151,  304,
+      151,  151,  151,  151,  303,  151,  165,  302,  301,  300,
+      165,  299,  298,  165,  165,  165,  165,  297,  165,  170,
+      295,  294,  170,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  293,  173,  202,  292,  202,  202,  202,
+      202,  202,  202,  202,  202,  202,  202,  202,  206,  206,
+      206,  206,  206,  206,  206,  206,  206,  206,  291,  206,
+      206,  207,  290,  207,  207,  207,  207,  207,  207,  207,
+      207,  207,  207,  207,  208,  208,  208,  208,  208,  208,
+
+      208,  208,  208,  208,  208,  208,  208,  289,  287,  286,
+      284,  283,  282,  281,  280,  279,  278,  277,  275,  274,
+      273,  272,  270,  269,  268,  267,  266,  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,  235,  234,  233,  232,
+      231,  230,  229,  228,  227,  226,  225,  224,  223,  222,
+      219,  218,  217,  214,  213,  210,  204,  203,  201,  200,
+      199,  193,  190,  184,  181,  180,   88,  119,   88,  348,
+       19,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348
     } ;
 
-static yyconst short int yy_chk[851] =
+static yyconst short int yy_chk[842] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -590,93 +589,93 @@ static yyconst short int yy_chk[851] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         3,    3,   28,    4,    4,   28,    3,   22,   22,    4,
-        5,    5,    5,    6,    6,    6,   23,   23,  377,    3,
+        5,    5,    5,    6,    6,    6,   23,   23,  374,    3,
        69,    3,    4,   69,    4,    9,    9,    9,   98,    5,
         5,    5,    6,    6,    6,    7,    7,   98,    8,    8,
-        7,   29,   29,    8,  373,    9,   10,   10,   10,   37,
+        7,   29,   29,    8,  370,    9,   10,   10,   10,   37,
 
-       37,   38,   38,  349,    7,    7,    7,    8,    8,    8,
-       11,   11,   12,   12,  348,   11,   10,   12,   17,   17,
-       17,   43,   43,   17,   44,   44,  347,   17,   50,   50,
+       37,   38,   38,  346,    7,    7,    7,    8,    8,    8,
+       11,   11,   12,   12,  345,   11,   10,   12,   17,   17,
+       17,   43,   43,   17,   44,   44,  344,   17,   50,   50,
        11,   79,   12,   13,   13,   13,   13,   17,   13,   17,
        51,   51,   13,  103,   18,   18,   18,   55,   55,   18,
        13,  103,   13,   18,   13,   56,   56,   60,   60,   61,
        61,   64,   64,   18,   67,   18,   65,   65,   67,   70,
-      346,   67,   67,   70,   79,   67,   70,   70,   13,  345,
+      343,   67,   67,   70,   79,   67,   70,   70,   13,  342,
        13,   14,   14,   14,   14,  181,   14,   76,   76,  181,
-       14,   77,   77,   81,   82,   82,   81,  342,   14,  338,
+       14,   77,   77,   81,   82,   82,   81,  339,   14,  335,
 
-       14,  336,   14,   83,   83,   84,   84,   85,   85,   86,
+       14,  333,   14,   83,   83,   84,   84,   85,   85,   86,
        86,   87,   87,   89,   89,   90,   90,   87,   91,   91,
        87,   92,   92,   99,  112,  112,   14,   96,   14,   15,
        15,   15,   96,   15,   15,  184,   99,  104,   15,  101,
-       99,  335,  101,  115,  115,  184,  104,  334,   15,  170,
-       15,   16,   16,   16,  104,   16,   16,  116,  116,  333,
+       99,  332,  101,  115,  115,  184,  104,  331,   15,  170,
+       15,   16,   16,   16,  104,   16,   16,  116,  116,  330,
        16,  117,  117,  118,  118,  121,  121,  122,  122,  171,
-       16,  332,   16,   25,  123,  123,  124,  124,  126,  126,
+       16,  329,   16,   25,  123,  123,  124,  124,  126,  126,
       127,  127,  128,  128,  129,  129,  132,  132,  133,  133,
-      134,  134,  170,   25,  331,   25,   25,   25,  135,  135,
+      134,  134,  170,   25,  328,   25,   25,   25,  135,  135,
 
-      147,  147,   25,  330,   25,   25,   25,   25,   25,   25,
+      147,  147,   25,  327,   25,   25,   25,   25,   25,   25,
        25,   25,  171,   25,   25,   58,  148,  148,  149,  149,
-      150,  150,  329,   58,  152,  152,  153,  153,  154,  154,
-      155,  155,  328,   58,  157,  157,   58,   58,  158,  158,
-      327,   58,  163,  163,  164,  164,  166,  166,   58,  167,
-      167,   58,  325,   58,  324,   58,   58,  168,  168,  169,
+      150,  150,  326,   58,  152,  152,  153,  153,  154,  154,
+      155,  155,  325,   58,  157,  157,   58,   58,  158,  158,
+      324,   58,  163,  163,  164,  164,  166,  166,   58,  167,
+      167,   58,  322,   58,  321,   58,   58,  168,  168,  169,
       169,  173,  173,  174,  174,  175,  175,  176,  176,  177,
-      177,  178,  178,  179,  179,  188,  207,  209,  209,  323,
-      207,  210,  210,  207,  207,  239,  239,  240,  240,  207,
-      188,  239,  179,  240,  179,  250,  209,  256,  209,  269,
-
-      210,  272,  210,  188,  283,  343,  322,  320,  317,  316,
-      250,  315,  256,  314,  269,  313,  272,  311,  310,  283,
-      343,  352,  352,  352,  352,  352,  352,  352,  352,  352,
-      352,  352,  352,  352,  353,  353,  353,  353,  353,  353,
-      353,  353,  353,  353,  353,  353,  353,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      177,  178,  178,  179,  179,  188,  208,  208,  237,  209,
+      209,  247,  237,  320,  253,  237,  237,  266,  319,  269,
+      188,  280,  179,  340,  179,  208,  247,  208,  209,  253,
+
+      209,  317,  266,  188,  269,  314,  280,  313,  340,  349,
+      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
+      349,  349,  350,  350,  350,  350,  350,  350,  350,  350,
+      350,  350,  350,  350,  350,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  352,  352,
+      352,  352,  352,  352,  352,  352,  352,  352,  352,  352,
+      352,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  353,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  355,  355,  355,
       355,  355,  355,  355,  355,  355,  355,  355,  355,  355,
-      355,  355,  355,  356,  356,  356,  356,  356,  356,  356,
-      356,  356,  356,  356,  356,  356,  357,  357,  357,  357,
-      357,  357,  357,  357,  357,  357,  357,  357,  357,  358,
-
-      358,  358,  358,  358,  358,  358,  358,  358,  358,  358,
-      358,  358,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  360,  360,  361,  361,  361,
-      361,  361,  361,  361,  361,  361,  361,  309,  361,  361,
-      362,  308,  307,  362,  362,  362,  362,  306,  362,  362,
-      362,  305,  362,  363,  304,  303,  302,  363,  363,  363,
-      363,  363,  363,  363,  364,  300,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  364,  364,  365,  299,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      366,  298,  297,  295,  366,  366,  366,  366,  366,  366,
-
-      366,  366,  367,  294,  367,  367,  367,  367,  367,  367,
-      367,  367,  367,  367,  367,  368,  293,  292,  291,  290,
-      368,  288,  368,  368,  368,  368,  287,  368,  369,  285,
-      281,  279,  369,  278,  276,  369,  369,  369,  369,  275,
-      369,  370,  274,  273,  370,  370,  370,  370,  370,  370,
-      370,  370,  370,  370,  371,  371,  371,  371,  371,  371,
-      371,  371,  371,  371,  371,  271,  371,  372,  270,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      374,  268,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  375,  266,  375,  375,  375,  375,  375,
-
-      375,  375,  375,  375,  375,  375,  376,  376,  376,  376,
-      376,  376,  376,  376,  376,  376,  376,  376,  376,  264,
-      263,  261,  259,  258,  257,  254,  253,  252,  251,  249,
-      247,  246,  245,  244,  243,  242,  241,  238,  235,  234,
-      233,  232,  231,  230,  229,  228,  227,  226,  225,  224,
-      223,  222,  221,  220,  219,  218,  217,  216,  215,  214,
-      213,  212,  211,  206,  204,  201,  200,  199,  198,  197,
-      196,  195,  194,  193,  192,  191,  190,  189,  187,  186,
-      185,  183,  182,  180,  159,  138,  113,  107,  106,  105,
-      102,  100,   97,   95,   94,   88,   39,   21,   19,  351,
-
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  351,  351,  351,  351,  351,  351
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  357,  357,  358,  358,  358,  358,  358,
+      358,  358,  358,  358,  358,  312,  358,  358,  359,  311,
+      310,  359,  359,  359,  359,  308,  359,  359,  359,  307,
+      359,  360,  306,  305,  304,  360,  360,  360,  360,  360,
+      360,  360,  361,  303,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  362,  302,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  363,  301,
+      300,  299,  363,  363,  363,  363,  363,  363,  363,  363,
+      364,  297,  364,  364,  364,  364,  364,  364,  364,  364,
+
+      364,  364,  364,  365,  296,  295,  294,  292,  365,  291,
+      365,  365,  365,  365,  290,  365,  366,  289,  288,  287,
+      366,  285,  284,  366,  366,  366,  366,  282,  366,  367,
+      278,  276,  367,  367,  367,  367,  367,  367,  367,  367,
+      367,  367,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  275,  368,  369,  273,  369,  369,  369,
+      369,  369,  369,  369,  369,  369,  369,  369,  371,  371,
+      371,  371,  371,  371,  371,  371,  371,  371,  272,  371,
+      371,  372,  271,  372,  372,  372,  372,  372,  372,  372,
+      372,  372,  372,  372,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  270,  268,  267,
+      265,  263,  261,  260,  258,  256,  255,  254,  251,  250,
+      249,  248,  246,  244,  243,  242,  241,  240,  239,  238,
+      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
+      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
+      214,  213,  212,  211,  210,  206,  204,  201,  200,  199,
+      198,  197,  196,  195,  194,  193,  192,  191,  190,  189,
+      187,  186,  185,  183,  182,  180,  138,  113,  107,  106,
+      105,  102,  100,   97,   95,   94,   88,   39,   21,   19,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
+      348
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -802,7 +801,7 @@ static void handle_at PARAMS ((char *cp));
 #define SC_PROLOGUE 7
 #define SC_EPILOGUE 8
 
-#line 806 "scan-gram.c"
+#line 805 "scan-gram.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -987,7 +986,7 @@ YY_DECL
   /*----------------------------.
   | Scanning Bison directives.  |
   `----------------------------*/
-#line 991 "scan-gram.c"
+#line 990 "scan-gram.c"
 
        if ( yy_init )
                {
@@ -1038,13 +1037,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 352 )
+                               if ( yy_current_state >= 349 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 800 );
+               while ( yy_base[yy_current_state] != 791 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1796,7 +1795,7 @@ YY_RULE_SETUP
 #line 508 "scan-gram.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 1800 "scan-gram.c"
+#line 1799 "scan-gram.c"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -2088,7 +2087,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 352 )
+                       if ( yy_current_state >= 349 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2123,11 +2122,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 352 )
+               if ( yy_current_state >= 349 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 351);
+       yy_is_jam = (yy_current_state == 348);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
index 855fe6a..ddc50e1 100644 (file)
@@ -437,7 +437,7 @@ blanks   [ \t\f]+
 
   "{"                  YY_OBS_GROW; braces_level++;
 
-  "$"("<".*">")?(-?[0-9]+|"$") { handle_dollar (yytext); }
+  "$"("<"[^>]+">")?(-?[0-9]+|"$") { handle_dollar (yytext); }
   "@"(-?[0-9]+|"$")            { handle_at (yytext); }
 
   [^$@\[\]/\'\"\{\}\n\r]+ YY_OBS_GROW;
index 6850ce6..ed56174 100644 (file)
@@ -79,3 +79,76 @@ AT_CHECK([./input], 0,
 ]])
 
 AT_CLEANUP
+
+
+
+## ---------------- ##
+## Exotic Dollars.  ##
+## ---------------- ##
+
+AT_SETUP([Exotic Dollars])
+
+# Make sure complex $n work.
+
+AT_DATA([[input.y]],
+[[%{
+# include <stdio.h>
+# include <stdlib.h>
+  static void yyerror (const char *msg);
+  static int yylex (void);
+# define YYDEBUG         1
+# define YYERROR_VERBOSE 1
+%}
+
+%union
+{
+  int val;
+};
+
+%type <val> a_1 a_2 a_4 a_5
+            sum_of_the_five_previous_values
+
+%%
+exp: a_1 a_2 { $<val>$ = 3; } a_4 a_5 sum_of_the_five_previous_values
+    {
+       printf ("%d\n", $6);
+    }
+;
+a_1: { $$ = 1; };
+a_2: { $$ = 2; };
+a_4: { $$ = 4; };
+a_5: { $$ = 5; };
+
+sum_of_the_five_previous_values:
+    {
+       $$ = $<val>0 + $<val>-1 + $<val>-2 + $<val>-3 + $<val>-4;
+    }
+;
+
+%%
+static int
+yylex (void)
+{
+  return EOF;
+}
+
+static void
+yyerror (const char *msg)
+{
+  fprintf (stderr, "%s\n", msg);
+}
+
+int
+main (void)
+{
+  return yyparse ();
+}
+]])
+
+AT_CHECK([bison input.y -d -v -o input.c])
+AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore])
+AT_CHECK([./input], 0,
+[[15
+]])
+
+AT_CLEANUP