// *******************************************************************
// This file has been automatically generated from the grammar in file
// RCL.grm by ilog.language.syntax.ParserGenerator on
// Wed Oct 11 10:06:12 CEST 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 RCLParser extends StaticParser
{
  /* ************************ */
  /* PARSER CLASS CONSTRUCTOR */
  /* ************************ */

  public RCLParser(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 $RCL_SWITCH$ = new ParseNode(terminals[8]);

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

  public final void parseRCL (Reader r) throws IOException
    {
      input.setReader(r);
      errorManager().recoverFromErrors(false);
      setSwitchToken($RCL_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 18: case 22: 
            break;
          default:
            $head$ = $head$.copy(node($rule$,1));
            break;
        }
      return $head$;
    }

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

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

      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,"$RCL_switch$",1,2);
      newTerminal(9,"And",1,2);
      newTerminal(10,"(",1,2);
      newTerminal(11,")",1,2);
      newTerminal(12,"Or",1,2);
      newTerminal(13,"Exists",1,2);
      newTerminal(14,"=",1,2);
      newTerminal(15,"Forall",1,2);
      newTerminal(16,"Neg",1,2);
      newTerminal(17,"Naf",1,2);
    }

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

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

      newNonTerminal(0,"$START$");
      newNonTerminal(1,"$ROOTS$");
      newNonTerminal(2,"RCL");
      newNonTerminal(3,"CONDIT");
      newNonTerminal(4,"LITFORM");
      newNonTerminal(5,"QUANTIF");
      newNonTerminal(6,"CONJ");
      newNonTerminal(7,"DISJ");
      newNonTerminal(8,"CONDIT_star");
      newNonTerminal(9,"Var_plus");
      newNonTerminal(10,"Atom");
      newNonTerminal(11,"TERM_star");
      newNonTerminal(12,"TERM");
      newNonTerminal(13,"Con");
      newNonTerminal(14,"Expr");
      newNonTerminal(15,"CONDIT_plus");
      newNonTerminal(16,"TERM_plus");
      newNonTerminal(17,"Data");
      newNonTerminal(18,"Ind");
    }

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

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

      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);
      rules[5] = new ParserRule(3,1,5,1,2);
      rules[6] = new ParserRule(3,1,6,1,2);
      rules[7] = new ParserRule(3,1,7,1,2);
      rules[8] = new ParserRule(6,4,8,1,2).xmlInfo("rcl:And 3");
      rules[9] = new ParserRule(7,4,9,1,2).xmlInfo("rcl:Or 3");
      rules[10] = new ParserRule(5,5,10,1,2).xmlInfo("rcl:Exists 2 4");
      rules[11] = new ParserRule(4,1,11,1,2);
      rules[12] = new ParserRule(10,4,12,1,2).xmlInfo("rcl:Atom 1 3");
      rules[13] = new ParserRule(10,3,13,1,2).xmlInfo("rcl:Equal 1 3");
      rules[14] = new ParserRule(12,1,14,1,2);
      rules[15] = new ParserRule(12,1,15,1,2);
      rules[16] = new ParserRule(12,1,16,1,2);
      rules[17] = new ParserRule(14,4,17,1,2).xmlInfo("rcl:Expr 1 3");
      rules[18] = new ParserRule(8,0,18,1,2);
      rules[19] = new ParserRule(8,1,19,1,2);
      rules[20] = new ParserRule(15,1,20,1,2);
      rules[21] = new ParserRule(15,2,21,1,2);
      rules[22] = new ParserRule(11,0,22,1,2);
      rules[23] = new ParserRule(11,1,23,1,2);
      rules[24] = new ParserRule(16,1,24,1,2);
      rules[25] = new ParserRule(16,2,25,1,2);
      rules[26] = new ParserRule(9,1,26,1,2);
      rules[27] = new ParserRule(9,2,27,1,2);
      rules[28] = new ParserRule(13,1,28,1,2).xmlInfo("rcl:Data 1");
      rules[29] = new ParserRule(13,1,29,1,2).xmlInfo("rcl:Ind 1");
      rules[30] = new ParserRule(17,1,30,1,2);
      rules[31] = new ParserRule(18,1,31,1,2);
      rules[32] = new ParserRule(5,5,32,1,2).xmlInfo("rcl:Forall 2 4");
      rules[33] = new ParserRule(4,2,33,1,2).xmlInfo("rcl:Neg 2");
      rules[34] = new ParserRule(4,2,34,1,2).xmlInfo("rcl:Naf 2");
      rules[35] = new ParserRule(4,3,35,1,2).xmlInfo("rcl:NafNeg 3");
    }

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

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

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

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

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

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

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

  static void initializeActionTables ()
    {
      newActionTables(55);

      newActionTable(0,12);
	setAction(0,17,4);
	setAction(0,15,6);
	setAction(0,4,9);
	setAction(0,13,5);
	setAction(0,9,7);
	setAction(0,8,2);
	setAction(0,6,12);
	setAction(0,16,3);
	setAction(0,3,10);
	setAction(0,7,13);
	setAction(0,5,11);
	setAction(0,12,8);

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

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

      newActionTable(3,11);
	setAction(3,17,16);
	setAction(3,15,18);
	setAction(3,4,21);
	setAction(3,13,17);
	setAction(3,9,19);
	setAction(3,6,24);
	setAction(3,16,15);
	setAction(3,3,22);
	setAction(3,7,25);
	setAction(3,5,23);
	setAction(3,12,20);

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

      newActionTable(5,13);
	setAction(5,15,37);
	setAction(5,4,29);
	setAction(5,11,34);
	setAction(5,16,38);
	setAction(5,3,28);
	setAction(5,7,32);
	setAction(5,12,35);
	setAction(5,17,39);
	setAction(5,13,36);
	setAction(5,9,33);
	setAction(5,6,31);
	setAction(5,1,27);
	setAction(5,5,30);

      newActionTable(6,13);
	setAction(6,15,50);
	setAction(6,4,42);
	setAction(6,11,47);
	setAction(6,16,51);
	setAction(6,3,41);
	setAction(6,7,45);
	setAction(6,12,48);
	setAction(6,17,52);
	setAction(6,13,49);
	setAction(6,9,46);
	setAction(6,6,44);
	setAction(6,1,40);
	setAction(6,5,43);

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

      newActionTable(8,13);
	setAction(8,15,76);
	setAction(8,4,68);
	setAction(8,11,73);
	setAction(8,16,77);
	setAction(8,3,67);
	setAction(8,7,71);
	setAction(8,12,74);
	setAction(8,17,78);
	setAction(8,13,75);
	setAction(8,9,72);
	setAction(8,6,70);
	setAction(8,1,66);
	setAction(8,5,69);

      newActionTable(9,13);
	setAction(9,15,89);
	setAction(9,4,81);
	setAction(9,11,86);
	setAction(9,16,90);
	setAction(9,3,80);
	setAction(9,7,84);
	setAction(9,12,87);
	setAction(9,17,91);
	setAction(9,13,88);
	setAction(9,9,85);
	setAction(9,6,83);
	setAction(9,1,79);
	setAction(9,5,82);

      newActionTable(10,5);
	setAction(10,4,92);
	setAction(10,6,95);
	setAction(10,3,93);
	setAction(10,7,96);
	setAction(10,5,94);

      newActionTable(11,6);
	setAction(11,4,98);
	setAction(11,6,101);
	setAction(11,16,97);
	setAction(11,3,99);
	setAction(11,7,102);
	setAction(11,5,100);

      newActionTable(12,1);
	setAction(12,3,103);

      newActionTable(13,1);
	setAction(13,10,105);

      newActionTable(14,1);
	setAction(14,10,106);

      newActionTable(15,1);
	setAction(15,10,107);

      newActionTable(16,1);
	setAction(16,14,108);

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

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

      newActionTable(19,14);
	setAction(19,15,148);
	setAction(19,4,139);
	setAction(19,11,144);
	setAction(19,16,149);
	setAction(19,3,138);
	setAction(19,7,142);
	setAction(19,12,145);
	setAction(19,17,150);
	setAction(19,13,146);
	setAction(19,9,143);
	setAction(19,6,141);
	setAction(19,1,137);
	setAction(19,14,147);
	setAction(19,5,140);

      newActionTable(20,14);
	setAction(20,15,162);
	setAction(20,4,153);
	setAction(20,11,158);
	setAction(20,16,163);
	setAction(20,3,152);
	setAction(20,7,156);
	setAction(20,12,159);
	setAction(20,17,164);
	setAction(20,13,160);
	setAction(20,9,157);
	setAction(20,6,155);
	setAction(20,1,151);
	setAction(20,14,161);
	setAction(20,5,154);

      newActionTable(21,14);
	setAction(21,15,176);
	setAction(21,4,167);
	setAction(21,11,172);
	setAction(21,16,177);
	setAction(21,3,166);
	setAction(21,7,170);
	setAction(21,12,173);
	setAction(21,17,178);
	setAction(21,13,174);
	setAction(21,9,171);
	setAction(21,6,169);
	setAction(21,1,165);
	setAction(21,14,175);
	setAction(21,5,168);

      newActionTable(22,1);
	setAction(22,10,179);

      newActionTable(23,14);
	setAction(23,15,191);
	setAction(23,4,182);
	setAction(23,11,187);
	setAction(23,16,192);
	setAction(23,3,181);
	setAction(23,7,185);
	setAction(23,12,188);
	setAction(23,17,193);
	setAction(23,13,189);
	setAction(23,9,186);
	setAction(23,6,184);
	setAction(23,1,180);
	setAction(23,14,190);
	setAction(23,5,183);

      newActionTable(24,14);
	setAction(24,15,205);
	setAction(24,4,196);
	setAction(24,11,201);
	setAction(24,16,206);
	setAction(24,3,195);
	setAction(24,7,199);
	setAction(24,12,202);
	setAction(24,17,207);
	setAction(24,13,203);
	setAction(24,9,200);
	setAction(24,6,198);
	setAction(24,1,194);
	setAction(24,14,204);
	setAction(24,5,197);

      newActionTable(25,5);
	setAction(25,6,211);
	setAction(25,11,208);
	setAction(25,3,209);
	setAction(25,7,212);
	setAction(25,5,210);

      newActionTable(26,1);
	setAction(26,11,213);

      newActionTable(27,5);
	setAction(27,6,217);
	setAction(27,11,214);
	setAction(27,3,215);
	setAction(27,7,218);
	setAction(27,5,216);

      newActionTable(28,5);
	setAction(28,11,223);
	setAction(28,6,221);
	setAction(28,3,219);
	setAction(28,7,222);
	setAction(28,5,220);

      newActionTable(29,5);
	setAction(29,11,228);
	setAction(29,6,226);
	setAction(29,3,224);
	setAction(29,7,227);
	setAction(29,5,225);

      newActionTable(30,14);
	setAction(30,15,240);
	setAction(30,4,231);
	setAction(30,11,236);
	setAction(30,16,241);
	setAction(30,3,230);
	setAction(30,7,234);
	setAction(30,12,237);
	setAction(30,17,242);
	setAction(30,13,238);
	setAction(30,9,235);
	setAction(30,6,233);
	setAction(30,1,229);
	setAction(30,14,239);
	setAction(30,5,232);

      newActionTable(31,4);
	setAction(31,6,245);
	setAction(31,3,243);
	setAction(31,7,246);
	setAction(31,5,244);

      newActionTable(32,13);
	setAction(32,15,257);
	setAction(32,4,249);
	setAction(32,11,254);
	setAction(32,16,258);
	setAction(32,3,248);
	setAction(32,7,252);
	setAction(32,12,255);
	setAction(32,17,259);
	setAction(32,13,256);
	setAction(32,9,253);
	setAction(32,6,251);
	setAction(32,1,247);
	setAction(32,5,250);

      newActionTable(33,1);
	setAction(33,11,265);

      newActionTable(34,13);
	setAction(34,15,276);
	setAction(34,4,268);
	setAction(34,11,273);
	setAction(34,16,277);
	setAction(34,3,267);
	setAction(34,7,271);
	setAction(34,12,274);
	setAction(34,17,278);
	setAction(34,13,275);
	setAction(34,9,272);
	setAction(34,6,270);
	setAction(34,1,266);
	setAction(34,5,269);

      newActionTable(35,12);
	setAction(35,17,280);
	setAction(35,15,282);
	setAction(35,4,286);
	setAction(35,13,281);
	setAction(35,9,283);
	setAction(35,6,289);
	setAction(35,11,285);
	setAction(35,16,279);
	setAction(35,3,287);
	setAction(35,7,290);
	setAction(35,5,288);
	setAction(35,12,284);

      newActionTable(36,1);
	setAction(36,11,291);

      newActionTable(37,12);
	setAction(37,17,294);
	setAction(37,15,296);
	setAction(37,4,299);
	setAction(37,13,295);
	setAction(37,9,297);
	setAction(37,6,302);
	setAction(37,11,292);
	setAction(37,16,293);
	setAction(37,3,300);
	setAction(37,7,303);
	setAction(37,5,301);
	setAction(37,12,298);

      newActionTable(38,12);
	setAction(38,17,315);
	setAction(38,15,313);
	setAction(38,13,312);
	setAction(38,4,305);
	setAction(38,9,309);
	setAction(38,11,310);
	setAction(38,6,307);
	setAction(38,16,314);
	setAction(38,3,304);
	setAction(38,7,308);
	setAction(38,12,311);
	setAction(38,5,306);

      newActionTable(39,12);
	setAction(39,17,327);
	setAction(39,15,325);
	setAction(39,13,324);
	setAction(39,4,317);
	setAction(39,9,321);
	setAction(39,11,322);
	setAction(39,6,319);
	setAction(39,16,326);
	setAction(39,3,316);
	setAction(39,7,320);
	setAction(39,12,323);
	setAction(39,5,318);

      newActionTable(40,13);
	setAction(40,15,338);
	setAction(40,4,330);
	setAction(40,11,335);
	setAction(40,16,339);
	setAction(40,3,329);
	setAction(40,7,333);
	setAction(40,12,336);
	setAction(40,17,340);
	setAction(40,13,337);
	setAction(40,9,334);
	setAction(40,6,332);
	setAction(40,1,328);
	setAction(40,5,331);

      newActionTable(41,1);
	setAction(41,11,353);

      newActionTable(42,13);
	setAction(42,15,364);
	setAction(42,4,356);
	setAction(42,11,361);
	setAction(42,16,365);
	setAction(42,3,355);
	setAction(42,7,359);
	setAction(42,12,362);
	setAction(42,17,366);
	setAction(42,13,363);
	setAction(42,9,360);
	setAction(42,6,358);
	setAction(42,1,354);
	setAction(42,5,357);

      newActionTable(43,2);
	setAction(43,3,367);
	setAction(43,10,368);

      newActionTable(44,2);
	setAction(44,3,369);
	setAction(44,10,370);

      newActionTable(45,2);
	setAction(45,3,371);
	setAction(45,10,372);

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

      newActionTable(47,13);
	setAction(47,15,395);
	setAction(47,4,387);
	setAction(47,11,392);
	setAction(47,16,396);
	setAction(47,3,386);
	setAction(47,7,390);
	setAction(47,12,393);
	setAction(47,17,397);
	setAction(47,13,394);
	setAction(47,9,391);
	setAction(47,6,389);
	setAction(47,1,385);
	setAction(47,5,388);

      newActionTable(48,2);
	setAction(48,3,399);
	setAction(48,10,398);

      newActionTable(49,1);
	setAction(49,11,411);

      newActionTable(50,13);
	setAction(50,15,422);
	setAction(50,4,414);
	setAction(50,11,419);
	setAction(50,16,423);
	setAction(50,3,413);
	setAction(50,7,417);
	setAction(50,12,420);
	setAction(50,17,424);
	setAction(50,13,421);
	setAction(50,9,418);
	setAction(50,6,416);
	setAction(50,1,412);
	setAction(50,5,415);

      newActionTable(51,13);
	setAction(51,15,435);
	setAction(51,4,427);
	setAction(51,11,432);
	setAction(51,16,436);
	setAction(51,3,426);
	setAction(51,7,430);
	setAction(51,12,433);
	setAction(51,17,437);
	setAction(51,13,434);
	setAction(51,9,431);
	setAction(51,6,429);
	setAction(51,1,425);
	setAction(51,5,428);

      newActionTable(52,13);
	setAction(52,15,453);
	setAction(52,4,445);
	setAction(52,11,450);
	setAction(52,16,454);
	setAction(52,3,444);
	setAction(52,7,448);
	setAction(52,12,451);
	setAction(52,17,455);
	setAction(52,13,452);
	setAction(52,9,449);
	setAction(52,6,447);
	setAction(52,1,443);
	setAction(52,5,446);

      newActionTable(53,13);
	setAction(53,15,466);
	setAction(53,4,458);
	setAction(53,11,463);
	setAction(53,16,467);
	setAction(53,3,457);
	setAction(53,7,461);
	setAction(53,12,464);
	setAction(53,17,468);
	setAction(53,13,465);
	setAction(53,9,462);
	setAction(53,6,460);
	setAction(53,1,456);
	setAction(53,5,459);

      newActionTable(54,1);
	setAction(54,1,469);

    }

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

  static void initializeGotoTables ()
    {
      newGotoTables(17);

      newGotoTable(0,13);
	setGoto(0,4,5);
	setGoto(0,18,22);
	setGoto(0,3,4);
	setGoto(0,7,8);
	setGoto(0,12,17);
	setGoto(0,17,21);
	setGoto(0,2,2);
	setGoto(0,13,19);
	setGoto(0,6,7);
	setGoto(0,1,1);
	setGoto(0,14,20);
	setGoto(0,10,9);
	setGoto(0,5,6);

      newGotoTable(1,0);

      newGotoTable(2,12);
	setGoto(2,17,21);
	setGoto(2,2,60);
	setGoto(2,13,19);
	setGoto(2,4,5);
	setGoto(2,6,7);
	setGoto(2,18,22);
	setGoto(2,14,20);
	setGoto(2,3,4);
	setGoto(2,10,9);
	setGoto(2,7,8);
	setGoto(2,12,17);
	setGoto(2,5,6);

      newGotoTable(3,6);
	setGoto(3,17,21);
	setGoto(3,13,19);
	setGoto(3,18,22);
	setGoto(3,14,20);
	setGoto(3,10,59);
	setGoto(3,12,17);

      newGotoTable(4,6);
	setGoto(4,17,21);
	setGoto(4,13,19);
	setGoto(4,18,22);
	setGoto(4,14,20);
	setGoto(4,10,56);
	setGoto(4,12,17);

      newGotoTable(5,1);
	setGoto(5,9,52);

      newGotoTable(6,1);
	setGoto(6,9,46);

      newGotoTable(7,7);
	setGoto(7,17,21);
	setGoto(7,13,19);
	setGoto(7,11,27);
	setGoto(7,16,28);
	setGoto(7,18,22);
	setGoto(7,14,20);
	setGoto(7,12,29);

      newGotoTable(8,5);
	setGoto(8,17,21);
	setGoto(8,13,19);
	setGoto(8,18,22);
	setGoto(8,14,20);
	setGoto(8,12,30);

      newGotoTable(9,5);
	setGoto(9,17,21);
	setGoto(9,13,19);
	setGoto(9,18,22);
	setGoto(9,14,20);
	setGoto(9,12,33);

      newGotoTable(10,7);
	setGoto(10,17,21);
	setGoto(10,13,19);
	setGoto(10,11,35);
	setGoto(10,16,28);
	setGoto(10,18,22);
	setGoto(10,14,20);
	setGoto(10,12,29);

      newGotoTable(11,13);
	setGoto(11,15,39);
	setGoto(11,4,5);
	setGoto(11,8,38);
	setGoto(11,18,22);
	setGoto(11,3,40);
	setGoto(11,7,8);
	setGoto(11,12,17);
	setGoto(11,17,21);
	setGoto(11,13,19);
	setGoto(11,6,7);
	setGoto(11,14,20);
	setGoto(11,10,9);
	setGoto(11,5,6);

      newGotoTable(12,11);
	setGoto(12,17,21);
	setGoto(12,13,19);
	setGoto(12,4,5);
	setGoto(12,6,7);
	setGoto(12,18,22);
	setGoto(12,14,20);
	setGoto(12,3,41);
	setGoto(12,10,9);
	setGoto(12,7,8);
	setGoto(12,12,17);
	setGoto(12,5,6);

      newGotoTable(13,13);
	setGoto(13,15,39);
	setGoto(13,4,5);
	setGoto(13,8,44);
	setGoto(13,18,22);
	setGoto(13,3,40);
	setGoto(13,7,8);
	setGoto(13,12,17);
	setGoto(13,17,21);
	setGoto(13,13,19);
	setGoto(13,6,7);
	setGoto(13,14,20);
	setGoto(13,10,9);
	setGoto(13,5,6);

      newGotoTable(14,11);
	setGoto(14,17,21);
	setGoto(14,13,19);
	setGoto(14,4,5);
	setGoto(14,6,7);
	setGoto(14,18,22);
	setGoto(14,14,20);
	setGoto(14,3,50);
	setGoto(14,10,9);
	setGoto(14,7,8);
	setGoto(14,12,17);
	setGoto(14,5,6);

      newGotoTable(15,11);
	setGoto(15,17,21);
	setGoto(15,13,19);
	setGoto(15,4,5);
	setGoto(15,6,7);
	setGoto(15,18,22);
	setGoto(15,14,20);
	setGoto(15,3,54);
	setGoto(15,10,9);
	setGoto(15,7,8);
	setGoto(15,12,17);
	setGoto(15,5,6);

      newGotoTable(16,6);
	setGoto(16,17,21);
	setGoto(16,13,19);
	setGoto(16,18,22);
	setGoto(16,14,20);
	setGoto(16,10,58);
	setGoto(16,12,17);

    }

  /* ************ */
  /* 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,1);
      setTables(6,6,1);
      setTables(7,7,1);
      setTables(8,8,1);
      setTables(9,9,1);
      setTables(10,10,3);
      setTables(11,11,4);
      setTables(12,12,5);
      setTables(13,12,6);
      setTables(14,13,1);
      setTables(15,14,1);
      setTables(16,15,1);
      setTables(17,16,1);
      setTables(18,17,1);
      setTables(19,18,1);
      setTables(20,19,1);
      setTables(21,20,1);
      setTables(22,21,1);
      setTables(23,22,1);
      setTables(24,23,1);
      setTables(25,24,1);
      setTables(26,25,7);
      setTables(27,26,1);
      setTables(28,27,8);
      setTables(29,28,1);
      setTables(30,29,1);
      setTables(31,30,1);
      setTables(32,31,9);
      setTables(33,32,1);
      setTables(34,25,10);
      setTables(35,33,1);
      setTables(36,34,1);
      setTables(37,35,11);
      setTables(38,36,1);
      setTables(39,37,12);
      setTables(40,38,1);
      setTables(41,39,1);
      setTables(42,40,1);
      setTables(43,35,13);
      setTables(44,41,1);
      setTables(45,42,1);
      setTables(46,43,1);
      setTables(47,44,1);
      setTables(48,45,1);
      setTables(49,3,14);
      setTables(50,46,1);
      setTables(51,47,1);
      setTables(52,48,1);
      setTables(53,3,15);
      setTables(54,49,1);
      setTables(55,50,1);
      setTables(56,51,1);
      setTables(57,10,16);
      setTables(58,52,1);
      setTables(59,53,1);
      setTables(60,54,1);
    }
}
