/*============================================================================= grammar.lr Version 5.76 Full ANSI standard C grammar in EBNF format. Recognizer only. Actions included to handle typedef declaration. Copyright (c) 2002-2014 DMR, all rights reserved. 06-14-14 Removed most of the ebnf, right recursion =============================================================================*/ start_parse : translation_unit __FinishParse translation_unit : external_declaration translation_unit external_declaration external_declaration : function_definition declaration function_definition : declarator { declaration } compound_statement declaration_specifiers declarator { declaration } compound_statement TYPEDEF_NAME declarator { declaration } compound_statement typedef_qualifier TYPEDEF_NAME declarator { declaration } compound_statement typedef_qualifier typedef_qualifier TYPEDEF_NAME declarator { declaration } compound_statement declaration : declaration_specifiers [ init_declarator_list ] ; TYPEDEF_NAME [ init_declarator_list ] ; typedef_qualifier TYPEDEF_NAME [ init_declarator_list ] ; typedef_qualifier typedef_qualifier TYPEDEF_NAME [ init_declarator_list ] ; typedef declaration_specifiers [ init_declarator_list2 ] ; typedef TYPEDEF_NAME [ init_declarator_list2 ] ; init_declarator_list2 : init_declarator __SetTypedefName init_declarator_list2 , init_declarator __SetTypedefName declaration_specifier : storage_class_specifier type_specifier type_qualifier declaration_specifiers : declaration_specifier declaration_specifiers declaration_specifier typedef_qualifiers : typedef_qualifier typedef_qualifier typedef_qualifier typedef_qualifier : type_qualifier storage_class_specifier storage_class_specifier : auto register static extern type_specifier : void char short int long float double signed unsigned struct_or_union_specifier enum_specifier type_qualifier : const volatile struct_or_union_specifier : struct_or_union \{ { struct_declaration }+ \} struct_or_union identifier \{ { struct_declaration }+ \} struct_or_union identifier struct_or_union : struct union init_declarator_list : init_declarator init_declarator_list , init_declarator init_declarator : declarator declarator = initializer struct_declaration : { specifier_qualifier }+ struct_declarator_list ; specifier_qualifier : type_specifier type_qualifier TYPEDEF_NAME struct_declarator_list : struct_declarator struct_declarator_list , struct_declarator struct_declarator : declarator declarator : constant_expression : constant_expression enum_specifier : enum \{ enumerator_list \} enum identifier enum identifier \{ enumerator_list \} enumerator_list : enumerator enumerator_list , enumerator enumerator : identifier identifier = constant_expression declarator : direct_declarator pointer direct_declarator direct_declarator : identifier ( declarator ) direct_declarator \[ [ constant_expression ] \] direct_declarator NewScope ( parameter_type_list ReleaseScope ) direct_declarator ( [ identifier_list ] ) pointer : * * pointer * { type_qualifier }+ * { type_qualifier }+ pointer parameter_type_list : parameter_list parameter_list , ... parameter_list : parameter_declaration parameter_list , parameter_declaration parameter_declaration : declaration_specifiers declaration_specifiers abstract_declarator declaration_specifiers declarator [ typedef_qualifiers ] TYPEDEF_NAME [ typedef_qualifiers ] TYPEDEF_NAME abstract_declarator [ typedef_qualifiers ] TYPEDEF_NAME declarator identifier_list : identifier identifier_list , identifier initializer : assignment_expression \{ initializer_list \} \{ initializer_list , \} initializer_list : initializer initializer_list , initializer type_name : { specifier_qualifier }+ { specifier_qualifier }+ abstract_declarator abstract_declarator : pointer pointer direct_abstract_declarator direct_abstract_declarator direct_abstract_declarator : ( abstract_declarator ) \[ [ constant_expression ] \] ( [ parameter_type_list ] ) direct_abstract_declarator \[ [ constant_expression ] \] direct_abstract_declarator ( [ parameter_type_list ] ) statement : labeled_statement expression_statement compound_statement selection_statement iteration_statement jump_statement labeled_statement : identifier : statement case constant_expression : statement default : statement expression_statement : [ expression ] ; compound_statement : NewScope \{ { declaration } { statement } ReleaseScope \} NewScope : __NewScope ReleaseScope : __ReleaseScope selection_statement : if ( expression ) statement more_if switch ( expression ) statement more_if :! else statement _epsilon_ iteration_statement : while ( expression ) statement do statement while ( expression ) ; for ( [ expression ] ; [ expression ] ; [ expression ] ) statement jump_statement : goto identifier ; continue ; break ; return [ expression ] ; expression : assignment_expression expression , assignment_expression assignment_expression : conditional_expression unary_expression assignment_operator assignment_expression assignment_operator : = *= /= %= += -= <<= >>= &= ^= |= conditional_expression : logical_OR_expression logical_OR_expression ? expression : conditional_expression constant_expression : conditional_expression logical_OR_expression : logical_AND_expression logical_OR_expression || logical_AND_expression logical_AND_expression : inclusive_OR_expression logical_AND_expression && inclusive_OR_expression inclusive_OR_expression : exclusive_OR_expression inclusive_OR_expression | exclusive_OR_expression exclusive_OR_expression : and_expression exclusive_OR_expression ^ and_expression and_expression : equality_expression and_expression & equality_expression equality_expression : relational_expression equality_expression equality_op relational_expression equality_op : == != relational_expression : shift_expression relational_expression relational_op shift_expression relational_op : < > <= >= shift_expression : additive_expression shift_expression shift_op additive_expression shift_op : << >> additive_expression : multiplicitive_expression additive_expression additive_op multiplicitive_expression additive_op : + - multiplicitive_expression : cast_expression multiplicitive_expression multiplicitive_op cast_expression multiplicitive_op : * / % cast_expression : unary_expression ( type_name ) cast_expression unary_expression : postfix_expression ++ unary_expression -- unary_expression unary_operator cast_expression sizeof unary_expression sizeof ( type_name ) unary_operator : & * + - ~ ! postfix_expression : primary_expression postfix_expression \[ expression \] postfix_expression ( [ argument_expression_list ] ) postfix_expression . identifier postfix_expression -> identifier postfix_expression ++ postfix_expression -- primary_expression : identifier constant { STRING }+ ( expression ) argument_expression_list : assignment_expression argument_expression_list , assignment_expression identifier : IDENTIFIER __ShowName constant : INTEGER_CONSTANT CHARACTER_CONSTANT FLOATING_CONSTANT ENUMERATION_CONSTANT slk V4.85 (c) 2001-2014 by DMR Conflict 1: parse table conflict under "(" in state 11: 76: direct_declarator --> direct_declarator ( identifier_list_opt ) 119: NewScope --> __NewScope Conflict 2: parse table conflict under "extern" in state 14: 26: typedef_qualifier --> type_qualifier 21: declaration_specifier --> type_qualifier Conflict 3: parse table conflict under "static" in state 14: 26: typedef_qualifier --> type_qualifier 21: declaration_specifier --> type_qualifier Conflict 4: parse table conflict under "register" in state 14: 26: typedef_qualifier --> type_qualifier 21: declaration_specifier --> type_qualifier Conflict 5: parse table conflict under "auto" in state 14: 26: typedef_qualifier --> type_qualifier 21: declaration_specifier --> type_qualifier Conflict 6: parse table conflict under "volatile" in state 14: 26: typedef_qualifier --> type_qualifier 21: declaration_specifier --> type_qualifier Conflict 7: parse table conflict under "const" in state 14: 26: typedef_qualifier --> type_qualifier 21: declaration_specifier --> type_qualifier Conflict 8: parse table conflict under "extern" in state 15: 27: typedef_qualifier --> storage_class_specifier 19: declaration_specifier --> storage_class_specifier Conflict 9: parse table conflict under "static" in state 15: 27: typedef_qualifier --> storage_class_specifier 19: declaration_specifier --> storage_class_specifier Conflict 10: parse table conflict under "register" in state 15: 27: typedef_qualifier --> storage_class_specifier 19: declaration_specifier --> storage_class_specifier Conflict 11: parse table conflict under "auto" in state 15: 27: typedef_qualifier --> storage_class_specifier 19: declaration_specifier --> storage_class_specifier Conflict 12: parse table conflict under "volatile" in state 15: 27: typedef_qualifier --> storage_class_specifier 19: declaration_specifier --> storage_class_specifier Conflict 13: parse table conflict under "const" in state 15: 27: typedef_qualifier --> storage_class_specifier 19: declaration_specifier --> storage_class_specifier Conflict 14: parse table conflict under "(" in state 66: 76: direct_declarator --> direct_declarator ( identifier_list_opt ) 119: NewScope --> __NewScope Conflict 15: parse table conflict under "auto" in state 212: 19: declaration_specifier --> storage_class_specifier 27: typedef_qualifier --> storage_class_specifier Conflict 16: parse table conflict under "register" in state 212: 19: declaration_specifier --> storage_class_specifier 27: typedef_qualifier --> storage_class_specifier Conflict 17: parse table conflict under "static" in state 212: 19: declaration_specifier --> storage_class_specifier 27: typedef_qualifier --> storage_class_specifier Conflict 18: parse table conflict under "extern" in state 212: 19: declaration_specifier --> storage_class_specifier 27: typedef_qualifier --> storage_class_specifier Conflict 19: parse table conflict under "const" in state 212: 19: declaration_specifier --> storage_class_specifier 27: typedef_qualifier --> storage_class_specifier Conflict 20: parse table conflict under "volatile" in state 212: 19: declaration_specifier --> storage_class_specifier 27: typedef_qualifier --> storage_class_specifier Conflict 21: parse table conflict under "auto" in state 213: 21: declaration_specifier --> type_qualifier 26: typedef_qualifier --> type_qualifier Conflict 22: parse table conflict under "register" in state 213: 21: declaration_specifier --> type_qualifier 26: typedef_qualifier --> type_qualifier Conflict 23: parse table conflict under "static" in state 213: 21: declaration_specifier --> type_qualifier 26: typedef_qualifier --> type_qualifier Conflict 24: parse table conflict under "extern" in state 213: 21: declaration_specifier --> type_qualifier 26: typedef_qualifier --> type_qualifier Conflict 25: parse table conflict under "const" in state 213: 21: declaration_specifier --> type_qualifier 26: typedef_qualifier --> type_qualifier Conflict 26: parse table conflict under "volatile" in state 213: 21: declaration_specifier --> type_qualifier 26: typedef_qualifier --> type_qualifier -------------------------------------------------- Conflicts were ignored by request on 1 nonterminal(s) Conflicts were resolved at lookahead level k=3 total nonterminals = 88 total terminals = 86 total productions = 286 total states = 403 parse table size = 70122 ignored conflicts = 1 total base conflicts = 26 total conflicts = 98 conflict table size = 8428 generating the parser compacting parse table from 70122 to 25462 compacting conflict table from 8428 to 962