#define MAX_GRAMMAR 784
#define PHRASE_BASE 521
int gram[MAX_GRAMMAR] = {
    2,     2,   587,   521,     1,   512,     8,     5,   256,    40,   542,   538,    41,     8,   535,   530, 
  585,    40,   527,    41,   525,   524,     6,   530,   585,    40,   527,    41,   525,     3,   585,   525, 
  524,     1,   518,     1,   519,     1,   520,     3,    40,   582,    41,     3,     8,   535,   530,   585, 
   40,   527,    41,   525,   524,     6,   530,   585,    40,   527,    41,   525,     3,   586,   525,   524, 
    3,     1,   514,     1,   515,     0,     4,     4,    91,   582,    93,   525,     3,    46,   585,   525, 
    4,    45,    62,   585,   525,     0,     2,     4,   256,    40,   542,    41,     6,   536,   530,   585, 
   40,   527,    41,     2,     2,   578,   528,     0,     2,     3,    44,   578,   528,     0,     2,     3, 
  535,   530,   522,     1,   523,     2,     1,   534,     0,     2,     2,   532,   523,     2,   533,   522, 
    5,     1,   514,     1,   515,     2,   536,   534,     1,    38,     1,   256,    11,     1,   514,     1, 
  515,     1,    43,     1,    45,     1,    33,     1,   126,     2,   536,   534,     1,   535,     1,    38, 
    1,   256,     0,     1,     4,    40,   542,   538,    41,     1,     2,    42,   536,     2,     1,   535, 
    0,     1,     2,    42,   538,     2,     1,   537,     0,     3,     1,   257,     1,   258,     0,     5, 
    1,   259,     1,   260,     1,   261,     1,   262,     0,     1,     1,    41,    12,     1,   263,     2, 
  264,   625,     4,   265,    40,   529,    41,     4,   543,   266,   266,   267,     3,   543,   266,   266, 
    3,   543,   266,   267,     2,   543,   266,     2,   543,   267,     3,   543,   268,   267,     2,   543, 
  268,     2,   543,   269,     1,   270,     3,     1,   271,     1,   272,     0,     1,     2,   531,   555, 
    1,     2,   544,   556,     1,     2,   545,   557,     1,     2,   546,   558,     1,     2,   547,   559, 
    1,     2,   548,   560,     1,     2,   549,   561,     1,     2,   550,   562,     1,     2,   551,   563, 
    1,     2,   552,   564,     1,     2,   553,   577,     2,     3,   565,   531,   555,     0,     2,     3, 
  566,   544,   556,     0,     2,     3,   567,   545,   557,     0,     2,     3,   568,   546,   558,     0, 
    2,     3,   569,   547,   559,     0,     2,     3,   570,   548,   560,     0,     2,     3,   572,   549, 
  561,     0,     2,     3,   573,   550,   562,     0,     2,     3,   575,   551,   563,     0,     2,     3, 
  576,   552,   564,     0,     3,     1,    42,     1,    47,     1,    37,     2,     1,    43,     1,    45, 
    2,     2,    60,    60,     2,    62,    62,     4,     2,    60,    61,     1,    60,     2,    62,    61, 
    1,    62,     2,     2,    61,    61,     2,    33,    61,     1,     2, 33339,    38,     1,     2,    38, 
   38,     1,     1,    94,     1,     2, 33342,   124,     1,     2,   124,   124,     1,     2,    38,    38, 
    1,     2,   124,   124,     2,     4,    63,   553,    58,   554,     0,     1,     2,   580,   554,     1, 
    2,    61,    61,     2,     4,   529, 33347,   581,   580,     0,    11,     1,    61,     2,    43,    61, 
    2,    45,    61,     2,    42,    61,     2,    47,    61,     2,    37,    61,     2,    38,    61,     2, 
   94,    61,     2,   124,    61,     3,    60,    60,    61,     3,    62,    62,    61,     1,     2,   578, 
  583,     2,     3,    44,   578,   583,     0,     1,     1,   582,     1,     1,   513,     1,     1,   513, 
    8,     3,   123,   593,   125,     1,   589,     1,   596,     1,   591,     1,   620,     1,   622,     1, 
  623,     1,   588,     1,     2,    63,   587,     3,     3,   585,    58,   587,     4,   273,   590,    58, 
  587,     3,   274,    58,   587,     1,     1,   582,     1,     2,   592,    59,     2,     1,   582,     0, 
    1,     2,   594,   619,     2,     1,   595,     0,     1,     2,   596,   594,     4,     1,   599,     1, 
  602,     1,   603,     1,   604,     3,     1,   599,     1,   602,     1,   604,     2,     2,   597,   598, 
    0,     1,     6,   264,   624,   123,   598,   125,    59,     2,     5,    44,   538,   585,   612,   600, 
    0,     1,     5,   538,   585,   612,   600,    59,     1,     4,   540,   539,   542,   601,     1,     9, 
  540,   539,   542,   538,   585,    40,   613,    41,   605,     1,     8,   540,   539,   542,   538,   585, 
  606,   608,    59,     2,     1,    59,     3,   123,   593,   125,     1,     4,    91,   617,    93,   607, 
    2,     4,    91,   617,    93,   607,     0,     2,     4,    61,   123,   609,   125,     0,     1,     2, 
  611,   610,     3,     3,    44,   611,   610,     1,    44,     0,     2,     1,   590,     3,   123,   609, 
  125,     2,     2,    61,   578,     0,     2,     2,   263, 16925,     2,   615,   614,     2,     3,    44, 
  615,   614,     0,     1,     4,   542,   538,   585,   616,     2,     4,    91,   617,    93,   616,     0, 
    2,     1,   590,     0,     1,     2,   587,   619,     2,     2,   587,   619,     0,     2,     6,   275, 
   40,   582,    41,   587,   621,     7,   276,    40,   582,    41,   123,   593,   125,     2,     2,   277, 
  587,     0,     3,     5,   278,    40,   582,    41,   587,     7,   279,   587,   278,    40,   582,    41, 
   59,     9,   280,    40,   592,    59,   592,    59,   592,    41,   587,     4,     3,   281,   585,    59, 
    2,   282,    59,     2,   283,    59,     3,   284,   592,    59,     1,     1,   513,     1,     1,   513, 
};

#define MAX_KEYWORD 29
char *keyword[MAX_KEYWORD] = { // Keywords are based at 256
  "sizeof", "const", "volatile", "auto", 
  "register", "static", "extern", "void", 
  "struct", "typeof", "long", "int", 
  "short", "char", "FILE", "unsigned", 
  "signed", "case", "default", "if", 
  "switch", "else", "while", "do", 
  "for", "goto", "continue", "break", 
  "return", 
};

#define MAX_BIP 9
int BIP[MAX_BIP] = { // BIPs precede PHRASEs at 512 upwards
 0,  1,  2,  3,  4,  5,  6,  7,  8, 
};

#define MAX_PHRASE 114
#if defined(DEBUG_PARSER) || defined(EXTENDED_ERROR_REPORTING)
// FOR DEBUGGING ONLY
char *phrasename[MAX_PHRASE] = { // Based at 512 upwards
  "EOD", "TAG", "PPP", "MMM", 
  "CHAR", "KEYWORD", "integer-constant", "character-constant", 
  "string-constant", "SS", "level14", "level14-lv", 
  "opt-post-ppp-or-mmm", "opt-postfix", "function-call", "opt-argument-list", 
  "comma-opt-argument-list", "lvalue", "opt-cast", "level13", 
  "prefix-operator-lv", "opt-prefix-operator", "cast", "indirectthrough-seq", 
  "opt-indirectthrough-seq", "pointerto-seq", "opt-pointerto-seq", "opt-qualifier", 
  "opt-scope", "closer", "type", "signed", 
  "level12", "level11", "level10", "level9", 
  "level8", "level7", "level6", "level5", 
  "level4", "level3", "level2", "opt-level12", 
  "opt-level11", "opt-level10", "opt-level9", "opt-level8", 
  "opt-level7", "opt-level6", "opt-level5", "opt-level4", 
  "opt-level3", "level12-op", "level11-op", "level10-op", 
  "level9-op", "level8-op", "level7-op", "ANDAND", 
  "level6-op", "level5-op", "OROR", "level4-op", 
  "level3-op", "opt-conditional", "level1", "equiv", 
  "opt-assign-list", "assign-op", "expression", "opt-comma-level0-list", 
  "rvalue", "identifier", "identifier-lv", "statement", 
  "debug-statement", "labeled-statement", "constant-expression", "expression-statement", 
  "opt-expression", "compound-statement", "opt-declaration-list", "declaration-list", 
  "declaration", "struct-member-declaration", "struct-member-list", "struct-decl", 
  "opt-rest-of-scalar-decl", "rest-of-scalar-decl", "scalar-decl", "proc-fn-decl", 
  "array-decl", "forward-decl-or-actual-body", "array-bounds", "opt-array-bounds", 
  "opt-array-init", "constant-initializer-list", "rest-of-constant-initializer-list", "constant-initializer", 
  "opt-scalar-init", "opt-param-list", "opt-rest-of-param-list", "param", 
  "opt-empty-array-bounds", "opt-constant-expression", "statement-list", "opt-statement-list", 
  "selection-statement", "opt-else-statement", "iteration-statement", "jump-statement", 
  "new-structname", "existing-structname", 
};
#endif /* DEBUG_PARSER */

int phrase_start[MAX_PHRASE-MAX_BIP] = {
    0,     6,    43,    64,    70,    86,    99, 
  104,   110,   117,   121,   128,   140,   163,   169,   173,   177,   181,   185,   191,   201,   204,   246, 
  252,   256,   260,   264,   268,   272,   276,   280,   284,   288,   292,   296,   302,   308,   314,   320, 
  326,   332,   338,   344,   350,   356,   363,   368,   375,   386,   393,   397,   401,   404,   408,   412, 
  416,   420,   427,   431,   435,   442,   477,   481,   487,   490,   493,   496,   515,   519,   533,   536, 
  540,   544,   548,   552,   556,   565,   572,   577,   585,   593,   600,   606,   617,   627,   634,   640, 
  647,   654,   658,   666,   673,   678,   685,   691,   697,   704,   708,   712,   717,   733,   738,   763, 
  778,   781, 
};

#define P_EOD 512
#define B_EOD 0

#define P_TAG 513
#define B_TAG 1

#define P_PPP 514
#define B_PPP 2

#define P_MMM 515
#define B_MMM 3

#define P_CHAR 516
#define B_CHAR 4

#define P_KEYWORD 517
#define B_KEYWORD 5

#define P_integer_constant 518
#define B_integer_constant 6

#define P_character_constant 519
#define B_character_constant 7

#define P_string_constant 520
#define B_string_constant 8

#define P_SS 521
#define P_level14 522
#define P_level14_lv 523
#define P_opt_post_ppp_or_mmm 524
#define P_opt_postfix 525
#define P_function_call 526
#define P_opt_argument_list 527
#define P_comma_opt_argument_list 528
#define P_lvalue 529
#define P_opt_cast 530
#define P_level13 531
#define P_prefix_operator_lv 532
#define P_opt_prefix_operator 533
#define P_cast 534
#define P_indirectthrough_seq 535
#define P_opt_indirectthrough_seq 536
#define P_pointerto_seq 537
#define P_opt_pointerto_seq 538
#define P_opt_qualifier 539
#define P_opt_scope 540
#define P_closer 541
#define P_type 542
#define P_signed 543
#define P_level12 544
#define P_level11 545
#define P_level10 546
#define P_level9 547
#define P_level8 548
#define P_level7 549
#define P_level6 550
#define P_level5 551
#define P_level4 552
#define P_level3 553
#define P_level2 554
#define P_opt_level12 555
#define P_opt_level11 556
#define P_opt_level10 557
#define P_opt_level9 558
#define P_opt_level8 559
#define P_opt_level7 560
#define P_opt_level6 561
#define P_opt_level5 562
#define P_opt_level4 563
#define P_opt_level3 564
#define P_level12_op 565
#define P_level11_op 566
#define P_level10_op 567
#define P_level9_op 568
#define P_level8_op 569
#define P_level7_op 570
#define P_ANDAND 571
#define P_level6_op 572
#define P_level5_op 573
#define P_OROR 574
#define P_level4_op 575
#define P_level3_op 576
#define P_opt_conditional 577
#define P_level1 578
#define P_equiv 579
#define P_opt_assign_list 580
#define P_assign_op 581
#define P_expression 582
#define P_opt_comma_level0_list 583
#define P_rvalue 584
#define P_identifier 585
#define P_identifier_lv 586
#define P_statement 587
#define P_debug_statement 588
#define P_labeled_statement 589
#define P_constant_expression 590
#define P_expression_statement 591
#define P_opt_expression 592
#define P_compound_statement 593
#define P_opt_declaration_list 594
#define P_declaration_list 595
#define P_declaration 596
#define P_struct_member_declaration 597
#define P_struct_member_list 598
#define P_struct_decl 599
#define P_opt_rest_of_scalar_decl 600
#define P_rest_of_scalar_decl 601
#define P_scalar_decl 602
#define P_proc_fn_decl 603
#define P_array_decl 604
#define P_forward_decl_or_actual_body 605
#define P_array_bounds 606
#define P_opt_array_bounds 607
#define P_opt_array_init 608
#define P_constant_initializer_list 609
#define P_rest_of_constant_initializer_list 610
#define P_constant_initializer 611
#define P_opt_scalar_init 612
#define P_opt_param_list 613
#define P_opt_rest_of_param_list 614
#define P_param 615
#define P_opt_empty_array_bounds 616
#define P_opt_constant_expression 617
#define P_statement_list 618
#define P_opt_statement_list 619
#define P_selection_statement 620
#define P_opt_else_statement 621
#define P_iteration_statement 622
#define P_jump_statement 623
#define P_new_structname 624
#define P_existing_structname 625
