Parser.java

// *******************************************************************
// This file has been automatically generated from the grammar in file
// HRL.grm by ilog.language.syntax.ParserGenerator on
// Wed Sep 20 07:55:11 PDT 2006 --- !!! PLEASE DO NO EDIT !!!
// *******************************************************************

package ilog.rif;

import java.io.Reader;
import java.io.StringReader;
import java.io.IOException;
import ilog.language.syntax.*;
import java.io.PrintStream;
import ilog.language.tools.Misc;


/* ************ */
/* PARSER CLASS */
/* ************ */

class Parser extends StaticParser
{
  /* ************************ */
  /* PARSER CLASS CONSTRUCTOR */
  /* ************************ */

  public Parser(Tokenizer t)
    {
      input = t;
    }

  /* ************************* */
  /* PARSER CLASS DECLARATIONS */
  /* ************************* */

  long start;
  boolean quiet = true;
  PrintStream out = System.out;

  void setStart ()
    {
      start = System.currentTimeMillis();
    }

  void setQuiet (boolean flag)
    {
      quiet = flag;
    }

  void setOutputStream (PrintStream stream)
    {
      out = stream;
    }

  
  void showXml ()
    {
      out.println("*** Total parsing time = "
                 +(System.currentTimeMillis()-start)
                 +" ms");

      if (!quiet)
        {
          errorManager().tallyErrors();
          if (Misc.askYesNo("*** Do you want to see the XML serialization"))
            {
              out.println();
              currentNode().xmlify();
//               currentNode().display();
              out.println();
            }
        }
    }


  /* ********************** */
  /* STATIC INITIALIZATIONS */
  /* ********************** */

  static
    {
      initializeTerminals();
      initializeNonTerminals();
      initializeRules();
      initializeParserActions();
      initializeParserStates();
      initializeActionTables();
      initializeGotoTables();
      initializeStateTables();
    }

  /* ********************* */
  /* PARTIAL PARSE METHODS */
  /* ********************* */

  final static ParseNode $ROOT_SWITCH$ = new ParseNode(terminals[8]);

  public final void parseROOT (String s) throws IOException
    {
      parseROOT(new StringReader(s));
    }

  public final void parseROOT (Reader r) throws IOException
    {
      input.setReader(r);
      errorManager().recoverFromErrors(false);
      setSwitchToken($ROOT_SWITCH$);
      parse();
    }

  /* **************** */
  /* SEMANTIC ACTIONS */
  /* **************** */

  protected ParseNode semanticAction(ParserRule $rule$) throws IOException
    {
      ParseNode $head$ = new ParseNode($rule$.head);

      switch($rule$.index())
        {
          case 2:
            {
            $head$ = $head$.copy(node($rule$,2));
            break;
            }
          case 3:
            {
            showXml();
            break;
            }
          case 0: case 1: case 26: case 30: 
            break;
          default:
            $head$ = $head$.copy(node($rule$,1));
            break;
        }
      return $head$;
    }

  /* **************** */
  /* TERMINAL SYMBOLS */
  /* **************** */

  static void initializeTerminals ()
    {
      terminals = new ParserTerminal[19];

      newTerminal(0,"$EMPTY$",1,2);
      newTerminal(1,"$E_O_I$",1,2);
      newTerminal(2,"error",1,2);
      newTerminal(3,"Var",1,2);
      newTerminal(4,"Rel",1,2);
      newTerminal(5,"Fun",1,2);
      newTerminal(6,"Value",1,2);
      newTerminal(7,"Object",1,2);
      newTerminal(8,"$ROOT_switch$",1,2);
      newTerminal(9,":-",1,2);
      newTerminal(10,"And",1,2);
      newTerminal(11,"(",1,2);
      newTerminal(12,")",1,2);
      newTerminal(13,"Or",1,2);
      newTerminal(14,"Exists",1,2);
      newTerminal(15,"=",1,2);
      newTerminal(16,"Forall",1,2);
      newTerminal(17,"Neg",1,2);
      newTerminal(18,"Naf",1,2);
    }

  /* ******************** */
  /* NON-TERMINAL SYMBOLS */
  /* ******************** */

  static void initializeNonTerminals ()
    {
      nonterminals = new ParserNonTerminal[26];

      newNonTerminal(0,"$START$");
      newNonTerminal(1,"$ROOTS$");
      newNonTerminal(2,"ROOT");
      newNonTerminal(3,"HRL");
      newNonTerminal(4,"RuleSet");
      newNonTerminal(5,"Rule");
      newNonTerminal(6,"HornRule");
      newNonTerminal(7,"Implication");
      newNonTerminal(8,"HEAD");
      newNonTerminal(9,"BODY");
      newNonTerminal(10,"LITFORM");
      newNonTerminal(11,"CONDIT");
      newNonTerminal(12,"QUANTIF");
      newNonTerminal(13,"CONJ");
      newNonTerminal(14,"DISJ");
      newNonTerminal(15,"CONDIT_star");
      newNonTerminal(16,"Var_plus");
      newNonTerminal(17,"Atom");
      newNonTerminal(18,"TERM_star");
      newNonTerminal(19,"TERM");
      newNonTerminal(20,"Con");
      newNonTerminal(21,"Expr");
      newNonTerminal(22,"CONDIT_plus");
      newNonTerminal(23,"TERM_plus");
      newNonTerminal(24,"Data");
      newNonTerminal(25,"Ind");
    }

  /* **************** */
  /* PRODUCTION RULES */
  /* **************** */

  static void initializeRules ()
    {
      rules = new ParserRule[44];

      rules[0] = new ParserRule(0,1,0,1,2);
      rules[1] = new ParserRule(1,1,1,1,2);
      rules[2] = new ParserRule(1,2,2,1,2);
      rules[3] = new ParserRule(2,1,3,1,2);
      rules[4] = new ParserRule(3,1,4,1,2).xmlInfo("rif:RuleSet 1");
      rules[5] = new ParserRule(4,1,5,1,2);
      rules[6] = new ParserRule(4,2,6,1,2);
      rules[7] = new ParserRule(5,1,7,1,2).xmlInfo("rif:HornRule 1");
      rules[8] = new ParserRule(6,1,8,1,2);
      rules[9] = new ParserRule(7,3,9,1,2).xmlInfo("hrl:Implies 3 1");
      rules[10] = new ParserRule(8,1,10,1,2).xmlInfo("hrl:Consequent 1");
      rules[11] = new ParserRule(9,1,11,1,2).xmlInfo("hrl:Antecedent 1");
      rules[12] = new ParserRule(11,1,12,1,2);
      rules[13] = new ParserRule(11,1,13,1,2);
      rules[14] = new ParserRule(11,1,14,1,2);
      rules[15] = new ParserRule(11,1,15,1,2);
      rules[16] = new ParserRule(13,4,16,1,2).xmlInfo("rcl:And 3");
      rules[17] = new ParserRule(14,4,17,1,2).xmlInfo("rcl:Or 3");
      rules[18] = new ParserRule(12,5,18,1,2).xmlInfo("rcl:Exists 2 4");
      rules[19] = new ParserRule(10,1,19,1,2);
      rules[20] = new ParserRule(17,4,20,1,2).xmlInfo("rcl:Atom 1 3");
      rules[21] = new ParserRule(17,3,21,1,2).xmlInfo("rcl:Equal 1 3");
      rules[22] = new ParserRule(19,1,22,1,2);
      rules[23] = new ParserRule(19,1,23,1,2);
      rules[24] = new ParserRule(19,1,24,1,2);
      rules[25] = new ParserRule(21,4,25,1,2).xmlInfo("rcl:Expr 1 3");
      rules[26] = new ParserRule(15,0,26,1,2);
      rules[27] = new ParserRule(15,1,27,1,2);
      rules[28] = new ParserRule(22,1,28,1,2);
      rules[29] = new ParserRule(22,2,29,1,2);
      rules[30] = new ParserRule(18,0,30,1,2);
      rules[31] = new ParserRule(18,1,31,1,2);
      rules[32] = new ParserRule(23,1,32,1,2);
      rules[33] = new ParserRule(23,2,33,1,2);
      rules[34] = new ParserRule(16,1,34,1,2);
      rules[35] = new ParserRule(16,2,35,1,2);
      rules[36] = new ParserRule(20,1,36,1,2).xmlInfo("rcl:Data 1");
      rules[37] = new ParserRule(20,1,37,1,2).xmlInfo("rcl:Ind 1");
      rules[38] = new ParserRule(24,1,38,1,2);
      rules[39] = new ParserRule(25,1,39,1,2);
      rules[40] = new ParserRule(12,5,40,1,2).xmlInfo("rcl:Forall 2 4");
      rules[41] = new ParserRule(10,2,41,1,2).xmlInfo("rcl:Neg 2");
      rules[42] = new ParserRule(10,2,42,1,2).xmlInfo("rcl:Naf 2");
      rules[43] = new ParserRule(10,3,43,1,2).xmlInfo("rcl:NafNeg 3");
    }

  /* ************** */
  /* PARSER ACTIONS */
  /* ************** */

  static void initializeParserActions ()
    {
      actions = new ParserAction[545];

      newAction(0,5,0);
      newAction(1,2,0);
      newAction(2,0,3);
      newAction(3,0,12);
      newAction(4,0,13);
      newAction(5,0,14);
      newAction(6,0,16);
      newAction(7,0,21);
      newAction(8,0,22);
      newAction(9,0,23);
      newAction(10,1,1);
      newAction(11,0,12);
      newAction(12,0,13);
      newAction(13,0,14);
      newAction(14,0,16);
      newAction(15,0,21);
      newAction(16,0,22);
      newAction(17,0,23);
      newAction(18,1,3);
      newAction(19,1,4);
      newAction(20,0,12);
      newAction(21,0,13);
      newAction(22,0,14);
      newAction(23,0,16);
      newAction(24,0,21);
      newAction(25,0,22);
      newAction(26,0,23);
      newAction(27,1,5);
      newAction(28,1,5);
      newAction(29,1,5);
      newAction(30,1,5);
      newAction(31,1,5);
      newAction(32,1,5);
      newAction(33,1,5);
      newAction(34,1,5);
      newAction(35,1,7);
      newAction(36,1,7);
      newAction(37,1,7);
      newAction(38,1,7);
      newAction(39,1,7);
      newAction(40,1,7);
      newAction(41,1,7);
      newAction(42,1,7);
      newAction(43,1,8);
      newAction(44,1,8);
      newAction(45,1,8);
      newAction(46,1,8);
      newAction(47,1,8);
      newAction(48,1,8);
      newAction(49,1,8);
      newAction(50,1,8);
      newAction(51,0,39);
      newAction(52,1,10);
      newAction(53,1,19);
      newAction(54,1,19);
      newAction(55,1,19);
      newAction(56,1,19);
      newAction(57,1,19);
      newAction(58,1,19);
      newAction(59,1,19);
      newAction(60,1,19);
      newAction(61,1,19);
      newAction(62,1,19);
      newAction(63,1,19);
      newAction(64,1,19);
      newAction(65,1,19);
      newAction(66,1,19);
      newAction(67,0,14);
      newAction(68,0,16);
      newAction(69,0,21);
      newAction(70,0,22);
      newAction(71,0,23);
      newAction(72,0,36);
      newAction(73,0,14);
      newAction(74,0,16);
      newAction(75,0,21);
      newAction(76,0,22);
      newAction(77,0,23);
      newAction(78,0,32);
      newAction(79,0,30);
      newAction(80,1,22);
      newAction(81,1,22);
      newAction(82,1,22);
      newAction(83,1,22);
      newAction(84,1,22);
      newAction(85,1,22);
      newAction(86,1,22);
      newAction(87,1,22);
      newAction(88,1,22);
      newAction(89,1,22);
      newAction(90,1,22);
      newAction(91,1,22);
      newAction(92,1,22);
      newAction(93,1,22);
      newAction(94,1,22);
      newAction(95,1,23);
      newAction(96,1,23);
      newAction(97,1,23);
      newAction(98,1,23);
      newAction(99,1,23);
      newAction(100,1,23);
      newAction(101,1,23);
      newAction(102,1,23);
      newAction(103,1,23);
      newAction(104,1,23);
      newAction(105,1,23);
      newAction(106,1,23);
      newAction(107,1,23);
      newAction(108,1,23);
      newAction(109,1,23);
      newAction(110,1,24);
      newAction(111,1,24);
      newAction(112,1,24);
      newAction(113,1,24);
      newAction(114,1,24);
      newAction(115,1,24);
      newAction(116,1,24);
      newAction(117,1,24);
      newAction(118,1,24);
      newAction(119,1,24);
      newAction(120,1,24);
      newAction(121,1,24);
      newAction(122,1,24);
      newAction(123,1,24);
      newAction(124,1,24);
      newAction(125,1,36);
      newAction(126,1,36);
      newAction(127,1,36);
      newAction(128,1,36);
      newAction(129,1,36);
      newAction(130,1,36);
      newAction(131,1,36);
      newAction(132,1,36);
      newAction(133,1,36);
      newAction(134,1,36);
      newAction(135,1,36);
      newAction(136,1,36);
      newAction(137,1,36);
      newAction(138,1,36);
      newAction(139,1,36);
      newAction(140,1,37);
      newAction(141,1,37);
      newAction(142,1,37);
      newAction(143,1,37);
      newAction(144,1,37);
      newAction(145,1,37);
      newAction(146,1,37);
      newAction(147,1,37);
      newAction(148,1,37);
      newAction(149,1,37);
      newAction(150,1,37);
      newAction(151,1,37);
      newAction(152,1,37);
      newAction(153,1,37);
      newAction(154,1,37);
      newAction(155,0,24);
      newAction(156,1,38);
      newAction(157,1,38);
      newAction(158,1,38);
      newAction(159,1,38);
      newAction(160,1,38);
      newAction(161,1,38);
      newAction(162,1,38);
      newAction(163,1,38);
      newAction(164,1,38);
      newAction(165,1,38);
      newAction(166,1,38);
      newAction(167,1,38);
      newAction(168,1,38);
      newAction(169,1,38);
      newAction(170,1,38);
      newAction(171,1,39);
      newAction(172,1,39);
      newAction(173,1,39);
      newAction(174,1,39);
      newAction(175,1,39);
      newAction(176,1,39);
      newAction(177,1,39);
      newAction(178,1,39);
      newAction(179,1,39);
      newAction(180,1,39);
      newAction(181,1,39);
      newAction(182,1,39);
      newAction(183,1,39);
      newAction(184,1,39);
      newAction(185,1,39);
      newAction(186,1,30);
      newAction(187,0,16);
      newAction(188,0,21);
      newAction(189,0,22);
      newAction(190,0,23);
      newAction(191,0,29);
      newAction(192,1,31);
      newAction(193,0,16);
      newAction(194,0,21);
      newAction(195,0,22);
      newAction(196,0,23);
      newAction(197,1,32);
      newAction(198,1,32);
      newAction(199,1,32);
      newAction(200,1,32);
      newAction(201,1,32);
      newAction(202,1,33);
      newAction(203,1,33);
      newAction(204,1,33);
      newAction(205,1,33);
      newAction(206,1,33);
      newAction(207,1,25);
      newAction(208,1,25);
      newAction(209,1,25);
      newAction(210,1,25);
      newAction(211,1,25);
      newAction(212,1,25);
      newAction(213,1,25);
      newAction(214,1,25);
      newAction(215,1,25);
      newAction(216,1,25);
      newAction(217,1,25);
      newAction(218,1,25);
      newAction(219,1,25);
      newAction(220,1,25);
      newAction(221,1,25);
      newAction(222,0,16);
      newAction(223,0,21);
      newAction(224,0,22);
      newAction(225,0,23);
      newAction(226,1,21);
      newAction(227,1,21);
      newAction(228,1,21);
      newAction(229,1,21);
      newAction(230,1,21);
      newAction(231,1,21);
      newAction(232,1,21);
      newAction(233,1,21);
      newAction(234,1,21);
      newAction(235,1,21);
      newAction(236,1,21);
      newAction(237,1,21);
      newAction(238,1,21);
      newAction(239,1,21);
      newAction(240,1,30);
      newAction(241,0,16);
      newAction(242,0,21);
      newAction(243,0,22);
      newAction(244,0,23);
      newAction(245,0,34);
      newAction(246,1,20);
      newAction(247,1,20);
      newAction(248,1,20);
      newAction(249,1,20);
      newAction(250,1,20);
      newAction(251,1,20);
      newAction(252,1,20);
      newAction(253,1,20);
      newAction(254,1,20);
      newAction(255,1,20);
      newAction(256,1,20);
      newAction(257,1,20);
      newAction(258,1,20);
      newAction(259,1,20);
      newAction(260,1,42);
      newAction(261,1,42);
      newAction(262,1,42);
      newAction(263,1,42);
      newAction(264,1,42);
      newAction(265,1,42);
      newAction(266,1,42);
      newAction(267,1,42);
      newAction(268,1,42);
      newAction(269,1,42);
      newAction(270,1,42);
      newAction(271,1,42);
      newAction(272,1,42);
      newAction(273,1,42);
      newAction(274,0,14);
      newAction(275,0,16);
      newAction(276,0,21);
      newAction(277,0,22);
      newAction(278,0,23);
      newAction(279,1,43);
      newAction(280,1,43);
      newAction(281,1,43);
      newAction(282,1,43);
      newAction(283,1,43);
      newAction(284,1,43);
      newAction(285,1,43);
      newAction(286,1,43);
      newAction(287,1,43);
      newAction(288,1,43);
      newAction(289,1,43);
      newAction(290,1,43);
      newAction(291,1,43);
      newAction(292,1,43);
      newAction(293,1,41);
      newAction(294,1,41);
      newAction(295,1,41);
      newAction(296,1,41);
      newAction(297,1,41);
      newAction(298,1,41);
      newAction(299,1,41);
      newAction(300,1,41);
      newAction(301,1,41);
      newAction(302,1,41);
      newAction(303,1,41);
      newAction(304,1,41);
      newAction(305,1,41);
      newAction(306,1,41);
      newAction(307,0,12);
      newAction(308,0,13);
      newAction(309,0,46);
      newAction(310,0,47);
      newAction(311,0,48);
      newAction(312,0,49);
      newAction(313,0,14);
      newAction(314,0,16);
      newAction(315,0,21);
      newAction(316,0,22);
      newAction(317,0,23);
      newAction(318,1,9);
      newAction(319,1,9);
      newAction(320,1,9);
      newAction(321,1,9);
      newAction(322,1,9);
      newAction(323,1,9);
      newAction(324,1,9);
      newAction(325,1,9);
      newAction(326,1,11);
      newAction(327,1,11);
      newAction(328,1,11);
      newAction(329,1,11);
      newAction(330,1,11);
      newAction(331,1,11);
      newAction(332,1,11);
      newAction(333,1,11);
      newAction(334,1,12);
      newAction(335,1,12);
      newAction(336,1,12);
      newAction(337,1,12);
      newAction(338,1,12);
      newAction(339,1,12);
      newAction(340,1,12);
      newAction(341,1,12);
      newAction(342,1,12);
      newAction(343,1,12);
      newAction(344,1,12);
      newAction(345,1,12);
      newAction(346,1,12);
      newAction(347,1,13);
      newAction(348,1,13);
      newAction(349,1,13);
      newAction(350,1,13);
      newAction(351,1,13);
      newAction(352,1,13);
      newAction(353,1,13);
      newAction(354,1,13);
      newAction(355,1,13);
      newAction(356,1,13);
      newAction(357,1,13);
      newAction(358,1,13);
      newAction(359,1,13);
      newAction(360,1,14);
      newAction(361,1,14);
      newAction(362,1,14);
      newAction(363,1,14);
      newAction(364,1,14);
      newAction(365,1,14);
      newAction(366,1,14);
      newAction(367,1,14);
      newAction(368,1,14);
      newAction(369,1,14);
      newAction(370,1,14);
      newAction(371,1,14);
      newAction(372,1,14);
      newAction(373,1,15);
      newAction(374,1,15);
      newAction(375,1,15);
      newAction(376,1,15);
      newAction(377,1,15);
      newAction(378,1,15);
      newAction(379,1,15);
      newAction(380,1,15);
      newAction(381,1,15);
      newAction(382,1,15);
      newAction(383,1,15);
      newAction(384,1,15);
      newAction(385,1,15);
      newAction(386,0,60);
      newAction(387,0,60);
      newAction(388,0,56);
      newAction(389,0,50);
      newAction(390,0,12);
      newAction(391,0,13);
      newAction(392,0,46);
      newAction(393,0,47);
      newAction(394,0,48);
      newAction(395,0,49);
      newAction(396,1,26);
      newAction(397,0,14);
      newAction(398,0,16);
      newAction(399,0,21);
      newAction(400,0,22);
      newAction(401,0,23);
      newAction(402,0,55);
      newAction(403,1,27);
      newAction(404,0,12);
      newAction(405,0,13);
      newAction(406,0,46);
      newAction(407,0,47);
      newAction(408,0,48);
      newAction(409,0,49);
      newAction(410,0,14);
      newAction(411,0,16);
      newAction(412,0,21);
      newAction(413,0,22);
      newAction(414,0,23);
      newAction(415,1,28);
      newAction(416,1,28);
      newAction(417,1,28);
      newAction(418,1,28);
      newAction(419,1,28);
      newAction(420,1,28);
      newAction(421,1,28);
      newAction(422,1,28);
      newAction(423,1,28);
      newAction(424,1,28);
      newAction(425,1,28);
      newAction(426,1,28);
      newAction(427,1,29);
      newAction(428,1,29);
      newAction(429,1,29);
      newAction(430,1,29);
      newAction(431,1,29);
      newAction(432,1,29);
      newAction(433,1,29);
      newAction(434,1,29);
      newAction(435,1,29);
      newAction(436,1,29);
      newAction(437,1,29);
      newAction(438,1,29);
      newAction(439,1,17);
      newAction(440,1,17);
      newAction(441,1,17);
      newAction(442,1,17);
      newAction(443,1,17);
      newAction(444,1,17);
      newAction(445,1,17);
      newAction(446,1,17);
      newAction(447,1,17);
      newAction(448,1,17);
      newAction(449,1,17);
      newAction(450,1,17);
      newAction(451,1,17);
      newAction(452,0,12);
      newAction(453,0,13);
      newAction(454,0,46);
      newAction(455,0,47);
      newAction(456,0,48);
      newAction(457,0,49);
      newAction(458,1,26);
      newAction(459,0,14);
      newAction(460,0,16);
      newAction(461,0,21);
      newAction(462,0,22);
      newAction(463,0,23);
      newAction(464,0,58);
      newAction(465,1,16);
      newAction(466,1,16);
      newAction(467,1,16);
      newAction(468,1,16);
      newAction(469,1,16);
      newAction(470,1,16);
      newAction(471,1,16);
      newAction(472,1,16);
      newAction(473,1,16);
      newAction(474,1,16);
      newAction(475,1,16);
      newAction(476,1,16);
      newAction(477,1,16);
      newAction(478,0,61);
      newAction(479,0,62);
      newAction(480,1,34);
      newAction(481,1,34);
      newAction(482,1,35);
      newAction(483,1,35);
      newAction(484,0,12);
      newAction(485,0,13);
      newAction(486,0,46);
      newAction(487,0,47);
      newAction(488,0,48);
      newAction(489,0,49);
      newAction(490,0,14);
      newAction(491,0,16);
      newAction(492,0,21);
      newAction(493,0,22);
      newAction(494,0,23);
      newAction(495,0,64);
      newAction(496,1,40);
      newAction(497,1,40);
      newAction(498,1,40);
      newAction(499,1,40);
      newAction(500,1,40);
      newAction(501,1,40);
      newAction(502,1,40);
      newAction(503,1,40);
      newAction(504,1,40);
      newAction(505,1,40);
      newAction(506,1,40);
      newAction(507,1,40);
      newAction(508,1,40);
      newAction(509,0,66);
      newAction(510,0,61);
      newAction(511,0,12);
      newAction(512,0,13);
      newAction(513,0,46);
      newAction(514,0,47);
      newAction(515,0,48);
      newAction(516,0,49);
      newAction(517,0,14);
      newAction(518,0,16);
      newAction(519,0,21);
      newAction(520,0,22);
      newAction(521,0,23);
      newAction(522,0,68);
      newAction(523,1,18);
      newAction(524,1,18);
      newAction(525,1,18);
      newAction(526,1,18);
      newAction(527,1,18);
      newAction(528,1,18);
      newAction(529,1,18);
      newAction(530,1,18);
      newAction(531,1,18);
      newAction(532,1,18);
      newAction(533,1,18);
      newAction(534,1,18);
      newAction(535,1,18);
      newAction(536,1,6);
      newAction(537,1,6);
      newAction(538,1,6);
      newAction(539,1,6);
      newAction(540,1,6);
      newAction(541,1,6);
      newAction(542,1,6);
      newAction(543,1,6);
      newAction(544,1,2);
    }

  /* ************* */
  /* PARSER STATES */
  /* ************* */

  static void initializeParserStates ()
    {
      states = new ParserState[71];

      for (int i=0; i<71; i++) newState(i);
    }

  /* ************* */
  /* ACTION TABLES */
  /* ************* */

  static void initializeActionTables ()
    {
      newActionTables(65);

      newActionTable(0,8);
	setAction(0,17,3);
	setAction(0,4,5);
	setAction(0,8,2);
	setAction(0,6,8);
	setAction(0,18,4);
	setAction(0,3,6);
	setAction(0,7,9);
	setAction(0,5,7);

      newActionTable(1,1);
	setAction(1,1,1);

      newActionTable(2,1);
	setAction(2,1,10);

      newActionTable(3,7);
	setAction(3,17,11);
	setAction(3,4,13);
	setAction(3,6,16);
	setAction(3,18,12);
	setAction(3,3,14);
	setAction(3,7,17);
	setAction(3,5,15);

      newActionTable(4,1);
	setAction(4,1,18);

      newActionTable(5,8);
	setAction(5,17,20);
	setAction(5,4,22);
	setAction(5,6,25);
	setAction(5,1,19);
	setAction(5,18,21);
	setAction(5,3,23);
	setAction(5,7,26);
	setAction(5,5,24);

      newActionTable(6,8);
	setAction(6,17,33);
	setAction(6,4,29);
	setAction(6,6,31);
	setAction(6,1,27);
	setAction(6,18,34);
	setAction(6,3,28);
	setAction(6,7,32);
	setAction(6,5,30);

      newActionTable(7,8);
	setAction(7,17,41);
	setAction(7,4,37);
	setAction(7,6,39);
	setAction(7,1,35);
	setAction(7,18,42);
	setAction(7,3,36);
	setAction(7,7,40);
	setAction(7,5,38);

      newActionTable(8,8);
	setAction(8,17,49);
	setAction(8,4,45);
	setAction(8,6,47);
	setAction(8,1,43);
	setAction(8,18,50);
	setAction(8,3,44);
	setAction(8,7,48);
	setAction(8,5,46);

      newActionTable(9,1);
	setAction(9,9,51);

      newActionTable(10,1);
	setAction(10,9,52);

      newActionTable(11,14);
	setAction(11,4,55);
	setAction(11,16,64);
	setAction(11,18,66);
	setAction(11,3,54);
	setAction(11,7,58);
	setAction(11,12,61);
	setAction(11,17,65);
	setAction(11,13,62);
	setAction(11,9,59);
	setAction(11,6,57);
	setAction(11,1,53);
	setAction(11,14,63);
	setAction(11,10,60);
	setAction(11,5,56);

      newActionTable(12,5);
	setAction(12,4,67);
	setAction(12,6,70);
	setAction(12,3,68);
	setAction(12,7,71);
	setAction(12,5,69);

      newActionTable(13,6);
	setAction(13,17,72);
	setAction(13,4,73);
	setAction(13,6,76);
	setAction(13,3,74);
	setAction(13,7,77);
	setAction(13,5,75);

      newActionTable(14,1);
	setAction(14,11,78);

      newActionTable(15,1);
	setAction(15,15,79);

      newActionTable(16,15);
	setAction(16,15,91);
	setAction(16,4,82);
	setAction(16,16,92);
	setAction(16,18,94);
	setAction(16,3,81);
	setAction(16,7,85);
	setAction(16,12,88);
	setAction(16,17,93);
	setAction(16,13,89);
	setAction(16,9,86);
	setAction(16,6,84);
	setAction(16,1,80);
	setAction(16,14,90);
	setAction(16,10,87);
	setAction(16,5,83);

      newActionTable(17,15);
	setAction(17,15,106);
	setAction(17,4,97);
	setAction(17,16,107);
	setAction(17,18,109);
	setAction(17,3,96);
	setAction(17,7,100);
	setAction(17,12,103);
	setAction(17,17,108);
	setAction(17,13,104);
	setAction(17,9,101);
	setAction(17,6,99);
	setAction(17,1,95);
	setAction(17,14,105);
	setAction(17,10,102);
	setAction(17,5,98);

      newActionTable(18,15);
	setAction(18,15,121);
	setAction(18,4,112);
	setAction(18,16,122);
	setAction(18,18,124);
	setAction(18,3,111);
	setAction(18,7,115);
	setAction(18,12,118);
	setAction(18,17,123);
	setAction(18,13,119);
	setAction(18,9,116);
	setAction(18,6,114);
	setAction(18,1,110);
	setAction(18,14,120);
	setAction(18,10,117);
	setAction(18,5,113);

      newActionTable(19,15);
	setAction(19,15,136);
	setAction(19,4,127);
	setAction(19,16,137);
	setAction(19,18,139);
	setAction(19,3,126);
	setAction(19,7,130);
	setAction(19,12,133);
	setAction(19,17,138);
	setAction(19,13,134);
	setAction(19,9,131);
	setAction(19,6,129);
	setAction(19,1,125);
	setAction(19,14,135);
	setAction(19,10,132);
	setAction(19,5,128);

      newActionTable(20,15);
	setAction(20,15,151);
	setAction(20,4,142);
	setAction(20,16,152);
	setAction(20,18,154);
	setAction(20,3,141);
	setAction(20,7,145);
	setAction(20,12,148);
	setAction(20,17,153);
	setAction(20,13,149);
	setAction(20,9,146);
	setAction(20,6,144);
	setAction(20,1,140);
	setAction(20,14,150);
	setAction(20,10,147);
	setAction(20,5,143);

      newActionTable(21,1);
	setAction(21,11,155);

      newActionTable(22,15);
	setAction(22,15,167);
	setAction(22,4,158);
	setAction(22,16,168);
	setAction(22,18,170);
	setAction(22,3,157);
	setAction(22,7,161);
	setAction(22,12,164);
	setAction(22,17,169);
	setAction(22,13,165);
	setAction(22,9,162);
	setAction(22,6,160);
	setAction(22,1,156);
	setAction(22,14,166);
	setAction(22,10,163);
	setAction(22,5,159);

      newActionTable(23,15);
	setAction(23,15,182);
	setAction(23,4,173);
	setAction(23,16,183);
	setAction(23,18,185);
	setAction(23,3,172);
	setAction(23,7,176);
	setAction(23,12,179);
	setAction(23,17,184);
	setAction(23,13,180);
	setAction(23,9,177);
	setAction(23,6,175);
	setAction(23,1,171);
	setAction(23,14,181);
	setAction(23,10,178);
	setAction(23,5,174);

      newActionTable(24,5);
	setAction(24,6,189);
	setAction(24,3,187);
	setAction(24,7,190);
	setAction(24,5,188);
	setAction(24,12,186);

      newActionTable(25,1);
	setAction(25,12,191);

      newActionTable(26,5);
	setAction(26,6,195);
	setAction(26,3,193);
	setAction(26,7,196);
	setAction(26,5,194);
	setAction(26,12,192);

      newActionTable(27,5);
	setAction(27,6,199);
	setAction(27,3,197);
	setAction(27,7,200);
	setAction(27,12,201);
	setAction(27,5,198);

      newActionTable(28,5);
	setAction(28,6,204);
	setAction(28,3,202);
	setAction(28,7,205);
	setAction(28,12,206);
	setAction(28,5,203);

      newActionTable(29,15);
	setAction(29,15,218);
	setAction(29,4,209);
	setAction(29,16,219);
	setAction(29,18,221);
	setAction(29,3,208);
	setAction(29,7,212);
	setAction(29,12,215);
	setAction(29,17,220);
	setAction(29,13,216);
	setAction(29,9,213);
	setAction(29,6,211);
	setAction(29,1,207);
	setAction(29,14,217);
	setAction(29,10,214);
	setAction(29,5,210);

      newActionTable(30,4);
	setAction(30,6,224);
	setAction(30,3,222);
	setAction(30,7,225);
	setAction(30,5,223);

      newActionTable(31,14);
	setAction(31,4,228);
	setAction(31,16,237);
	setAction(31,18,239);
	setAction(31,3,227);
	setAction(31,7,231);
	setAction(31,12,234);
	setAction(31,17,238);
	setAction(31,13,235);
	setAction(31,9,232);
	setAction(31,6,230);
	setAction(31,1,226);
	setAction(31,14,236);
	setAction(31,10,233);
	setAction(31,5,229);

      newActionTable(32,1);
	setAction(32,12,245);

      newActionTable(33,14);
	setAction(33,4,248);
	setAction(33,16,257);
	setAction(33,18,259);
	setAction(33,3,247);
	setAction(33,7,251);
	setAction(33,12,254);
	setAction(33,17,258);
	setAction(33,13,255);
	setAction(33,9,252);
	setAction(33,6,250);
	setAction(33,1,246);
	setAction(33,14,256);
	setAction(33,10,253);
	setAction(33,5,249);

      newActionTable(34,14);
	setAction(34,4,262);
	setAction(34,16,271);
	setAction(34,18,273);
	setAction(34,3,261);
	setAction(34,7,265);
	setAction(34,12,268);
	setAction(34,17,272);
	setAction(34,13,269);
	setAction(34,9,266);
	setAction(34,6,264);
	setAction(34,1,260);
	setAction(34,14,270);
	setAction(34,10,267);
	setAction(34,5,263);

      newActionTable(35,14);
	setAction(35,4,281);
	setAction(35,16,290);
	setAction(35,18,292);
	setAction(35,3,280);
	setAction(35,7,284);
	setAction(35,12,287);
	setAction(35,17,291);
	setAction(35,13,288);
	setAction(35,9,285);
	setAction(35,6,283);
	setAction(35,1,279);
	setAction(35,14,289);
	setAction(35,10,286);
	setAction(35,5,282);

      newActionTable(36,14);
	setAction(36,4,295);
	setAction(36,16,304);
	setAction(36,18,306);
	setAction(36,3,294);
	setAction(36,7,298);
	setAction(36,12,301);
	setAction(36,17,305);
	setAction(36,13,302);
	setAction(36,9,299);
	setAction(36,6,297);
	setAction(36,1,293);
	setAction(36,14,303);
	setAction(36,10,300);
	setAction(36,5,296);

      newActionTable(37,11);
	setAction(37,17,307);
	setAction(37,4,313);
	setAction(37,13,312);
	setAction(37,6,316);
	setAction(37,16,310);
	setAction(37,18,308);
	setAction(37,3,314);
	setAction(37,14,309);
	setAction(37,7,317);
	setAction(37,10,311);
	setAction(37,5,315);

      newActionTable(38,8);
	setAction(38,17,324);
	setAction(38,4,320);
	setAction(38,6,322);
	setAction(38,1,318);
	setAction(38,18,325);
	setAction(38,3,319);
	setAction(38,7,323);
	setAction(38,5,321);

      newActionTable(39,8);
	setAction(39,17,332);
	setAction(39,4,328);
	setAction(39,6,330);
	setAction(39,1,326);
	setAction(39,18,333);
	setAction(39,3,327);
	setAction(39,7,331);
	setAction(39,5,329);

      newActionTable(40,13);
	setAction(40,4,336);
	setAction(40,16,344);
	setAction(40,18,346);
	setAction(40,3,335);
	setAction(40,7,339);
	setAction(40,12,341);
	setAction(40,17,345);
	setAction(40,13,342);
	setAction(40,6,338);
	setAction(40,1,334);
	setAction(40,14,343);
	setAction(40,10,340);
	setAction(40,5,337);

      newActionTable(41,13);
	setAction(41,4,349);
	setAction(41,16,357);
	setAction(41,18,359);
	setAction(41,3,348);
	setAction(41,7,352);
	setAction(41,12,354);
	setAction(41,17,358);
	setAction(41,13,355);
	setAction(41,6,351);
	setAction(41,1,347);
	setAction(41,14,356);
	setAction(41,10,353);
	setAction(41,5,350);

      newActionTable(42,13);
	setAction(42,4,362);
	setAction(42,16,370);
	setAction(42,18,372);
	setAction(42,3,361);
	setAction(42,7,365);
	setAction(42,12,367);
	setAction(42,17,371);
	setAction(42,13,368);
	setAction(42,6,364);
	setAction(42,1,360);
	setAction(42,14,369);
	setAction(42,10,366);
	setAction(42,5,363);

      newActionTable(43,13);
	setAction(43,4,375);
	setAction(43,16,383);
	setAction(43,18,385);
	setAction(43,3,374);
	setAction(43,7,378);
	setAction(43,12,380);
	setAction(43,17,384);
	setAction(43,13,381);
	setAction(43,6,377);
	setAction(43,1,373);
	setAction(43,14,382);
	setAction(43,10,379);
	setAction(43,5,376);

      newActionTable(44,1);
	setAction(44,3,386);

      newActionTable(45,1);
	setAction(45,11,388);

      newActionTable(46,1);
	setAction(46,11,389);

      newActionTable(47,12);
	setAction(47,17,390);
	setAction(47,4,397);
	setAction(47,13,395);
	setAction(47,6,400);
	setAction(47,16,393);
	setAction(47,18,391);
	setAction(47,3,398);
	setAction(47,14,392);
	setAction(47,7,401);
	setAction(47,10,394);
	setAction(47,5,399);
	setAction(47,12,396);

      newActionTable(48,1);
	setAction(48,12,402);

      newActionTable(49,12);
	setAction(49,17,404);
	setAction(49,4,410);
	setAction(49,13,409);
	setAction(49,6,413);
	setAction(49,16,407);
	setAction(49,18,405);
	setAction(49,3,411);
	setAction(49,14,406);
	setAction(49,7,414);
	setAction(49,10,408);
	setAction(49,5,412);
	setAction(49,12,403);

      newActionTable(50,12);
	setAction(50,17,425);
	setAction(50,13,422);
	setAction(50,4,416);
	setAction(50,6,418);
	setAction(50,16,424);
	setAction(50,18,426);
	setAction(50,14,423);
	setAction(50,3,415);
	setAction(50,10,420);
	setAction(50,7,419);
	setAction(50,12,421);
	setAction(50,5,417);

      newActionTable(51,12);
	setAction(51,17,437);
	setAction(51,13,434);
	setAction(51,4,428);
	setAction(51,6,430);
	setAction(51,16,436);
	setAction(51,18,438);
	setAction(51,14,435);
	setAction(51,3,427);
	setAction(51,10,432);
	setAction(51,7,431);
	setAction(51,12,433);
	setAction(51,5,429);

      newActionTable(52,13);
	setAction(52,4,441);
	setAction(52,16,449);
	setAction(52,18,451);
	setAction(52,3,440);
	setAction(52,7,444);
	setAction(52,12,446);
	setAction(52,17,450);
	setAction(52,13,447);
	setAction(52,6,443);
	setAction(52,1,439);
	setAction(52,14,448);
	setAction(52,10,445);
	setAction(52,5,442);

      newActionTable(53,1);
	setAction(53,12,464);

      newActionTable(54,13);
	setAction(54,4,467);
	setAction(54,16,475);
	setAction(54,18,477);
	setAction(54,3,466);
	setAction(54,7,470);
	setAction(54,12,472);
	setAction(54,17,476);
	setAction(54,13,473);
	setAction(54,6,469);
	setAction(54,1,465);
	setAction(54,14,474);
	setAction(54,10,471);
	setAction(54,5,468);

      newActionTable(55,2);
	setAction(55,11,479);
	setAction(55,3,478);

      newActionTable(56,2);
	setAction(56,11,481);
	setAction(56,3,480);

      newActionTable(57,2);
	setAction(57,11,483);
	setAction(57,3,482);

      newActionTable(58,1);
	setAction(58,12,495);

      newActionTable(59,13);
	setAction(59,4,498);
	setAction(59,16,506);
	setAction(59,18,508);
	setAction(59,3,497);
	setAction(59,7,501);
	setAction(59,12,503);
	setAction(59,17,507);
	setAction(59,13,504);
	setAction(59,6,500);
	setAction(59,1,496);
	setAction(59,14,505);
	setAction(59,10,502);
	setAction(59,5,499);

      newActionTable(60,2);
	setAction(60,11,509);
	setAction(60,3,510);

      newActionTable(61,1);
	setAction(61,12,522);

      newActionTable(62,13);
	setAction(62,4,525);
	setAction(62,16,533);
	setAction(62,18,535);
	setAction(62,3,524);
	setAction(62,7,528);
	setAction(62,12,530);
	setAction(62,17,534);
	setAction(62,13,531);
	setAction(62,6,527);
	setAction(62,1,523);
	setAction(62,14,532);
	setAction(62,10,529);
	setAction(62,5,526);

      newActionTable(63,8);
	setAction(63,17,542);
	setAction(63,4,538);
	setAction(63,6,540);
	setAction(63,1,536);
	setAction(63,18,543);
	setAction(63,3,537);
	setAction(63,7,541);
	setAction(63,5,539);

      newActionTable(64,1);
	setAction(64,1,544);

    }

  /* *********** */
  /* GOTO TABLES */
  /* *********** */

  static void initializeGotoTables ()
    {
      newGotoTables(19);

      newGotoTable(0,15);
	setGoto(0,4,5);
	setGoto(0,19,15);
	setGoto(0,8,9);
	setGoto(0,3,4);
	setGoto(0,7,8);
	setGoto(0,17,11);
	setGoto(0,2,2);
	setGoto(0,21,18);
	setGoto(0,6,7);
	setGoto(0,1,1);
	setGoto(0,20,17);
	setGoto(0,25,20);
	setGoto(0,24,19);
	setGoto(0,10,10);
	setGoto(0,5,6);

      newGotoTable(1,0);

      newGotoTable(2,14);
	setGoto(2,4,5);
	setGoto(2,19,15);
	setGoto(2,8,9);
	setGoto(2,3,4);
	setGoto(2,7,8);
	setGoto(2,17,11);
	setGoto(2,2,70);
	setGoto(2,21,18);
	setGoto(2,6,7);
	setGoto(2,20,17);
	setGoto(2,25,20);
	setGoto(2,24,19);
	setGoto(2,10,10);
	setGoto(2,5,6);

      newGotoTable(3,11);
	setGoto(3,17,11);
	setGoto(3,19,15);
	setGoto(3,8,9);
	setGoto(3,21,18);
	setGoto(3,6,7);
	setGoto(3,20,17);
	setGoto(3,25,20);
	setGoto(3,24,19);
	setGoto(3,10,10);
	setGoto(3,7,8);
	setGoto(3,5,69);

      newGotoTable(4,6);
	setGoto(4,17,38);
	setGoto(4,19,15);
	setGoto(4,21,18);
	setGoto(4,20,17);
	setGoto(4,25,20);
	setGoto(4,24,19);

      newGotoTable(5,6);
	setGoto(5,17,35);
	setGoto(5,19,15);
	setGoto(5,21,18);
	setGoto(5,20,17);
	setGoto(5,25,20);
	setGoto(5,24,19);

      newGotoTable(6,7);
	setGoto(6,19,27);
	setGoto(6,23,26);
	setGoto(6,21,18);
	setGoto(6,18,25);
	setGoto(6,20,17);
	setGoto(6,25,20);
	setGoto(6,24,19);

      newGotoTable(7,5);
	setGoto(7,19,28);
	setGoto(7,21,18);
	setGoto(7,20,17);
	setGoto(7,25,20);
	setGoto(7,24,19);

      newGotoTable(8,5);
	setGoto(8,19,31);
	setGoto(8,21,18);
	setGoto(8,20,17);
	setGoto(8,25,20);
	setGoto(8,24,19);

      newGotoTable(9,7);
	setGoto(9,19,27);
	setGoto(9,23,26);
	setGoto(9,21,18);
	setGoto(9,18,33);
	setGoto(9,20,17);
	setGoto(9,25,20);
	setGoto(9,24,19);

      newGotoTable(10,6);
	setGoto(10,17,37);
	setGoto(10,19,15);
	setGoto(10,21,18);
	setGoto(10,20,17);
	setGoto(10,25,20);
	setGoto(10,24,19);

      newGotoTable(11,12);
	setGoto(11,17,11);
	setGoto(11,13,44);
	setGoto(11,19,15);
	setGoto(11,9,40);
	setGoto(11,21,18);
	setGoto(11,11,41);
	setGoto(11,20,17);
	setGoto(11,14,45);
	setGoto(11,25,20);
	setGoto(11,24,19);
	setGoto(11,10,42);
	setGoto(11,12,43);

      newGotoTable(12,1);
	setGoto(12,16,65);

      newGotoTable(13,1);
	setGoto(13,16,59);

      newGotoTable(14,13);
	setGoto(14,15,51);
	setGoto(14,19,15);
	setGoto(14,11,53);
	setGoto(14,12,43);
	setGoto(14,22,52);
	setGoto(14,17,11);
	setGoto(14,13,44);
	setGoto(14,21,18);
	setGoto(14,20,17);
	setGoto(14,14,45);
	setGoto(14,24,19);
	setGoto(14,25,20);
	setGoto(14,10,42);

      newGotoTable(15,11);
	setGoto(15,17,11);
	setGoto(15,13,44);
	setGoto(15,19,15);
	setGoto(15,21,18);
	setGoto(15,11,54);
	setGoto(15,20,17);
	setGoto(15,14,45);
	setGoto(15,25,20);
	setGoto(15,24,19);
	setGoto(15,10,42);
	setGoto(15,12,43);

      newGotoTable(16,13);
	setGoto(16,15,57);
	setGoto(16,19,15);
	setGoto(16,11,53);
	setGoto(16,12,43);
	setGoto(16,22,52);
	setGoto(16,17,11);
	setGoto(16,13,44);
	setGoto(16,21,18);
	setGoto(16,20,17);
	setGoto(16,14,45);
	setGoto(16,24,19);
	setGoto(16,25,20);
	setGoto(16,10,42);

      newGotoTable(17,11);
	setGoto(17,17,11);
	setGoto(17,13,44);
	setGoto(17,19,15);
	setGoto(17,21,18);
	setGoto(17,11,63);
	setGoto(17,20,17);
	setGoto(17,14,45);
	setGoto(17,25,20);
	setGoto(17,24,19);
	setGoto(17,10,42);
	setGoto(17,12,43);

      newGotoTable(18,11);
	setGoto(18,17,11);
	setGoto(18,13,44);
	setGoto(18,19,15);
	setGoto(18,21,18);
	setGoto(18,11,67);
	setGoto(18,20,17);
	setGoto(18,14,45);
	setGoto(18,25,20);
	setGoto(18,24,19);
	setGoto(18,10,42);
	setGoto(18,12,43);

    }

  /* ************ */
  /* STATE TABLES */
  /* ************ */

  static void initializeStateTables ()
    {
      setTables(0,0,0);
      setTables(1,1,1);
      setTables(2,2,1);
      setTables(3,3,2);
      setTables(4,4,1);
      setTables(5,5,3);
      setTables(6,6,1);
      setTables(7,7,1);
      setTables(8,8,1);
      setTables(9,9,1);
      setTables(10,10,1);
      setTables(11,11,1);
      setTables(12,12,4);
      setTables(13,13,5);
      setTables(14,14,1);
      setTables(15,15,1);
      setTables(16,16,1);
      setTables(17,17,1);
      setTables(18,18,1);
      setTables(19,19,1);
      setTables(20,20,1);
      setTables(21,21,1);
      setTables(22,22,1);
      setTables(23,23,1);
      setTables(24,24,6);
      setTables(25,25,1);
      setTables(26,26,7);
      setTables(27,27,1);
      setTables(28,28,1);
      setTables(29,29,1);
      setTables(30,30,8);
      setTables(31,31,1);
      setTables(32,24,9);
      setTables(33,32,1);
      setTables(34,33,1);
      setTables(35,34,1);
      setTables(36,12,10);
      setTables(37,35,1);
      setTables(38,36,1);
      setTables(39,37,11);
      setTables(40,38,1);
      setTables(41,39,1);
      setTables(42,40,1);
      setTables(43,41,1);
      setTables(44,42,1);
      setTables(45,43,1);
      setTables(46,44,12);
      setTables(47,44,13);
      setTables(48,45,1);
      setTables(49,46,1);
      setTables(50,47,14);
      setTables(51,48,1);
      setTables(52,49,15);
      setTables(53,50,1);
      setTables(54,51,1);
      setTables(55,52,1);
      setTables(56,47,16);
      setTables(57,53,1);
      setTables(58,54,1);
      setTables(59,55,1);
      setTables(60,56,1);
      setTables(61,57,1);
      setTables(62,37,17);
      setTables(63,58,1);
      setTables(64,59,1);
      setTables(65,60,1);
      setTables(66,37,18);
      setTables(67,61,1);
      setTables(68,62,1);
      setTables(69,63,1);
      setTables(70,64,1);
    }
}

/* ***************** */
/* ANCILLARY CLASSES */
/* ***************** */



////////////////////////////////////////////////////////////////////////




This file was generated on Thu Oct 05 10:28:30 CEST 2006 from file Parser.java
by the ilog.language.tools.Hilite Java tool written by Hassan Aït-Kaci