/*
 File: lr1_tst.h
 Date and Time: Mon Oct 13 18:18:15 2014 
*/
#ifndef __lr1_tst_h__
#define __lr1_tst_h__ 1
#include "yacco2.h"
#include "yacco2_T_enumeration.h"
#include "yacco2_k_symbols.h"
#include "yacco2_err_symbols.h"
#include "yacco2_terminals.h"
#include "yacco2_characters.h"
extern yacco2::Thread_entry ITH_lr1_tst;

extern yacco2::State S1_Clr1_tst_fsm;
namespace NS_lr1_tst {
yacco2::THR _YACCO2_CALL_TYPE
TH_lr1_tst(yacco2::Parser* Caller);// called thread
yacco2::THR_result _YACCO2_CALL_TYPE
PROC_TH_lr1_tst(yacco2::Parser* Caller);// called thread's twin the procedure
using namespace NS_yacco2_T_enum;// enumerate
using namespace yacco2;
struct fsm_rules_reuse_table_type{
 fsm_rules_reuse_table_type();
 int no_rules_entries_;
 Per_rule_s_reuse_table* per_rule_s_table_[13];
};
class Clr1_tst_fsm: public yacco2::CAbs_fsm {
 public:
  enum rules_and_subrules{
   start_of_rule_list = NS_yacco2_T_enum::T_Enum::sum_total_T
   ,R_Rlr1_tst_ = 569//start_of_rule_list + 0
    ,rhs1_Rlr1_tst_ = 1
    ,rhs2_Rlr1_tst_ = 2
    ,rhs3_Rlr1_tst_ = 3
    ,rhs4_Rlr1_tst_ = 4
   ,R_RAabBab_ = 570//start_of_rule_list + 2
    ,rhs1_RAabBab_ = 5
    ,rhs2_RAabBab_ = 6
   ,R_RAbaBab_ = 571//start_of_rule_list + 4
    ,rhs1_RAbaBab_ = 7
    ,rhs2_RAbaBab_ = 8
   ,R_RAabBba_ = 572//start_of_rule_list + 6
    ,rhs1_RAabBba_ = 9
    ,rhs2_RAabBba_ = 10
   ,R_RAbaBba_ = 573//start_of_rule_list + 8
    ,rhs1_RAbaBba_ = 11
    ,rhs2_RAbaBba_ = 12
   ,R_RAab_ = 574//start_of_rule_list + 10
    ,rhs1_RAab_ = 13
    ,rhs2_RAab_ = 14
   ,R_RAba_ = 575//start_of_rule_list + 12
    ,rhs1_RAba_ = 15
    ,rhs2_RAba_ = 16
   ,R_RBab_ = 576//start_of_rule_list + 14
    ,rhs1_RBab_ = 17
    ,rhs2_RBab_ = 18
   ,R_RBba_ = 577//start_of_rule_list + 16
    ,rhs1_RBba_ = 19
    ,rhs2_RBba_ = 20
   ,R_RA1_ = 578//start_of_rule_list + 18
    ,rhs1_RA1_ = 21
   ,R_RA2_ = 579//start_of_rule_list + 20
    ,rhs1_RA2_ = 22
   ,R_RB1_ = 580//start_of_rule_list + 22
    ,rhs1_RB1_ = 23
   ,R_RB2_ = 581//start_of_rule_list + 24
    ,rhs1_RB2_ = 24
  };
  //no of la sets = 6
  //no of states = 49
  Clr1_tst_fsm();
  ~Clr1_tst_fsm();
  void op();
  bool failed();
  void reduce_rhs_of_rule
      (yacco2::UINT Sub_rule_no,yacco2::Rule_s_reuse_entry** Recycled_rule);
  fsm_rules_reuse_table_type fsm_rules_reuse_table;
  static int rhs_to_rules_mapping_[25];
  
      // test out Clr1\_tst\_fsm fsm user-declaration code
      public:
    
 };
struct Rlr1_tst;
struct RAabBab;
struct RAbaBab;
struct RAabBba;
struct RAbaBba;
struct RAab;
struct RAba;
struct RBab;
struct RBba;
struct RA1;
struct RA2;
struct RB1;
struct RB2;
struct Rlr1_tst:public yacco2::CAbs_lr1_sym {
  Rlr1_tst(yacco2::Parser* P);
  static void dtor_Rlr1_tst(yacco2::VOIDP This,yacco2::VOIDP P);
  void op();
  void ctor();

      // test out Rlr1\_tst rule user-declaration code
      public:
    
  public:
  void sr1();
};

struct RAabBab:public yacco2::CAbs_lr1_sym {
  RAabBab(yacco2::Parser* P);
  public:
};

struct RAbaBab:public yacco2::CAbs_lr1_sym {
  RAbaBab(yacco2::Parser* P);
  public:
};

struct RAabBba:public yacco2::CAbs_lr1_sym {
  RAabBba(yacco2::Parser* P);
  public:
};

struct RAbaBba:public yacco2::CAbs_lr1_sym {
  RAbaBba(yacco2::Parser* P);
  public:
};

struct RAab:public yacco2::CAbs_lr1_sym {
  RAab(yacco2::Parser* P);
  public:
};

struct RAba:public yacco2::CAbs_lr1_sym {
  RAba(yacco2::Parser* P);
  public:
};

struct RBab:public yacco2::CAbs_lr1_sym {
  RBab(yacco2::Parser* P);
  public:
};

struct RBba:public yacco2::CAbs_lr1_sym {
  RBba(yacco2::Parser* P);
  public:
};

struct RA1:public yacco2::CAbs_lr1_sym {
  RA1(yacco2::Parser* P);
  public:
};

struct RA2:public yacco2::CAbs_lr1_sym {
  RA2(yacco2::Parser* P);
  public:
};

struct RB1:public yacco2::CAbs_lr1_sym {
  RB1(yacco2::Parser* P);
  public:
};

struct RB2:public yacco2::CAbs_lr1_sym {
  RB2(yacco2::Parser* P);
  public:
};

} // end of namespace

#endif
