#define WHITESPACE_PHRASE 1023
#define GUARD  (1<<14)
#define NEGATE (1<<15)
#define MAX_GRAMMAR 1316
#define PHRASE_BASE 525
int gram[MAX_GRAMMAR] = {
    1,     1,   526,     2,     2,   527,   526,     1,   524,     6,     3,   664,  1023|GUARD ,    59,     1,   624, 
    1,   533,     1,   587,     1,   528,     2,  1023|GUARD ,    59,     3,     7,   529,   513,  1023|GUARD ,   123,   530, 
 1023|GUARD ,   125,     6,   529,  1023|GUARD ,   123,   530,  1023|GUARD ,   125,     2,   529,   513,     2,     2,  1023|GUARD ,   256, 
    2,  1023|GUARD ,   257,     1,     2,   532,   531,     2,     2,   532,   531,     0,     1,     1,   533,     1, 
    6,   620,   618,   617,   534,  1023|GUARD ,    59,     3,     5,   581,   513,   614,   610,   535,    14,   581, 
 1023|GUARD ,    40,   581,   513,  1023|GUARD ,    41,  1023|GUARD ,    40,   651,  1023|GUARD ,    41,   536,   535,     4,   581,   513, 
  536,   535,     2,     3,  1023|GUARD ,    44,   534,     0,     2,     3,  1023|GUARD ,    61,   537,     0,     1,     3, 
  609,   539,   538,     2,     3,   608,   539,   538,     0,     1,     2,   544,   540,     2,     6,  1023|GUARD , 
   63,   541,  1023|GUARD ,    58,   539,     0,     1,     1,   542,     1,     2,   537,   543,     2,     4,  1023|GUARD , 
   44,   537,   543,     0,     1,     2,   546,   545,     2,     3,   522,   546,   545,     0,     1,     2, 
  548,   547,     2,     3,   521,   548,   547,     0,     1,     2,   550,   549,     2,     4,  1023|GUARD ,   124, 
  550,   549,     0,     1,     2,   552,   551,     2,     4,  1023|GUARD ,    94,   552,   551,     0,     1,     2, 
  554,   553,     2,     4,  1023|GUARD ,    38,   554,   553,     0,     1,     2,   556,   555,     2,     3,   607, 
  556,   555,     0,     1,     2,   558,   557,     2,     3,   606,   558,   557,     0,     1,     2,   560, 
  559,     2,     3,   605,   560,   559,     0,     1,     2,   562,   561,     2,     3,   604,   562,   561, 
    0,     1,     2,   564,   563,     2,     3,   603,   564,   563,     0,     8,     2,   602,   597,     2, 
  600,   597,     2,   598,   597,     2,   582,   578,     3,  1023|GUARD ,   258,   564,     3,  1023|GUARD ,   258,   571, 
    3,  1023|GUARD ,   258,   584,     1,   565,     2,     2,   580,   565,     1,   566,     2,     2,   575,   567, 
    2,   571,   567,     6,     6,  1023|GUARD ,    91,   541,  1023|GUARD ,    93,   567,     6,  1023|GUARD ,    40,   569,  1023|GUARD , 
   41,   567,     4,  1023|GUARD ,    46,   513,   567,     6,  1023|GUARD ,    45,  1023|GUARD ,    62,   513,   567,     2,   568, 
  567,     0,     2,     1,   519,     1,   520,     2,     2,   537,   570,     0,     2,     4,  1023|GUARD ,    44, 
  537,   570,     0,     4,     2,   596,   571,     2,   582,   579,     1,   578,     1,   572,     1,     2, 
  575,   573,     6,     6,  1023|GUARD ,    91,   541,  1023|GUARD ,    93,   573,     6,  1023|GUARD ,    40,   569,  1023|GUARD ,    41, 
  574,     4,  1023|GUARD ,    46,   513,   573,     6,  1023|GUARD ,    45,  1023|GUARD ,    62,   513,   573,     2,   568,   573, 
    0,     5,     6,  1023|GUARD ,    91,   541,  1023|GUARD ,    93,   573,     6,  1023|GUARD ,    40,   569,  1023|GUARD ,    41,   574, 
    4,  1023|GUARD ,    46,   513,   573,     6,  1023|GUARD ,    45,  1023|GUARD ,    62,   513,   573,     2,   568,   573,     4, 
    1,   513,     1,   576,     1,   517,     5,  1023|GUARD ,    40,   541,  1023|GUARD ,    41,     4,     1,   514,     1, 
  515,     1,   516,     1,   577,     1,     1,   513,     1,     2,   595,   579,     2,     2,   580,   579, 
    1,   571,     1,     6,  1023|GUARD ,    40,   584,   583,  1023|GUARD ,    41,     2,     4,   618,  1023|GUARD ,    42,   581, 
    0,     1,     3,  1023|GUARD ,    42,   583,     2,     3,  1023|GUARD ,    42,   583,     0,     2,     1,   586,     1, 
  585,     1,     1,   513,     8,     2,  1023|GUARD ,   259,     2,  1023|GUARD ,   260,     4,  1023|GUARD ,   261,  1023|GUARD ,   260, 
    3,   594,  1023|GUARD ,   262,     2,   594,   592,     2,  1023|GUARD ,   263,     1,   528,     1,   587,     3,     7, 
 1023|GUARD ,   264,  1023|GUARD ,   123,   588,  1023|GUARD ,   125,     8,  1023|GUARD ,   264,   513,  1023|GUARD ,   123,   588,  1023|GUARD ,   125, 
    3,  1023|GUARD ,   264,   513,     1,     2,   590,   589,     3,     4,  1023|GUARD ,    44,   590,   589,     2,  1023|GUARD , 
   44,     0,     2,     4,   513,  1023|GUARD ,    61,   591,     1,   513,     1,     1,   539,     4,     3,  1023|GUARD , 
  265,   593,     5,  1023|GUARD ,   261,  1023|GUARD ,   261,   593,     3,  1023|GUARD ,   261,   593,     2,  1023|GUARD ,   266,     2, 
    2,  1023|GUARD ,   266,     0,     3,     2,  1023|GUARD ,   267,     2,  1023|GUARD ,   268,     0,     1,     2,  1023|GUARD ,    38, 
    2,     1,   519,     1,   520,     2,     2,   580,   597,     1,   564,     1,     3,  1023|GUARD ,   126,   599, 
    2,     3,  1023|GUARD ,   126,   599,     0,     1,     3,  1023|GUARD ,    33,   601,     2,     3,  1023|GUARD ,    33,   601, 
    0,     2,     2,  1023|GUARD ,    43,     2,  1023|GUARD ,    45,     3,     2,  1023|GUARD ,    42,     2,  1023|GUARD ,    47,     2, 
 1023|GUARD ,    37,     2,     2,  1023|GUARD ,    43,     2,  1023|GUARD ,    45,     2,     4,  1023|GUARD ,    60,  1023|GUARD ,    60,     4, 
 1023|GUARD ,    62,  1023|GUARD ,    62,     4,     4,  1023|GUARD ,    60,  1023|GUARD ,    61,     2,  1023|GUARD ,    60,     4,  1023|GUARD ,    62, 
 1023|GUARD ,    61,     2,  1023|GUARD ,    62,     2,     1,   523,     4,  1023|GUARD ,    33,  1023|GUARD ,    61,    11,     2,  1023|GUARD , 
   61,     4,  1023|GUARD ,    42,  1023|GUARD ,    61,     4,  1023|GUARD ,    47,  1023|GUARD ,    61,     4,  1023|GUARD ,    37,  1023|GUARD ,    61, 
    4,  1023|GUARD ,    43,  1023|GUARD ,    61,     4,  1023|GUARD ,    45,  1023|GUARD ,    61,     6,  1023|GUARD ,    60,  1023|GUARD ,    60,  1023|GUARD , 
   61,     6,  1023|GUARD ,    62,  1023|GUARD ,    62,  1023|GUARD ,    61,     4,  1023|GUARD ,    38,  1023|GUARD ,    61,     4,  1023|GUARD ,    94, 
 1023|GUARD ,    61,     4,  1023|GUARD ,   124,  1023|GUARD ,    61,     2,     2,   571,   608,     0,     3,     7,  1023|GUARD ,    61, 
 1023|GUARD ,   123,   611,  1023|GUARD ,   125,     3,  1023|GUARD ,    61,   517,     0,     1,     2,   613,   612,     3,     4, 
 1023|GUARD ,    44,   613,   612,     2,  1023|GUARD ,    44,     0,     2,     1,   591,     5,  1023|GUARD ,   123,   611,  1023|GUARD , 
  125,     1,     6,  1023|GUARD ,    91,   616,  1023|GUARD ,    93,   615,     2,     6,  1023|GUARD ,    91,   616,  1023|GUARD ,    93, 
  615,     0,     2,     1,   591,     0,     6,     2,  1023|GUARD ,   259,     1,   587,     1,   528,     7,  1023|GUARD , 
  269,  1023|GUARD ,    40,   571,  1023|GUARD ,    41,     1,   586,     1,   585,     2,     1,   619,     0,     2,     2, 
 1023|GUARD ,   270,     2,  1023|GUARD ,   271,     5,     2,  1023|GUARD ,   272,     2,  1023|GUARD ,   273,     2,  1023|GUARD ,   274,     2, 
 1023|GUARD ,   275,     0,     2,     1,   622,     0,     1,     2,   513,   623,     2,     3,  1023|GUARD ,    44,   622, 
    0,     4,    11,   620,   618,   663,   581,   513,  1023|GUARD ,    40,   651,  1023|GUARD ,    41,   625,    11,   620, 
  618,   585,   581,   513,  1023|GUARD ,    40,   651,  1023|GUARD ,    41,   625,    14,   620,   618,   663,   581,   513, 
 1023|GUARD ,    40,   622,  1023|GUARD ,    41,   652,  1023|GUARD ,    59,   626,    14,   620,   618,   585,   581,   513,  1023|GUARD , 
   40,   622,  1023|GUARD ,    41,   652,  1023|GUARD ,    59,   626,     2,     2,  1023|GUARD ,    59,     1,   626,     2,     4, 
 1023|GUARD ,   123,  1023|GUARD ,   125,     5,  1023|GUARD ,   123,   627,  1023|GUARD ,   125,     1,     3,   650,   629,   628,     2, 
    3,   650,   629,   628,     0,     7,     2,  1023|GUARD ,    59,     1,   626,     1,   648,     1,   647,     1, 
  644,     3,   541,  1023|GUARD ,    59,     1,   630,     2,     4,   620,   618,   617,   639,     1,   631,     1, 
    8,  1023|GUARD ,   256,   638,  1023|GUARD ,   123,   632,  1023|GUARD ,   125,     2,     2,   633,   632,     0,     3,     1, 
  631,     1,   635,     1,   634,     1,     9,   620,   618,   617,   581,   513,   614,   610,  1023|GUARD ,    59, 
    1,     4,   620,   618,   617,   636,     1,     6,   581,   513,   536,   637,  1023|GUARD ,    59,     2,     6, 
 1023|GUARD ,    44,   581,   513,   536,   637,     0,     1,     1,   513,     1,     2,   641,   640,     2,     3, 
 1023|GUARD ,   276,   639,     0,     2,     4,   581,   513,   642,   610,     3,   581,   513,   536,     1,     6, 
 1023|GUARD ,    91,   616,  1023|GUARD ,    93,   643,     2,     6,  1023|GUARD ,    91,   616,  1023|GUARD ,    93,   643,     0,     4, 
    5,  1023|GUARD ,   277,   646,  1023|GUARD ,    59,     4,  1023|GUARD ,   278,  1023|GUARD ,    59,     4,  1023|GUARD ,   279,  1023|GUARD ,    59, 
    5,  1023|GUARD ,   280,   645,  1023|GUARD ,    59,     2,     1,   541,     0,     1,     1,   513,     3,     8,  1023|GUARD , 
  281,  1023|GUARD ,    40,   541,  1023|GUARD ,    41,   629,    12,  1023|GUARD ,   282,   629,  1023|GUARD ,   281,  1023|GUARD ,    40,   541, 
 1023|GUARD ,    41,  1023|GUARD ,    59,    14,  1023|GUARD ,   283,  1023|GUARD ,    40,   645,  1023|GUARD ,    59,   645,  1023|GUARD ,    59,   645, 
 1023|GUARD ,    41,   629,     2,     9,  1023|GUARD ,   284,  1023|GUARD ,    40,   541,  1023|GUARD ,    41,   629,   649,     8,  1023|GUARD , 
  285,  1023|GUARD ,    40,   541,  1023|GUARD ,    41,   629,     2,     3,  1023|GUARD ,   286,   629,     0,     4,     4,   646, 
 1023|GUARD ,    58,   650,     6,  1023|GUARD ,   287,   591,  1023|GUARD ,    58,   650,     5,  1023|GUARD ,   288,  1023|GUARD ,    58,   650, 
    0,     3,     2,  1023|GUARD ,   259,     2,   660,   659,     0,     2,     1,   653,     0,     2,     2,  1023|GUARD , 
  259,     2,   655,   654,     2,     3,  1023|GUARD ,    59,   653,     0,     1,     3,   618,   617,   656,     1, 
    2,   658,   657,     2,     3,  1023|GUARD ,    44,   656,     0,     1,     3,   581,   661,   643,     3,     8, 
 1023|GUARD ,    44,  1023|GUARD ,    46,  1023|GUARD ,    46,  1023|GUARD ,    46,     4,  1023|GUARD ,    44,   660,   659,     0,     2,     1, 
  662,     5,   618,   617,   581,   661,   643,     2,     1,   513,     0,     2,    14,   620,   618,   663, 
 1023|GUARD ,    40,   581,   513,  1023|GUARD ,    41,  1023|GUARD ,    40,   651,  1023|GUARD ,    41,    14,   620,   618,   585,  1023|GUARD , 
   40,   581,   513,  1023|GUARD ,    41,  1023|GUARD ,    40,   651,  1023|GUARD ,    41,     2,     1,   586,     0,     2,     4, 
 1023|GUARD ,   289,   631,   665,     4,  1023|GUARD ,   289,   584,   665,     1,     3,   581,   585,   666,     2,     3, 
 1023|GUARD ,    44,   665,     0, 
};

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

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

#define MAX_PHRASE 155
#if defined(DEBUG_PARSER) || defined(EXTENDED_ERROR_REPORTING)
// FOR DEBUGGING ONLY
char *phrasename[MAX_PHRASE] = { // Based at 512 upwards
  "char", "identifier", "integer-constant", "character-constant", 
  "floating-constant", "string", "keyword", "pp", 
  "mm", "andand", "oror", "eqeq", 
  "EOF", "SS", "opt-external-declaration-list", "external-declaration", 
  "struct-or-union-specifier", "struct-or-union", "struct-field-declarations", "rest-of-struct-field-declarations", 
  "struct-field-declaration", "possibly-initialised-scalar-or-array-decl", "rest-of-scalar-or-array-decl", "opt-rest-of-scalar-or-array-decl", 
  "opt-scalar-init", "assignment-expression", "opt-rest-of-assignment-expression", "conditional-expression", 
  "rest-of-conditional-expression", "expression", "comma-statement", "rest-of-comma-statement", 
  "logical-or-expression", "rest-of-logical-or-expression", "logical-and-expression", "rest-of-logical-and-expression", 
  "inclusive-or-expression", "rest-of-inclusive-or-expression", "exclusive-or-expression", "rest-of-exclusive-or-expression", 
  "bitwise-and-expression", "rest-of-bitwise-and-expression", "equality-expression", "rest-of-equality-expression", 
  "relational-expression", "rest-of-relational-expression", "shift-expression", "rest-of-shift-expression", 
  "additive-expression", "rest-of-additive-expression", "multiplicative-expression", "rest-of-multiplicative-expression", 
  "unary-rvalue-expression", "optionally-cast-postfix-rvalue-expression", "postfix-rvalue-expression", "rest-of-postfix-rvalue-expression", 
  "post-increment-op", "actual-param-list", "rest-of-param-list", "unary-lvalue-expression", 
  "postfix-lvalue-expression", "rest-of-postfix-expression", "non-empty-rest-of-postfix-expression", "primary-expression", 
  "constant", "enumeration-constant", "unary-address-expression", "optionally-cast-unary-lvalue-expression", 
  "cast", "opt-indirection-decl", "indirection-unary-ops", "opt-indirection-unary-ops", 
  "type-specifier", "typedef-name", "basic-type-specifier", "enum-specifier", 
  "enumerator-list", "rest-of-enumerator-list", "enumerator", "constant-expression", 
  "inttype", "opt-int", "opt-signed", "address-operator", 
  "pre-increment-op", "optionally-cast-unary-rvalue-expression", "bitwise-unary-ops", "rest-of-bitwise-unary-ops", 
  "boolean-unary-ops", "rest-of-boolean-unary-ops", "arithmetic-unary-op", "mulop", 
  "plusminus", "shiftop", "relop", "eqop", 
  "assignment-operator", "opt-lvalue-assign", "opt-array-init", "constant-initializer-list", 
  "rest-of-constant-initializer-list", "constant-initializer", "array-bounds", "opt-array-bounds", 
  "opt-constant-expression", "type", "opt-const-or-volatile-type-qualifier", "const-or-volatile-type-qualifier", 
  "opt-auto-reg-static-ext", "opt-identifier-list", "identifier-list", "rest-of-identifier-list", 
  "proc-fn-decl", "forward-decl-or-actual-body", "compound-statement", "statement-list", 
  "rest-of-statement-list", "statement", "in-proc-data-declaration", "struct-decl", 
  "struct-member-list", "struct-member-declaration", "possibly-initialised-array-decl", "possibly-initialised-scalar-decl", 
  "rest-of-scalar-decl", "opt-rest-of-scalar-decl", "new-structname", "decl-list", 
  "rest-of-decl-list", "decl", "possibly-empty-array-bounds-list", "optional-possibly-empty-array-bounds-list", 
  "jump-statement", "opt-expression", "label", "iteration-statement", 
  "selection-statement", "opt-else", "opt-labels", "opt-param-list", 
  "opt-oldstyle-param-list", "oldstyle-param-list", "opt-rest-of-oldstyle-param-list", "oldstyle-formal-param", 
  "oldstyle-parameter-list", "rest-of-oldstyle-parameter-list", "whatever", "opt-rest-of-param-list", 
  "formal-param", "opt-identifier", "procedure-as-parameter", "opt-basic-type-specifier", 
  "typedef-declaration", "maybe-indirect-typedef-name-list", "rest-of-maybe-indirect-typedef-name-list", 
};
#endif /* DEBUG_PARSER */

int phrase_start[MAX_PHRASE-MAX_BIP] = {
    0,     3,     9, 
   25,    44,    51,    55,    60,    63,    71,    98,   104,   110,   115,   121,   125,   134,   137,   141, 
  148,   152,   158,   162,   168,   172,   179,   183,   190,   194,   201,   205,   211,   215,   221,   225, 
  231,   235,   241,   245,   251,   278,   284,   291,   322,   327,   332,   339,   350,   354,   385,   415, 
  428,   437,   440,   444,   450,   458,   465,   470,   476,   481,   484,   510,   532,   536,   546,   554, 
  557,   575,   580,   588,   592,   597,   603,   608,   614,   619,   625,   632,   642,   649,   660,   677, 
  685,   743,   748,   762,   766,   776,   785,   793,   802,   806,   826,   830,   837,   851,   855,   859, 
  865,   920,   926,   938,   943,   949,   967,   975,   985,   990,   997,  1008,  1014,  1022,  1031,  1034, 
 1038,  1044,  1054,  1062,  1071,  1094,  1098,  1101,  1139,  1159,  1165,  1185,  1193,  1197,  1204,  1210, 
 1215,  1219,  1225,  1230,  1246,  1255,  1259,  1290,  1294,  1305,  1310, 
};

#define P_char 512
#define B_char 0

#define P_identifier 513
#define B_identifier 1

#define P_integer_constant 514
#define B_integer_constant 2

#define P_character_constant 515
#define B_character_constant 3

#define P_floating_constant 516
#define B_floating_constant 4

#define P_string 517
#define B_string 5

#define P_keyword 518
#define B_keyword 6

#define P_pp 519
#define B_pp 7

#define P_mm 520
#define B_mm 8

#define P_andand 521
#define B_andand 9

#define P_oror 522
#define B_oror 10

#define P_eqeq 523
#define B_eqeq 11

#define P_EOF 524
#define B_EOF 12

#define P_SS 525
#define P_opt_external_declaration_list 526
#define P_external_declaration 527
#define P_struct_or_union_specifier 528
#define P_struct_or_union 529
#define P_struct_field_declarations 530
#define P_rest_of_struct_field_declarations 531
#define P_struct_field_declaration 532
#define P_possibly_initialised_scalar_or_array_decl 533
#define P_rest_of_scalar_or_array_decl 534
#define P_opt_rest_of_scalar_or_array_decl 535
#define P_opt_scalar_init 536
#define P_assignment_expression 537
#define P_opt_rest_of_assignment_expression 538
#define P_conditional_expression 539
#define P_rest_of_conditional_expression 540
#define P_expression 541
#define P_comma_statement 542
#define P_rest_of_comma_statement 543
#define P_logical_or_expression 544
#define P_rest_of_logical_or_expression 545
#define P_logical_and_expression 546
#define P_rest_of_logical_and_expression 547
#define P_inclusive_or_expression 548
#define P_rest_of_inclusive_or_expression 549
#define P_exclusive_or_expression 550
#define P_rest_of_exclusive_or_expression 551
#define P_bitwise_and_expression 552
#define P_rest_of_bitwise_and_expression 553
#define P_equality_expression 554
#define P_rest_of_equality_expression 555
#define P_relational_expression 556
#define P_rest_of_relational_expression 557
#define P_shift_expression 558
#define P_rest_of_shift_expression 559
#define P_additive_expression 560
#define P_rest_of_additive_expression 561
#define P_multiplicative_expression 562
#define P_rest_of_multiplicative_expression 563
#define P_unary_rvalue_expression 564
#define P_optionally_cast_postfix_rvalue_expression 565
#define P_postfix_rvalue_expression 566
#define P_rest_of_postfix_rvalue_expression 567
#define P_post_increment_op 568
#define P_actual_param_list 569
#define P_rest_of_param_list 570
#define P_unary_lvalue_expression 571
#define P_postfix_lvalue_expression 572
#define P_rest_of_postfix_expression 573
#define P_non_empty_rest_of_postfix_expression 574
#define P_primary_expression 575
#define P_constant 576
#define P_enumeration_constant 577
#define P_unary_address_expression 578
#define P_optionally_cast_unary_lvalue_expression 579
#define P_cast 580
#define P_opt_indirection_decl 581
#define P_indirection_unary_ops 582
#define P_opt_indirection_unary_ops 583
#define P_type_specifier 584
#define P_typedef_name 585
#define P_basic_type_specifier 586
#define P_enum_specifier 587
#define P_enumerator_list 588
#define P_rest_of_enumerator_list 589
#define P_enumerator 590
#define P_constant_expression 591
#define P_inttype 592
#define P_opt_int 593
#define P_opt_signed 594
#define P_address_operator 595
#define P_pre_increment_op 596
#define P_optionally_cast_unary_rvalue_expression 597
#define P_bitwise_unary_ops 598
#define P_rest_of_bitwise_unary_ops 599
#define P_boolean_unary_ops 600
#define P_rest_of_boolean_unary_ops 601
#define P_arithmetic_unary_op 602
#define P_mulop 603
#define P_plusminus 604
#define P_shiftop 605
#define P_relop 606
#define P_eqop 607
#define P_assignment_operator 608
#define P_opt_lvalue_assign 609
#define P_opt_array_init 610
#define P_constant_initializer_list 611
#define P_rest_of_constant_initializer_list 612
#define P_constant_initializer 613
#define P_array_bounds 614
#define P_opt_array_bounds 615
#define P_opt_constant_expression 616
#define P_type 617
#define P_opt_const_or_volatile_type_qualifier 618
#define P_const_or_volatile_type_qualifier 619
#define P_opt_auto_reg_static_ext 620
#define P_opt_identifier_list 621
#define P_identifier_list 622
#define P_rest_of_identifier_list 623
#define P_proc_fn_decl 624
#define P_forward_decl_or_actual_body 625
#define P_compound_statement 626
#define P_statement_list 627
#define P_rest_of_statement_list 628
#define P_statement 629
#define P_in_proc_data_declaration 630
#define P_struct_decl 631
#define P_struct_member_list 632
#define P_struct_member_declaration 633
#define P_possibly_initialised_array_decl 634
#define P_possibly_initialised_scalar_decl 635
#define P_rest_of_scalar_decl 636
#define P_opt_rest_of_scalar_decl 637
#define P_new_structname 638
#define P_decl_list 639
#define P_rest_of_decl_list 640
#define P_decl 641
#define P_possibly_empty_array_bounds_list 642
#define P_optional_possibly_empty_array_bounds_list 643
#define P_jump_statement 644
#define P_opt_expression 645
#define P_label 646
#define P_iteration_statement 647
#define P_selection_statement 648
#define P_opt_else 649
#define P_opt_labels 650
#define P_opt_param_list 651
#define P_opt_oldstyle_param_list 652
#define P_oldstyle_param_list 653
#define P_opt_rest_of_oldstyle_param_list 654
#define P_oldstyle_formal_param 655
#define P_oldstyle_parameter_list 656
#define P_rest_of_oldstyle_parameter_list 657
#define P_whatever 658
#define P_opt_rest_of_param_list 659
#define P_formal_param 660
#define P_opt_identifier 661
#define P_procedure_as_parameter 662
#define P_opt_basic_type_specifier 663
#define P_typedef_declaration 664
#define P_maybe_indirect_typedef_name_list 665
#define P_rest_of_maybe_indirect_typedef_name_list 666

#ifdef WANT_COMMENT
char *comment[MAX_PHRASE-MAX_BIP] = {
  " top-level statement\n",
  NULL, NULL, 
  " Oops - these can be initialised.  Not yet done so.\n"
  "\n",
  NULL, NULL, NULL, NULL, 
  " I originally thought you could only initialise an array after a declaration\n"
  " that had '[]' in it.  But not the case - a typedef'd declaration may have\n"
  " the array part in the typedef rather than the instance.  Ugly language.\n"
  "\n"
  " Also we can have initialised structs :-/\n"
  "\n",
  " The <opt-scalar-init> part of function pointers is usually going to be \"= &procname\"... any other type of scalar is dubious...\n",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  " <opt-indirection-decl> looks just like <opt-indirection-unary-ops> except that it only\n"
  " happens in a declaration, not a data access.  The significant difference is that the '*'\n"
  " can be preceded by a \"const\" (and maybe \"volatile\") keyword, eg \"int const *fred\" which\n"
  " is a constant pointer to an int.\n"
  "\n",
  NULL, NULL, NULL, NULL, 
  " I think struct or union or enum specifier below can be an actual declaration using '{}'s\n"
  " rather than just a struct or enum name.\n"
  "\n",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, NULL, 
  " formal parameter list can also be just a list of types (but can still end in \"...\")\n"
  " normal current style however is to have named parameters.\n"
  "\n",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
  NULL, NULL, NULL, 
};
#endif

