/* [hpat_pim.c] Parser table for 'hpat'  */



#include "prs.h"

#include "prs_imp.h"


static string hpat_SNames[] = {
  "PatBgn", "PatEnd", "PatRef", "_other_", "HPatDoc", 
  "Contents", "Content"
};

static int hpat_StartIds[] = {
  4
};

static int hpat_TokKind[] = {
  1, 1, 1, 1
};

static int hpat_NtClass[] = {
  0, 1, 2
};

static c_bool hpat_ErrorNt[] = {
  0, 0, 0
};

static KFGHEAD hpat_KfgHead = {
  "hpat",
  4, 3, hpat_SNames,
  1, hpat_StartIds,
  hpat_TokKind,
  hpat_NtClass,
  hpat_ErrorNt
};

static int hpat_PSymbols[] = {
  5,
  6, 5,
  2,
  3,
  0, 5, 1,
  4
};

static int hpat_PSymFrms[] = {
  0,
  0, 8,
  0,
  0,
  0, 7, 16,
  0
};

static KFGPROD hpat_KfgProds[] = {
  { "dfn", 0, 4, 1, &hpat_PSymbols[0], &hpat_PSymFrms[0] },
  { "nil", 0, 5, 0, (int*)NULL, (int*)NULL },
  { "cons", 0, 5, 2, &hpat_PSymbols[1], &hpat_PSymFrms[1] },
  { "ref", 0, 6, 1, &hpat_PSymbols[3], &hpat_PSymFrms[3] },
  { "else", 0, 6, 1, &hpat_PSymbols[4], &hpat_PSymFrms[4] },
  { "pat", 0, 6, 3, &hpat_PSymbols[5], &hpat_PSymFrms[5] },
  { "Start_HPatDoc", 0, 7, 1, &hpat_PSymbols[8], &hpat_PSymFrms[8] }
};

static int hpat_MstShifts[] = {
  3, 3, -1, -1, -1, -1, 3, 7, 
  -1, -1
};

static int hpat_DtlShifts[] = {
  -2, -3, -4, 3, 2, 0, -10, 1
};

static int hpat_GoTos[] = {
  0, 2, 8
};

static int hpat_GoToDfts[] = {
  15, -1, 16, 1, 18, 2, 19, 7, 
  17, -1, -2, -7
};

static int hpat_ActDfts[] = {
  2, 2, 4, 5, 9, 1, 2, 8, 
  3, 6
};


static PARSETAB hpat_ParseTab = {
  &hpat_KfgHead, 7, hpat_KfgProds,
  {
    10, hpat_MstShifts, 8, hpat_DtlShifts,
    3, hpat_GoTos, 12, hpat_GoToDfts,
    10, hpat_ActDfts, 0, (int*)NULL
  }
};

PLR_Tab PLR_get_hpat()
/* simulates a PLR_getTab */
{
  return( PLR_copyTab(&hpat_ParseTab) );
}