input grammar: egg.y
State 27 conflicts: 1 shift/reduce State 455 conflicts: 1 shift/reduce
0 $accept → translation_unit $end 1 primary_expression → IDENTIFIER 2 | constant 3 | string 4 | '(' expression ')' 5 | generic_selection 6 constant → I_CONSTANT 7 | F_CONSTANT 8 | ENUMERATION_CONSTANT 9 enumeration_constant → IDENTIFIER 10 string → STRING_LITERAL 11 | FUNC_NAME 12 generic_selection → GENERIC '(' assignment_expression ',' generic_assoc_list ')' 13 generic_assoc_list → generic_association 14 | generic_assoc_list ',' generic_association 15 generic_association → type_name ':' assignment_expression 16 | DEFAULT ':' assignment_expression 17 postfix_expression → primary_expression 18 | postfix_expression '[' expression ']' 19 | postfix_expression '(' ')' 20 | postfix_expression '(' argument_expression_list ')' 21 | postfix_expression '.' IDENTIFIER 22 | postfix_expression PTR_OP IDENTIFIER 23 | postfix_expression INC_OP 24 | postfix_expression DEC_OP 25 | '(' type_name ')' '{' initializer_list '}' 26 | '(' type_name ')' '{' initializer_list ',' '}' 27 argument_expression_list → assignment_expression 28 | argument_expression_list ',' assignment_expression 29 unary_expression → postfix_expression 30 | INC_OP unary_expression 31 | DEC_OP unary_expression 32 | unary_operator cast_expression 33 | SIZEOF unary_expression 34 | SIZEOF '(' type_name ')' 35 | ALIGNOF '(' type_name ')' 36 unary_operator → '&' 37 | '*' 38 | '+' 39 | '-' 40 | '~' 41 | '!' 42 cast_expression → unary_expression 43 | '(' type_name ')' cast_expression 44 multiplicative_expression → cast_expression 45 | multiplicative_expression '*' cast_expression 46 | multiplicative_expression '/' cast_expression 47 | multiplicative_expression '%' cast_expression 48 additive_expression → multiplicative_expression 49 | additive_expression '+' multiplicative_expression 50 | additive_expression '-' multiplicative_expression 51 shift_expression → additive_expression 52 | shift_expression LEFT_OP additive_expression 53 | shift_expression RIGHT_OP additive_expression 54 relational_expression → shift_expression 55 | relational_expression '<' shift_expression 56 | relational_expression '>' shift_expression 57 | relational_expression LE_OP shift_expression 58 | relational_expression GE_OP shift_expression 59 equality_expression → relational_expression 60 | equality_expression EQ_OP relational_expression 61 | equality_expression NE_OP relational_expression 62 and_expression → equality_expression 63 | and_expression '&' equality_expression 64 exclusive_or_expression → and_expression 65 | exclusive_or_expression '^' and_expression 66 inclusive_or_expression → exclusive_or_expression 67 | inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → inclusive_or_expression 69 | logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → logical_and_expression 71 | logical_or_expression OR_OP logical_and_expression 72 conditional_expression → logical_or_expression 73 | logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → conditional_expression 75 | unary_expression assignment_operator assignment_expression 76 assignment_operator → '=' 77 | MUL_ASSIGN 78 | DIV_ASSIGN 79 | MOD_ASSIGN 80 | ADD_ASSIGN 81 | SUB_ASSIGN 82 | LEFT_ASSIGN 83 | RIGHT_ASSIGN 84 | AND_ASSIGN 85 | XOR_ASSIGN 86 | OR_ASSIGN 87 expression → assignment_expression 88 | expression ',' assignment_expression 89 constant_expression → conditional_expression 90 declaration → declaration_specifiers ';' 91 | declaration_specifiers init_declarator_list ';' 92 | static_assert_declaration 93 declaration_specifiers → storage_class_specifier declaration_specifiers 94 | storage_class_specifier 95 | type_specifier declaration_specifiers 96 | type_specifier 97 | type_qualifier declaration_specifiers 98 | type_qualifier 99 | function_specifier declaration_specifiers 100 | function_specifier 101 | alignment_specifier declaration_specifiers 102 | alignment_specifier 103 init_declarator_list → init_declarator 104 | init_declarator_list ',' init_declarator 105 init_declarator → declarator '=' initializer 106 | declarator 107 storage_class_specifier → TYPEDEF 108 | EXTERN 109 | STATIC 110 | THREAD_LOCAL 111 | AUTO 112 | REGISTER 113 type_specifier → VOID 114 | CHAR 115 | SHORT 116 | INT 117 | LONG 118 | FLOAT 119 | DOUBLE 120 | SIGNED 121 | UNSIGNED 122 | BOOL 123 | COMPLEX 124 | IMAGINARY 125 | atomic_type_specifier 126 | struct_or_union_specifier 127 | enum_specifier 128 | TYPEDEF_NAME 129 struct_or_union_specifier → struct_or_union '{' struct_declaration_list '}' 130 | struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | struct_or_union IDENTIFIER 132 struct_or_union → STRUCT 133 | UNION 134 struct_declaration_list → struct_declaration 135 | struct_declaration_list struct_declaration 136 struct_declaration → specifier_qualifier_list ';' 137 | specifier_qualifier_list struct_declarator_list ';' 138 | static_assert_declaration 139 specifier_qualifier_list → type_specifier specifier_qualifier_list 140 | type_specifier 141 | type_qualifier specifier_qualifier_list 142 | type_qualifier 143 struct_declarator_list → struct_declarator 144 | struct_declarator_list ',' struct_declarator 145 struct_declarator → ':' constant_expression 146 | declarator ':' constant_expression 147 | declarator 148 enum_specifier → ENUM '{' enumerator_list '}' 149 | ENUM '{' enumerator_list ',' '}' 150 | ENUM IDENTIFIER '{' enumerator_list '}' 151 | ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | ENUM IDENTIFIER 153 enumerator_list → enumerator 154 | enumerator_list ',' enumerator 155 enumerator → enumeration_constant '=' constant_expression 156 | enumeration_constant 157 atomic_type_specifier → ATOMIC '(' type_name ')' 158 type_qualifier → CONST 159 | RESTRICT 160 | VOLATILE 161 | ATOMIC 162 function_specifier → INLINE 163 | NORETURN 164 alignment_specifier → ALIGNAS '(' type_name ')' 165 | ALIGNAS '(' constant_expression ')' 166 declarator → pointer direct_declarator 167 | direct_declarator 168 direct_declarator → IDENTIFIER 169 | '(' declarator ')' 170 | direct_declarator '[' ']' 171 | direct_declarator '[' '*' ']' 172 | direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | direct_declarator '[' STATIC assignment_expression ']' 174 | direct_declarator '[' type_qualifier_list '*' ']' 175 | direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | direct_declarator '[' type_qualifier_list ']' 178 | direct_declarator '[' assignment_expression ']' 179 | direct_declarator '(' parameter_type_list ')' 180 | direct_declarator '(' ')' 181 | direct_declarator '(' identifier_list ')' 182 pointer → '*' type_qualifier_list pointer 183 | '*' type_qualifier_list 184 | '*' pointer 185 | '*' 186 type_qualifier_list → type_qualifier 187 | type_qualifier_list type_qualifier 188 parameter_type_list → parameter_list ',' ELLIPSIS 189 | parameter_list 190 parameter_list → parameter_declaration 191 | parameter_list ',' parameter_declaration 192 parameter_declaration → declaration_specifiers declarator 193 | declaration_specifiers abstract_declarator 194 | declaration_specifiers 195 identifier_list → IDENTIFIER 196 | identifier_list ',' IDENTIFIER 197 type_name → specifier_qualifier_list abstract_declarator 198 | specifier_qualifier_list 199 abstract_declarator → pointer direct_abstract_declarator 200 | pointer 201 | direct_abstract_declarator 202 direct_abstract_declarator → '(' abstract_declarator ')' 203 | '[' ']' 204 | '[' '*' ']' 205 | '[' STATIC type_qualifier_list assignment_expression ']' 206 | '[' STATIC assignment_expression ']' 207 | '[' type_qualifier_list STATIC assignment_expression ']' 208 | '[' type_qualifier_list assignment_expression ']' 209 | '[' type_qualifier_list ']' 210 | '[' assignment_expression ']' 211 | direct_abstract_declarator '[' ']' 212 | direct_abstract_declarator '[' '*' ']' 213 | direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' 214 | direct_abstract_declarator '[' STATIC assignment_expression ']' 215 | direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' 216 | direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' 217 | direct_abstract_declarator '[' type_qualifier_list ']' 218 | direct_abstract_declarator '[' assignment_expression ']' 219 | '(' ')' 220 | '(' parameter_type_list ')' 221 | direct_abstract_declarator '(' ')' 222 | direct_abstract_declarator '(' parameter_type_list ')' 223 initializer → '{' initializer_list '}' 224 | '{' initializer_list ',' '}' 225 | assignment_expression 226 initializer_list → designation initializer 227 | initializer 228 | initializer_list ',' designation initializer 229 | initializer_list ',' initializer 230 designation → designator_list '=' 231 designator_list → designator 232 | designator_list designator 233 designator → '[' constant_expression ']' 234 | '.' IDENTIFIER 235 static_assert_declaration → STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 236 statement → labeled_statement 237 | compound_statement 238 | expression_statement 239 | selection_statement 240 | iteration_statement 241 | jump_statement 242 labeled_statement → IDENTIFIER ':' statement 243 | CASE constant_expression ':' statement 244 | DEFAULT ':' statement 245 compound_statement → '{' '}' 246 | '{' block_item_list '}' 247 block_item_list → block_item 248 | block_item_list block_item 249 block_item → declaration 250 | statement 251 expression_statement → ';' 252 | expression ';' 253 selection_statement → IF '(' expression ')' statement ELSE statement 254 | IF '(' expression ')' statement 255 | SWITCH '(' expression ')' statement 256 iteration_statement → WHILE '(' expression ')' statement 257 | DO statement WHILE '(' expression ')' ';' 258 | FOR '(' expression_statement expression_statement ')' statement 259 | FOR '(' expression_statement expression_statement expression ')' statement 260 | FOR '(' declaration expression_statement ')' statement 261 | FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → GOTO IDENTIFIER ';' 263 | CONTINUE ';' 264 | BREAK ';' 265 | RETURN ';' 266 | RETURN expression ';' 267 translation_unit → external_declaration 268 | translation_unit external_declaration 269 external_declaration → function_definition 270 | declaration 271 function_definition → declaration_specifiers declarator declaration_list compound_statement 272 | declaration_specifiers declarator compound_statement 273 declaration_list → declaration 274 | declaration_list declaration
0 $accept → • translation_unit $end 90 declaration → • declaration_specifiers ';' 91 | • declaration_specifiers init_declarator_list ';' 92 | • static_assert_declaration 93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 267 translation_unit → • external_declaration 268 | • translation_unit external_declaration 269 external_declaration → • function_definition 270 | • declaration 271 function_definition → • declaration_specifiers declarator declaration_list compound_statement 272 | • declaration_specifiers declarator compound_statement TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 STATIC_ASSERT shift, and go to state 29 THREAD_LOCAL shift, and go to state 30 declaration go to state 31 declaration_specifiers go to state 32 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 static_assert_declaration go to state 42 translation_unit go to state 43 external_declaration go to state 44 function_definition go to state 45
128 type_specifier → TYPEDEF_NAME • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 128 (type_specifier) TYPEDEF_NAME reduce using rule 128 (type_specifier) TYPEDEF reduce using rule 128 (type_specifier) EXTERN reduce using rule 128 (type_specifier) STATIC reduce using rule 128 (type_specifier) AUTO reduce using rule 128 (type_specifier) REGISTER reduce using rule 128 (type_specifier) INLINE reduce using rule 128 (type_specifier) CONST reduce using rule 128 (type_specifier) RESTRICT reduce using rule 128 (type_specifier) VOLATILE reduce using rule 128 (type_specifier) BOOL reduce using rule 128 (type_specifier) CHAR reduce using rule 128 (type_specifier) SHORT reduce using rule 128 (type_specifier) INT reduce using rule 128 (type_specifier) LONG reduce using rule 128 (type_specifier) SIGNED reduce using rule 128 (type_specifier) UNSIGNED reduce using rule 128 (type_specifier) FLOAT reduce using rule 128 (type_specifier) DOUBLE reduce using rule 128 (type_specifier) VOID reduce using rule 128 (type_specifier) COMPLEX reduce using rule 128 (type_specifier) IMAGINARY reduce using rule 128 (type_specifier) STRUCT reduce using rule 128 (type_specifier) UNION reduce using rule 128 (type_specifier) ENUM reduce using rule 128 (type_specifier) ALIGNAS reduce using rule 128 (type_specifier) ATOMIC reduce using rule 128 (type_specifier) NORETURN reduce using rule 128 (type_specifier) THREAD_LOCAL reduce using rule 128 (type_specifier) '(' reduce using rule 128 (type_specifier) ')' reduce using rule 128 (type_specifier) ',' reduce using rule 128 (type_specifier) ':' reduce using rule 128 (type_specifier) '[' reduce using rule 128 (type_specifier) '*' reduce using rule 128 (type_specifier) ';' reduce using rule 128 (type_specifier)
107 storage_class_specifier → TYPEDEF • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 107 (storage_class_specifier) TYPEDEF_NAME reduce using rule 107 (storage_class_specifier) TYPEDEF reduce using rule 107 (storage_class_specifier) EXTERN reduce using rule 107 (storage_class_specifier) STATIC reduce using rule 107 (storage_class_specifier) AUTO reduce using rule 107 (storage_class_specifier) REGISTER reduce using rule 107 (storage_class_specifier) INLINE reduce using rule 107 (storage_class_specifier) CONST reduce using rule 107 (storage_class_specifier) RESTRICT reduce using rule 107 (storage_class_specifier) VOLATILE reduce using rule 107 (storage_class_specifier) BOOL reduce using rule 107 (storage_class_specifier) CHAR reduce using rule 107 (storage_class_specifier) SHORT reduce using rule 107 (storage_class_specifier) INT reduce using rule 107 (storage_class_specifier) LONG reduce using rule 107 (storage_class_specifier) SIGNED reduce using rule 107 (storage_class_specifier) UNSIGNED reduce using rule 107 (storage_class_specifier) FLOAT reduce using rule 107 (storage_class_specifier) DOUBLE reduce using rule 107 (storage_class_specifier) VOID reduce using rule 107 (storage_class_specifier) COMPLEX reduce using rule 107 (storage_class_specifier) IMAGINARY reduce using rule 107 (storage_class_specifier) STRUCT reduce using rule 107 (storage_class_specifier) UNION reduce using rule 107 (storage_class_specifier) ENUM reduce using rule 107 (storage_class_specifier) ALIGNAS reduce using rule 107 (storage_class_specifier) ATOMIC reduce using rule 107 (storage_class_specifier) NORETURN reduce using rule 107 (storage_class_specifier) THREAD_LOCAL reduce using rule 107 (storage_class_specifier) '(' reduce using rule 107 (storage_class_specifier) ')' reduce using rule 107 (storage_class_specifier) ',' reduce using rule 107 (storage_class_specifier) '[' reduce using rule 107 (storage_class_specifier) '*' reduce using rule 107 (storage_class_specifier) ';' reduce using rule 107 (storage_class_specifier)
108 storage_class_specifier → EXTERN • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 108 (storage_class_specifier) TYPEDEF_NAME reduce using rule 108 (storage_class_specifier) TYPEDEF reduce using rule 108 (storage_class_specifier) EXTERN reduce using rule 108 (storage_class_specifier) STATIC reduce using rule 108 (storage_class_specifier) AUTO reduce using rule 108 (storage_class_specifier) REGISTER reduce using rule 108 (storage_class_specifier) INLINE reduce using rule 108 (storage_class_specifier) CONST reduce using rule 108 (storage_class_specifier) RESTRICT reduce using rule 108 (storage_class_specifier) VOLATILE reduce using rule 108 (storage_class_specifier) BOOL reduce using rule 108 (storage_class_specifier) CHAR reduce using rule 108 (storage_class_specifier) SHORT reduce using rule 108 (storage_class_specifier) INT reduce using rule 108 (storage_class_specifier) LONG reduce using rule 108 (storage_class_specifier) SIGNED reduce using rule 108 (storage_class_specifier) UNSIGNED reduce using rule 108 (storage_class_specifier) FLOAT reduce using rule 108 (storage_class_specifier) DOUBLE reduce using rule 108 (storage_class_specifier) VOID reduce using rule 108 (storage_class_specifier) COMPLEX reduce using rule 108 (storage_class_specifier) IMAGINARY reduce using rule 108 (storage_class_specifier) STRUCT reduce using rule 108 (storage_class_specifier) UNION reduce using rule 108 (storage_class_specifier) ENUM reduce using rule 108 (storage_class_specifier) ALIGNAS reduce using rule 108 (storage_class_specifier) ATOMIC reduce using rule 108 (storage_class_specifier) NORETURN reduce using rule 108 (storage_class_specifier) THREAD_LOCAL reduce using rule 108 (storage_class_specifier) '(' reduce using rule 108 (storage_class_specifier) ')' reduce using rule 108 (storage_class_specifier) ',' reduce using rule 108 (storage_class_specifier) '[' reduce using rule 108 (storage_class_specifier) '*' reduce using rule 108 (storage_class_specifier) ';' reduce using rule 108 (storage_class_specifier)
109 storage_class_specifier → STATIC • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 109 (storage_class_specifier) TYPEDEF_NAME reduce using rule 109 (storage_class_specifier) TYPEDEF reduce using rule 109 (storage_class_specifier) EXTERN reduce using rule 109 (storage_class_specifier) STATIC reduce using rule 109 (storage_class_specifier) AUTO reduce using rule 109 (storage_class_specifier) REGISTER reduce using rule 109 (storage_class_specifier) INLINE reduce using rule 109 (storage_class_specifier) CONST reduce using rule 109 (storage_class_specifier) RESTRICT reduce using rule 109 (storage_class_specifier) VOLATILE reduce using rule 109 (storage_class_specifier) BOOL reduce using rule 109 (storage_class_specifier) CHAR reduce using rule 109 (storage_class_specifier) SHORT reduce using rule 109 (storage_class_specifier) INT reduce using rule 109 (storage_class_specifier) LONG reduce using rule 109 (storage_class_specifier) SIGNED reduce using rule 109 (storage_class_specifier) UNSIGNED reduce using rule 109 (storage_class_specifier) FLOAT reduce using rule 109 (storage_class_specifier) DOUBLE reduce using rule 109 (storage_class_specifier) VOID reduce using rule 109 (storage_class_specifier) COMPLEX reduce using rule 109 (storage_class_specifier) IMAGINARY reduce using rule 109 (storage_class_specifier) STRUCT reduce using rule 109 (storage_class_specifier) UNION reduce using rule 109 (storage_class_specifier) ENUM reduce using rule 109 (storage_class_specifier) ALIGNAS reduce using rule 109 (storage_class_specifier) ATOMIC reduce using rule 109 (storage_class_specifier) NORETURN reduce using rule 109 (storage_class_specifier) THREAD_LOCAL reduce using rule 109 (storage_class_specifier) '(' reduce using rule 109 (storage_class_specifier) ')' reduce using rule 109 (storage_class_specifier) ',' reduce using rule 109 (storage_class_specifier) '[' reduce using rule 109 (storage_class_specifier) '*' reduce using rule 109 (storage_class_specifier) ';' reduce using rule 109 (storage_class_specifier)
111 storage_class_specifier → AUTO • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 111 (storage_class_specifier) TYPEDEF_NAME reduce using rule 111 (storage_class_specifier) TYPEDEF reduce using rule 111 (storage_class_specifier) EXTERN reduce using rule 111 (storage_class_specifier) STATIC reduce using rule 111 (storage_class_specifier) AUTO reduce using rule 111 (storage_class_specifier) REGISTER reduce using rule 111 (storage_class_specifier) INLINE reduce using rule 111 (storage_class_specifier) CONST reduce using rule 111 (storage_class_specifier) RESTRICT reduce using rule 111 (storage_class_specifier) VOLATILE reduce using rule 111 (storage_class_specifier) BOOL reduce using rule 111 (storage_class_specifier) CHAR reduce using rule 111 (storage_class_specifier) SHORT reduce using rule 111 (storage_class_specifier) INT reduce using rule 111 (storage_class_specifier) LONG reduce using rule 111 (storage_class_specifier) SIGNED reduce using rule 111 (storage_class_specifier) UNSIGNED reduce using rule 111 (storage_class_specifier) FLOAT reduce using rule 111 (storage_class_specifier) DOUBLE reduce using rule 111 (storage_class_specifier) VOID reduce using rule 111 (storage_class_specifier) COMPLEX reduce using rule 111 (storage_class_specifier) IMAGINARY reduce using rule 111 (storage_class_specifier) STRUCT reduce using rule 111 (storage_class_specifier) UNION reduce using rule 111 (storage_class_specifier) ENUM reduce using rule 111 (storage_class_specifier) ALIGNAS reduce using rule 111 (storage_class_specifier) ATOMIC reduce using rule 111 (storage_class_specifier) NORETURN reduce using rule 111 (storage_class_specifier) THREAD_LOCAL reduce using rule 111 (storage_class_specifier) '(' reduce using rule 111 (storage_class_specifier) ')' reduce using rule 111 (storage_class_specifier) ',' reduce using rule 111 (storage_class_specifier) '[' reduce using rule 111 (storage_class_specifier) '*' reduce using rule 111 (storage_class_specifier) ';' reduce using rule 111 (storage_class_specifier)
112 storage_class_specifier → REGISTER • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 112 (storage_class_specifier) TYPEDEF_NAME reduce using rule 112 (storage_class_specifier) TYPEDEF reduce using rule 112 (storage_class_specifier) EXTERN reduce using rule 112 (storage_class_specifier) STATIC reduce using rule 112 (storage_class_specifier) AUTO reduce using rule 112 (storage_class_specifier) REGISTER reduce using rule 112 (storage_class_specifier) INLINE reduce using rule 112 (storage_class_specifier) CONST reduce using rule 112 (storage_class_specifier) RESTRICT reduce using rule 112 (storage_class_specifier) VOLATILE reduce using rule 112 (storage_class_specifier) BOOL reduce using rule 112 (storage_class_specifier) CHAR reduce using rule 112 (storage_class_specifier) SHORT reduce using rule 112 (storage_class_specifier) INT reduce using rule 112 (storage_class_specifier) LONG reduce using rule 112 (storage_class_specifier) SIGNED reduce using rule 112 (storage_class_specifier) UNSIGNED reduce using rule 112 (storage_class_specifier) FLOAT reduce using rule 112 (storage_class_specifier) DOUBLE reduce using rule 112 (storage_class_specifier) VOID reduce using rule 112 (storage_class_specifier) COMPLEX reduce using rule 112 (storage_class_specifier) IMAGINARY reduce using rule 112 (storage_class_specifier) STRUCT reduce using rule 112 (storage_class_specifier) UNION reduce using rule 112 (storage_class_specifier) ENUM reduce using rule 112 (storage_class_specifier) ALIGNAS reduce using rule 112 (storage_class_specifier) ATOMIC reduce using rule 112 (storage_class_specifier) NORETURN reduce using rule 112 (storage_class_specifier) THREAD_LOCAL reduce using rule 112 (storage_class_specifier) '(' reduce using rule 112 (storage_class_specifier) ')' reduce using rule 112 (storage_class_specifier) ',' reduce using rule 112 (storage_class_specifier) '[' reduce using rule 112 (storage_class_specifier) '*' reduce using rule 112 (storage_class_specifier) ';' reduce using rule 112 (storage_class_specifier)
162 function_specifier → INLINE • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 162 (function_specifier) TYPEDEF_NAME reduce using rule 162 (function_specifier) TYPEDEF reduce using rule 162 (function_specifier) EXTERN reduce using rule 162 (function_specifier) STATIC reduce using rule 162 (function_specifier) AUTO reduce using rule 162 (function_specifier) REGISTER reduce using rule 162 (function_specifier) INLINE reduce using rule 162 (function_specifier) CONST reduce using rule 162 (function_specifier) RESTRICT reduce using rule 162 (function_specifier) VOLATILE reduce using rule 162 (function_specifier) BOOL reduce using rule 162 (function_specifier) CHAR reduce using rule 162 (function_specifier) SHORT reduce using rule 162 (function_specifier) INT reduce using rule 162 (function_specifier) LONG reduce using rule 162 (function_specifier) SIGNED reduce using rule 162 (function_specifier) UNSIGNED reduce using rule 162 (function_specifier) FLOAT reduce using rule 162 (function_specifier) DOUBLE reduce using rule 162 (function_specifier) VOID reduce using rule 162 (function_specifier) COMPLEX reduce using rule 162 (function_specifier) IMAGINARY reduce using rule 162 (function_specifier) STRUCT reduce using rule 162 (function_specifier) UNION reduce using rule 162 (function_specifier) ENUM reduce using rule 162 (function_specifier) ALIGNAS reduce using rule 162 (function_specifier) ATOMIC reduce using rule 162 (function_specifier) NORETURN reduce using rule 162 (function_specifier) THREAD_LOCAL reduce using rule 162 (function_specifier) '(' reduce using rule 162 (function_specifier) ')' reduce using rule 162 (function_specifier) ',' reduce using rule 162 (function_specifier) '[' reduce using rule 162 (function_specifier) '*' reduce using rule 162 (function_specifier) ';' reduce using rule 162 (function_specifier)
158 type_qualifier → CONST • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', ']', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 158 (type_qualifier) I_CONSTANT reduce using rule 158 (type_qualifier) F_CONSTANT reduce using rule 158 (type_qualifier) STRING_LITERAL reduce using rule 158 (type_qualifier) FUNC_NAME reduce using rule 158 (type_qualifier) SIZEOF reduce using rule 158 (type_qualifier) INC_OP reduce using rule 158 (type_qualifier) DEC_OP reduce using rule 158 (type_qualifier) TYPEDEF_NAME reduce using rule 158 (type_qualifier) ENUMERATION_CONSTANT reduce using rule 158 (type_qualifier) TYPEDEF reduce using rule 158 (type_qualifier) EXTERN reduce using rule 158 (type_qualifier) STATIC reduce using rule 158 (type_qualifier) AUTO reduce using rule 158 (type_qualifier) REGISTER reduce using rule 158 (type_qualifier) INLINE reduce using rule 158 (type_qualifier) CONST reduce using rule 158 (type_qualifier) RESTRICT reduce using rule 158 (type_qualifier) VOLATILE reduce using rule 158 (type_qualifier) BOOL reduce using rule 158 (type_qualifier) CHAR reduce using rule 158 (type_qualifier) SHORT reduce using rule 158 (type_qualifier) INT reduce using rule 158 (type_qualifier) LONG reduce using rule 158 (type_qualifier) SIGNED reduce using rule 158 (type_qualifier) UNSIGNED reduce using rule 158 (type_qualifier) FLOAT reduce using rule 158 (type_qualifier) DOUBLE reduce using rule 158 (type_qualifier) VOID reduce using rule 158 (type_qualifier) COMPLEX reduce using rule 158 (type_qualifier) IMAGINARY reduce using rule 158 (type_qualifier) STRUCT reduce using rule 158 (type_qualifier) UNION reduce using rule 158 (type_qualifier) ENUM reduce using rule 158 (type_qualifier) ALIGNAS reduce using rule 158 (type_qualifier) ALIGNOF reduce using rule 158 (type_qualifier) ATOMIC reduce using rule 158 (type_qualifier) GENERIC reduce using rule 158 (type_qualifier) NORETURN reduce using rule 158 (type_qualifier) THREAD_LOCAL reduce using rule 158 (type_qualifier) '(' reduce using rule 158 (type_qualifier) ')' reduce using rule 158 (type_qualifier) ',' reduce using rule 158 (type_qualifier) ':' reduce using rule 158 (type_qualifier) '[' reduce using rule 158 (type_qualifier) ']' reduce using rule 158 (type_qualifier) '&' reduce using rule 158 (type_qualifier) '*' reduce using rule 158 (type_qualifier) '+' reduce using rule 158 (type_qualifier) '-' reduce using rule 158 (type_qualifier) '~' reduce using rule 158 (type_qualifier) '!' reduce using rule 158 (type_qualifier) ';' reduce using rule 158 (type_qualifier)
159 type_qualifier → RESTRICT • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', ']', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 159 (type_qualifier) I_CONSTANT reduce using rule 159 (type_qualifier) F_CONSTANT reduce using rule 159 (type_qualifier) STRING_LITERAL reduce using rule 159 (type_qualifier) FUNC_NAME reduce using rule 159 (type_qualifier) SIZEOF reduce using rule 159 (type_qualifier) INC_OP reduce using rule 159 (type_qualifier) DEC_OP reduce using rule 159 (type_qualifier) TYPEDEF_NAME reduce using rule 159 (type_qualifier) ENUMERATION_CONSTANT reduce using rule 159 (type_qualifier) TYPEDEF reduce using rule 159 (type_qualifier) EXTERN reduce using rule 159 (type_qualifier) STATIC reduce using rule 159 (type_qualifier) AUTO reduce using rule 159 (type_qualifier) REGISTER reduce using rule 159 (type_qualifier) INLINE reduce using rule 159 (type_qualifier) CONST reduce using rule 159 (type_qualifier) RESTRICT reduce using rule 159 (type_qualifier) VOLATILE reduce using rule 159 (type_qualifier) BOOL reduce using rule 159 (type_qualifier) CHAR reduce using rule 159 (type_qualifier) SHORT reduce using rule 159 (type_qualifier) INT reduce using rule 159 (type_qualifier) LONG reduce using rule 159 (type_qualifier) SIGNED reduce using rule 159 (type_qualifier) UNSIGNED reduce using rule 159 (type_qualifier) FLOAT reduce using rule 159 (type_qualifier) DOUBLE reduce using rule 159 (type_qualifier) VOID reduce using rule 159 (type_qualifier) COMPLEX reduce using rule 159 (type_qualifier) IMAGINARY reduce using rule 159 (type_qualifier) STRUCT reduce using rule 159 (type_qualifier) UNION reduce using rule 159 (type_qualifier) ENUM reduce using rule 159 (type_qualifier) ALIGNAS reduce using rule 159 (type_qualifier) ALIGNOF reduce using rule 159 (type_qualifier) ATOMIC reduce using rule 159 (type_qualifier) GENERIC reduce using rule 159 (type_qualifier) NORETURN reduce using rule 159 (type_qualifier) THREAD_LOCAL reduce using rule 159 (type_qualifier) '(' reduce using rule 159 (type_qualifier) ')' reduce using rule 159 (type_qualifier) ',' reduce using rule 159 (type_qualifier) ':' reduce using rule 159 (type_qualifier) '[' reduce using rule 159 (type_qualifier) ']' reduce using rule 159 (type_qualifier) '&' reduce using rule 159 (type_qualifier) '*' reduce using rule 159 (type_qualifier) '+' reduce using rule 159 (type_qualifier) '-' reduce using rule 159 (type_qualifier) '~' reduce using rule 159 (type_qualifier) '!' reduce using rule 159 (type_qualifier) ';' reduce using rule 159 (type_qualifier)
160 type_qualifier → VOLATILE • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', ']', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 160 (type_qualifier) I_CONSTANT reduce using rule 160 (type_qualifier) F_CONSTANT reduce using rule 160 (type_qualifier) STRING_LITERAL reduce using rule 160 (type_qualifier) FUNC_NAME reduce using rule 160 (type_qualifier) SIZEOF reduce using rule 160 (type_qualifier) INC_OP reduce using rule 160 (type_qualifier) DEC_OP reduce using rule 160 (type_qualifier) TYPEDEF_NAME reduce using rule 160 (type_qualifier) ENUMERATION_CONSTANT reduce using rule 160 (type_qualifier) TYPEDEF reduce using rule 160 (type_qualifier) EXTERN reduce using rule 160 (type_qualifier) STATIC reduce using rule 160 (type_qualifier) AUTO reduce using rule 160 (type_qualifier) REGISTER reduce using rule 160 (type_qualifier) INLINE reduce using rule 160 (type_qualifier) CONST reduce using rule 160 (type_qualifier) RESTRICT reduce using rule 160 (type_qualifier) VOLATILE reduce using rule 160 (type_qualifier) BOOL reduce using rule 160 (type_qualifier) CHAR reduce using rule 160 (type_qualifier) SHORT reduce using rule 160 (type_qualifier) INT reduce using rule 160 (type_qualifier) LONG reduce using rule 160 (type_qualifier) SIGNED reduce using rule 160 (type_qualifier) UNSIGNED reduce using rule 160 (type_qualifier) FLOAT reduce using rule 160 (type_qualifier) DOUBLE reduce using rule 160 (type_qualifier) VOID reduce using rule 160 (type_qualifier) COMPLEX reduce using rule 160 (type_qualifier) IMAGINARY reduce using rule 160 (type_qualifier) STRUCT reduce using rule 160 (type_qualifier) UNION reduce using rule 160 (type_qualifier) ENUM reduce using rule 160 (type_qualifier) ALIGNAS reduce using rule 160 (type_qualifier) ALIGNOF reduce using rule 160 (type_qualifier) ATOMIC reduce using rule 160 (type_qualifier) GENERIC reduce using rule 160 (type_qualifier) NORETURN reduce using rule 160 (type_qualifier) THREAD_LOCAL reduce using rule 160 (type_qualifier) '(' reduce using rule 160 (type_qualifier) ')' reduce using rule 160 (type_qualifier) ',' reduce using rule 160 (type_qualifier) ':' reduce using rule 160 (type_qualifier) '[' reduce using rule 160 (type_qualifier) ']' reduce using rule 160 (type_qualifier) '&' reduce using rule 160 (type_qualifier) '*' reduce using rule 160 (type_qualifier) '+' reduce using rule 160 (type_qualifier) '-' reduce using rule 160 (type_qualifier) '~' reduce using rule 160 (type_qualifier) '!' reduce using rule 160 (type_qualifier) ';' reduce using rule 160 (type_qualifier)
122 type_specifier → BOOL • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 122 (type_specifier) TYPEDEF_NAME reduce using rule 122 (type_specifier) TYPEDEF reduce using rule 122 (type_specifier) EXTERN reduce using rule 122 (type_specifier) STATIC reduce using rule 122 (type_specifier) AUTO reduce using rule 122 (type_specifier) REGISTER reduce using rule 122 (type_specifier) INLINE reduce using rule 122 (type_specifier) CONST reduce using rule 122 (type_specifier) RESTRICT reduce using rule 122 (type_specifier) VOLATILE reduce using rule 122 (type_specifier) BOOL reduce using rule 122 (type_specifier) CHAR reduce using rule 122 (type_specifier) SHORT reduce using rule 122 (type_specifier) INT reduce using rule 122 (type_specifier) LONG reduce using rule 122 (type_specifier) SIGNED reduce using rule 122 (type_specifier) UNSIGNED reduce using rule 122 (type_specifier) FLOAT reduce using rule 122 (type_specifier) DOUBLE reduce using rule 122 (type_specifier) VOID reduce using rule 122 (type_specifier) COMPLEX reduce using rule 122 (type_specifier) IMAGINARY reduce using rule 122 (type_specifier) STRUCT reduce using rule 122 (type_specifier) UNION reduce using rule 122 (type_specifier) ENUM reduce using rule 122 (type_specifier) ALIGNAS reduce using rule 122 (type_specifier) ATOMIC reduce using rule 122 (type_specifier) NORETURN reduce using rule 122 (type_specifier) THREAD_LOCAL reduce using rule 122 (type_specifier) '(' reduce using rule 122 (type_specifier) ')' reduce using rule 122 (type_specifier) ',' reduce using rule 122 (type_specifier) ':' reduce using rule 122 (type_specifier) '[' reduce using rule 122 (type_specifier) '*' reduce using rule 122 (type_specifier) ';' reduce using rule 122 (type_specifier)
114 type_specifier → CHAR • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 114 (type_specifier) TYPEDEF_NAME reduce using rule 114 (type_specifier) TYPEDEF reduce using rule 114 (type_specifier) EXTERN reduce using rule 114 (type_specifier) STATIC reduce using rule 114 (type_specifier) AUTO reduce using rule 114 (type_specifier) REGISTER reduce using rule 114 (type_specifier) INLINE reduce using rule 114 (type_specifier) CONST reduce using rule 114 (type_specifier) RESTRICT reduce using rule 114 (type_specifier) VOLATILE reduce using rule 114 (type_specifier) BOOL reduce using rule 114 (type_specifier) CHAR reduce using rule 114 (type_specifier) SHORT reduce using rule 114 (type_specifier) INT reduce using rule 114 (type_specifier) LONG reduce using rule 114 (type_specifier) SIGNED reduce using rule 114 (type_specifier) UNSIGNED reduce using rule 114 (type_specifier) FLOAT reduce using rule 114 (type_specifier) DOUBLE reduce using rule 114 (type_specifier) VOID reduce using rule 114 (type_specifier) COMPLEX reduce using rule 114 (type_specifier) IMAGINARY reduce using rule 114 (type_specifier) STRUCT reduce using rule 114 (type_specifier) UNION reduce using rule 114 (type_specifier) ENUM reduce using rule 114 (type_specifier) ALIGNAS reduce using rule 114 (type_specifier) ATOMIC reduce using rule 114 (type_specifier) NORETURN reduce using rule 114 (type_specifier) THREAD_LOCAL reduce using rule 114 (type_specifier) '(' reduce using rule 114 (type_specifier) ')' reduce using rule 114 (type_specifier) ',' reduce using rule 114 (type_specifier) ':' reduce using rule 114 (type_specifier) '[' reduce using rule 114 (type_specifier) '*' reduce using rule 114 (type_specifier) ';' reduce using rule 114 (type_specifier)
115 type_specifier → SHORT • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 115 (type_specifier) TYPEDEF_NAME reduce using rule 115 (type_specifier) TYPEDEF reduce using rule 115 (type_specifier) EXTERN reduce using rule 115 (type_specifier) STATIC reduce using rule 115 (type_specifier) AUTO reduce using rule 115 (type_specifier) REGISTER reduce using rule 115 (type_specifier) INLINE reduce using rule 115 (type_specifier) CONST reduce using rule 115 (type_specifier) RESTRICT reduce using rule 115 (type_specifier) VOLATILE reduce using rule 115 (type_specifier) BOOL reduce using rule 115 (type_specifier) CHAR reduce using rule 115 (type_specifier) SHORT reduce using rule 115 (type_specifier) INT reduce using rule 115 (type_specifier) LONG reduce using rule 115 (type_specifier) SIGNED reduce using rule 115 (type_specifier) UNSIGNED reduce using rule 115 (type_specifier) FLOAT reduce using rule 115 (type_specifier) DOUBLE reduce using rule 115 (type_specifier) VOID reduce using rule 115 (type_specifier) COMPLEX reduce using rule 115 (type_specifier) IMAGINARY reduce using rule 115 (type_specifier) STRUCT reduce using rule 115 (type_specifier) UNION reduce using rule 115 (type_specifier) ENUM reduce using rule 115 (type_specifier) ALIGNAS reduce using rule 115 (type_specifier) ATOMIC reduce using rule 115 (type_specifier) NORETURN reduce using rule 115 (type_specifier) THREAD_LOCAL reduce using rule 115 (type_specifier) '(' reduce using rule 115 (type_specifier) ')' reduce using rule 115 (type_specifier) ',' reduce using rule 115 (type_specifier) ':' reduce using rule 115 (type_specifier) '[' reduce using rule 115 (type_specifier) '*' reduce using rule 115 (type_specifier) ';' reduce using rule 115 (type_specifier)
116 type_specifier → INT • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 116 (type_specifier) TYPEDEF_NAME reduce using rule 116 (type_specifier) TYPEDEF reduce using rule 116 (type_specifier) EXTERN reduce using rule 116 (type_specifier) STATIC reduce using rule 116 (type_specifier) AUTO reduce using rule 116 (type_specifier) REGISTER reduce using rule 116 (type_specifier) INLINE reduce using rule 116 (type_specifier) CONST reduce using rule 116 (type_specifier) RESTRICT reduce using rule 116 (type_specifier) VOLATILE reduce using rule 116 (type_specifier) BOOL reduce using rule 116 (type_specifier) CHAR reduce using rule 116 (type_specifier) SHORT reduce using rule 116 (type_specifier) INT reduce using rule 116 (type_specifier) LONG reduce using rule 116 (type_specifier) SIGNED reduce using rule 116 (type_specifier) UNSIGNED reduce using rule 116 (type_specifier) FLOAT reduce using rule 116 (type_specifier) DOUBLE reduce using rule 116 (type_specifier) VOID reduce using rule 116 (type_specifier) COMPLEX reduce using rule 116 (type_specifier) IMAGINARY reduce using rule 116 (type_specifier) STRUCT reduce using rule 116 (type_specifier) UNION reduce using rule 116 (type_specifier) ENUM reduce using rule 116 (type_specifier) ALIGNAS reduce using rule 116 (type_specifier) ATOMIC reduce using rule 116 (type_specifier) NORETURN reduce using rule 116 (type_specifier) THREAD_LOCAL reduce using rule 116 (type_specifier) '(' reduce using rule 116 (type_specifier) ')' reduce using rule 116 (type_specifier) ',' reduce using rule 116 (type_specifier) ':' reduce using rule 116 (type_specifier) '[' reduce using rule 116 (type_specifier) '*' reduce using rule 116 (type_specifier) ';' reduce using rule 116 (type_specifier)
117 type_specifier → LONG • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 117 (type_specifier) TYPEDEF_NAME reduce using rule 117 (type_specifier) TYPEDEF reduce using rule 117 (type_specifier) EXTERN reduce using rule 117 (type_specifier) STATIC reduce using rule 117 (type_specifier) AUTO reduce using rule 117 (type_specifier) REGISTER reduce using rule 117 (type_specifier) INLINE reduce using rule 117 (type_specifier) CONST reduce using rule 117 (type_specifier) RESTRICT reduce using rule 117 (type_specifier) VOLATILE reduce using rule 117 (type_specifier) BOOL reduce using rule 117 (type_specifier) CHAR reduce using rule 117 (type_specifier) SHORT reduce using rule 117 (type_specifier) INT reduce using rule 117 (type_specifier) LONG reduce using rule 117 (type_specifier) SIGNED reduce using rule 117 (type_specifier) UNSIGNED reduce using rule 117 (type_specifier) FLOAT reduce using rule 117 (type_specifier) DOUBLE reduce using rule 117 (type_specifier) VOID reduce using rule 117 (type_specifier) COMPLEX reduce using rule 117 (type_specifier) IMAGINARY reduce using rule 117 (type_specifier) STRUCT reduce using rule 117 (type_specifier) UNION reduce using rule 117 (type_specifier) ENUM reduce using rule 117 (type_specifier) ALIGNAS reduce using rule 117 (type_specifier) ATOMIC reduce using rule 117 (type_specifier) NORETURN reduce using rule 117 (type_specifier) THREAD_LOCAL reduce using rule 117 (type_specifier) '(' reduce using rule 117 (type_specifier) ')' reduce using rule 117 (type_specifier) ',' reduce using rule 117 (type_specifier) ':' reduce using rule 117 (type_specifier) '[' reduce using rule 117 (type_specifier) '*' reduce using rule 117 (type_specifier) ';' reduce using rule 117 (type_specifier)
120 type_specifier → SIGNED • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 120 (type_specifier) TYPEDEF_NAME reduce using rule 120 (type_specifier) TYPEDEF reduce using rule 120 (type_specifier) EXTERN reduce using rule 120 (type_specifier) STATIC reduce using rule 120 (type_specifier) AUTO reduce using rule 120 (type_specifier) REGISTER reduce using rule 120 (type_specifier) INLINE reduce using rule 120 (type_specifier) CONST reduce using rule 120 (type_specifier) RESTRICT reduce using rule 120 (type_specifier) VOLATILE reduce using rule 120 (type_specifier) BOOL reduce using rule 120 (type_specifier) CHAR reduce using rule 120 (type_specifier) SHORT reduce using rule 120 (type_specifier) INT reduce using rule 120 (type_specifier) LONG reduce using rule 120 (type_specifier) SIGNED reduce using rule 120 (type_specifier) UNSIGNED reduce using rule 120 (type_specifier) FLOAT reduce using rule 120 (type_specifier) DOUBLE reduce using rule 120 (type_specifier) VOID reduce using rule 120 (type_specifier) COMPLEX reduce using rule 120 (type_specifier) IMAGINARY reduce using rule 120 (type_specifier) STRUCT reduce using rule 120 (type_specifier) UNION reduce using rule 120 (type_specifier) ENUM reduce using rule 120 (type_specifier) ALIGNAS reduce using rule 120 (type_specifier) ATOMIC reduce using rule 120 (type_specifier) NORETURN reduce using rule 120 (type_specifier) THREAD_LOCAL reduce using rule 120 (type_specifier) '(' reduce using rule 120 (type_specifier) ')' reduce using rule 120 (type_specifier) ',' reduce using rule 120 (type_specifier) ':' reduce using rule 120 (type_specifier) '[' reduce using rule 120 (type_specifier) '*' reduce using rule 120 (type_specifier) ';' reduce using rule 120 (type_specifier)
121 type_specifier → UNSIGNED • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 121 (type_specifier) TYPEDEF_NAME reduce using rule 121 (type_specifier) TYPEDEF reduce using rule 121 (type_specifier) EXTERN reduce using rule 121 (type_specifier) STATIC reduce using rule 121 (type_specifier) AUTO reduce using rule 121 (type_specifier) REGISTER reduce using rule 121 (type_specifier) INLINE reduce using rule 121 (type_specifier) CONST reduce using rule 121 (type_specifier) RESTRICT reduce using rule 121 (type_specifier) VOLATILE reduce using rule 121 (type_specifier) BOOL reduce using rule 121 (type_specifier) CHAR reduce using rule 121 (type_specifier) SHORT reduce using rule 121 (type_specifier) INT reduce using rule 121 (type_specifier) LONG reduce using rule 121 (type_specifier) SIGNED reduce using rule 121 (type_specifier) UNSIGNED reduce using rule 121 (type_specifier) FLOAT reduce using rule 121 (type_specifier) DOUBLE reduce using rule 121 (type_specifier) VOID reduce using rule 121 (type_specifier) COMPLEX reduce using rule 121 (type_specifier) IMAGINARY reduce using rule 121 (type_specifier) STRUCT reduce using rule 121 (type_specifier) UNION reduce using rule 121 (type_specifier) ENUM reduce using rule 121 (type_specifier) ALIGNAS reduce using rule 121 (type_specifier) ATOMIC reduce using rule 121 (type_specifier) NORETURN reduce using rule 121 (type_specifier) THREAD_LOCAL reduce using rule 121 (type_specifier) '(' reduce using rule 121 (type_specifier) ')' reduce using rule 121 (type_specifier) ',' reduce using rule 121 (type_specifier) ':' reduce using rule 121 (type_specifier) '[' reduce using rule 121 (type_specifier) '*' reduce using rule 121 (type_specifier) ';' reduce using rule 121 (type_specifier)
118 type_specifier → FLOAT • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 118 (type_specifier) TYPEDEF_NAME reduce using rule 118 (type_specifier) TYPEDEF reduce using rule 118 (type_specifier) EXTERN reduce using rule 118 (type_specifier) STATIC reduce using rule 118 (type_specifier) AUTO reduce using rule 118 (type_specifier) REGISTER reduce using rule 118 (type_specifier) INLINE reduce using rule 118 (type_specifier) CONST reduce using rule 118 (type_specifier) RESTRICT reduce using rule 118 (type_specifier) VOLATILE reduce using rule 118 (type_specifier) BOOL reduce using rule 118 (type_specifier) CHAR reduce using rule 118 (type_specifier) SHORT reduce using rule 118 (type_specifier) INT reduce using rule 118 (type_specifier) LONG reduce using rule 118 (type_specifier) SIGNED reduce using rule 118 (type_specifier) UNSIGNED reduce using rule 118 (type_specifier) FLOAT reduce using rule 118 (type_specifier) DOUBLE reduce using rule 118 (type_specifier) VOID reduce using rule 118 (type_specifier) COMPLEX reduce using rule 118 (type_specifier) IMAGINARY reduce using rule 118 (type_specifier) STRUCT reduce using rule 118 (type_specifier) UNION reduce using rule 118 (type_specifier) ENUM reduce using rule 118 (type_specifier) ALIGNAS reduce using rule 118 (type_specifier) ATOMIC reduce using rule 118 (type_specifier) NORETURN reduce using rule 118 (type_specifier) THREAD_LOCAL reduce using rule 118 (type_specifier) '(' reduce using rule 118 (type_specifier) ')' reduce using rule 118 (type_specifier) ',' reduce using rule 118 (type_specifier) ':' reduce using rule 118 (type_specifier) '[' reduce using rule 118 (type_specifier) '*' reduce using rule 118 (type_specifier) ';' reduce using rule 118 (type_specifier)
119 type_specifier → DOUBLE • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 119 (type_specifier) TYPEDEF_NAME reduce using rule 119 (type_specifier) TYPEDEF reduce using rule 119 (type_specifier) EXTERN reduce using rule 119 (type_specifier) STATIC reduce using rule 119 (type_specifier) AUTO reduce using rule 119 (type_specifier) REGISTER reduce using rule 119 (type_specifier) INLINE reduce using rule 119 (type_specifier) CONST reduce using rule 119 (type_specifier) RESTRICT reduce using rule 119 (type_specifier) VOLATILE reduce using rule 119 (type_specifier) BOOL reduce using rule 119 (type_specifier) CHAR reduce using rule 119 (type_specifier) SHORT reduce using rule 119 (type_specifier) INT reduce using rule 119 (type_specifier) LONG reduce using rule 119 (type_specifier) SIGNED reduce using rule 119 (type_specifier) UNSIGNED reduce using rule 119 (type_specifier) FLOAT reduce using rule 119 (type_specifier) DOUBLE reduce using rule 119 (type_specifier) VOID reduce using rule 119 (type_specifier) COMPLEX reduce using rule 119 (type_specifier) IMAGINARY reduce using rule 119 (type_specifier) STRUCT reduce using rule 119 (type_specifier) UNION reduce using rule 119 (type_specifier) ENUM reduce using rule 119 (type_specifier) ALIGNAS reduce using rule 119 (type_specifier) ATOMIC reduce using rule 119 (type_specifier) NORETURN reduce using rule 119 (type_specifier) THREAD_LOCAL reduce using rule 119 (type_specifier) '(' reduce using rule 119 (type_specifier) ')' reduce using rule 119 (type_specifier) ',' reduce using rule 119 (type_specifier) ':' reduce using rule 119 (type_specifier) '[' reduce using rule 119 (type_specifier) '*' reduce using rule 119 (type_specifier) ';' reduce using rule 119 (type_specifier)
113 type_specifier → VOID • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 113 (type_specifier) TYPEDEF_NAME reduce using rule 113 (type_specifier) TYPEDEF reduce using rule 113 (type_specifier) EXTERN reduce using rule 113 (type_specifier) STATIC reduce using rule 113 (type_specifier) AUTO reduce using rule 113 (type_specifier) REGISTER reduce using rule 113 (type_specifier) INLINE reduce using rule 113 (type_specifier) CONST reduce using rule 113 (type_specifier) RESTRICT reduce using rule 113 (type_specifier) VOLATILE reduce using rule 113 (type_specifier) BOOL reduce using rule 113 (type_specifier) CHAR reduce using rule 113 (type_specifier) SHORT reduce using rule 113 (type_specifier) INT reduce using rule 113 (type_specifier) LONG reduce using rule 113 (type_specifier) SIGNED reduce using rule 113 (type_specifier) UNSIGNED reduce using rule 113 (type_specifier) FLOAT reduce using rule 113 (type_specifier) DOUBLE reduce using rule 113 (type_specifier) VOID reduce using rule 113 (type_specifier) COMPLEX reduce using rule 113 (type_specifier) IMAGINARY reduce using rule 113 (type_specifier) STRUCT reduce using rule 113 (type_specifier) UNION reduce using rule 113 (type_specifier) ENUM reduce using rule 113 (type_specifier) ALIGNAS reduce using rule 113 (type_specifier) ATOMIC reduce using rule 113 (type_specifier) NORETURN reduce using rule 113 (type_specifier) THREAD_LOCAL reduce using rule 113 (type_specifier) '(' reduce using rule 113 (type_specifier) ')' reduce using rule 113 (type_specifier) ',' reduce using rule 113 (type_specifier) ':' reduce using rule 113 (type_specifier) '[' reduce using rule 113 (type_specifier) '*' reduce using rule 113 (type_specifier) ';' reduce using rule 113 (type_specifier)
123 type_specifier → COMPLEX • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 123 (type_specifier) TYPEDEF_NAME reduce using rule 123 (type_specifier) TYPEDEF reduce using rule 123 (type_specifier) EXTERN reduce using rule 123 (type_specifier) STATIC reduce using rule 123 (type_specifier) AUTO reduce using rule 123 (type_specifier) REGISTER reduce using rule 123 (type_specifier) INLINE reduce using rule 123 (type_specifier) CONST reduce using rule 123 (type_specifier) RESTRICT reduce using rule 123 (type_specifier) VOLATILE reduce using rule 123 (type_specifier) BOOL reduce using rule 123 (type_specifier) CHAR reduce using rule 123 (type_specifier) SHORT reduce using rule 123 (type_specifier) INT reduce using rule 123 (type_specifier) LONG reduce using rule 123 (type_specifier) SIGNED reduce using rule 123 (type_specifier) UNSIGNED reduce using rule 123 (type_specifier) FLOAT reduce using rule 123 (type_specifier) DOUBLE reduce using rule 123 (type_specifier) VOID reduce using rule 123 (type_specifier) COMPLEX reduce using rule 123 (type_specifier) IMAGINARY reduce using rule 123 (type_specifier) STRUCT reduce using rule 123 (type_specifier) UNION reduce using rule 123 (type_specifier) ENUM reduce using rule 123 (type_specifier) ALIGNAS reduce using rule 123 (type_specifier) ATOMIC reduce using rule 123 (type_specifier) NORETURN reduce using rule 123 (type_specifier) THREAD_LOCAL reduce using rule 123 (type_specifier) '(' reduce using rule 123 (type_specifier) ')' reduce using rule 123 (type_specifier) ',' reduce using rule 123 (type_specifier) ':' reduce using rule 123 (type_specifier) '[' reduce using rule 123 (type_specifier) '*' reduce using rule 123 (type_specifier) ';' reduce using rule 123 (type_specifier)
124 type_specifier → IMAGINARY • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 124 (type_specifier) TYPEDEF_NAME reduce using rule 124 (type_specifier) TYPEDEF reduce using rule 124 (type_specifier) EXTERN reduce using rule 124 (type_specifier) STATIC reduce using rule 124 (type_specifier) AUTO reduce using rule 124 (type_specifier) REGISTER reduce using rule 124 (type_specifier) INLINE reduce using rule 124 (type_specifier) CONST reduce using rule 124 (type_specifier) RESTRICT reduce using rule 124 (type_specifier) VOLATILE reduce using rule 124 (type_specifier) BOOL reduce using rule 124 (type_specifier) CHAR reduce using rule 124 (type_specifier) SHORT reduce using rule 124 (type_specifier) INT reduce using rule 124 (type_specifier) LONG reduce using rule 124 (type_specifier) SIGNED reduce using rule 124 (type_specifier) UNSIGNED reduce using rule 124 (type_specifier) FLOAT reduce using rule 124 (type_specifier) DOUBLE reduce using rule 124 (type_specifier) VOID reduce using rule 124 (type_specifier) COMPLEX reduce using rule 124 (type_specifier) IMAGINARY reduce using rule 124 (type_specifier) STRUCT reduce using rule 124 (type_specifier) UNION reduce using rule 124 (type_specifier) ENUM reduce using rule 124 (type_specifier) ALIGNAS reduce using rule 124 (type_specifier) ATOMIC reduce using rule 124 (type_specifier) NORETURN reduce using rule 124 (type_specifier) THREAD_LOCAL reduce using rule 124 (type_specifier) '(' reduce using rule 124 (type_specifier) ')' reduce using rule 124 (type_specifier) ',' reduce using rule 124 (type_specifier) ':' reduce using rule 124 (type_specifier) '[' reduce using rule 124 (type_specifier) '*' reduce using rule 124 (type_specifier) ';' reduce using rule 124 (type_specifier)
132 struct_or_union → STRUCT • [IDENTIFIER, '{'] IDENTIFIER reduce using rule 132 (struct_or_union) '{' reduce using rule 132 (struct_or_union)
133 struct_or_union → UNION • [IDENTIFIER, '{'] IDENTIFIER reduce using rule 133 (struct_or_union) '{' reduce using rule 133 (struct_or_union)
148 enum_specifier → ENUM • '{' enumerator_list '}' 149 | ENUM • '{' enumerator_list ',' '}' 150 | ENUM • IDENTIFIER '{' enumerator_list '}' 151 | ENUM • IDENTIFIER '{' enumerator_list ',' '}' 152 | ENUM • IDENTIFIER IDENTIFIER shift, and go to state 46 '{' shift, and go to state 47
164 alignment_specifier → ALIGNAS • '(' type_name ')' 165 | ALIGNAS • '(' constant_expression ')' '(' shift, and go to state 48
157 atomic_type_specifier → ATOMIC • '(' type_name ')' 161 type_qualifier → ATOMIC • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] '(' shift, and go to state 49 IDENTIFIER reduce using rule 161 (type_qualifier) TYPEDEF_NAME reduce using rule 161 (type_qualifier) TYPEDEF reduce using rule 161 (type_qualifier) EXTERN reduce using rule 161 (type_qualifier) STATIC reduce using rule 161 (type_qualifier) AUTO reduce using rule 161 (type_qualifier) REGISTER reduce using rule 161 (type_qualifier) INLINE reduce using rule 161 (type_qualifier) CONST reduce using rule 161 (type_qualifier) RESTRICT reduce using rule 161 (type_qualifier) VOLATILE reduce using rule 161 (type_qualifier) BOOL reduce using rule 161 (type_qualifier) CHAR reduce using rule 161 (type_qualifier) SHORT reduce using rule 161 (type_qualifier) INT reduce using rule 161 (type_qualifier) LONG reduce using rule 161 (type_qualifier) SIGNED reduce using rule 161 (type_qualifier) UNSIGNED reduce using rule 161 (type_qualifier) FLOAT reduce using rule 161 (type_qualifier) DOUBLE reduce using rule 161 (type_qualifier) VOID reduce using rule 161 (type_qualifier) COMPLEX reduce using rule 161 (type_qualifier) IMAGINARY reduce using rule 161 (type_qualifier) STRUCT reduce using rule 161 (type_qualifier) UNION reduce using rule 161 (type_qualifier) ENUM reduce using rule 161 (type_qualifier) ALIGNAS reduce using rule 161 (type_qualifier) ATOMIC reduce using rule 161 (type_qualifier) NORETURN reduce using rule 161 (type_qualifier) THREAD_LOCAL reduce using rule 161 (type_qualifier) '(' [reduce using rule 161 (type_qualifier)] ')' reduce using rule 161 (type_qualifier) ',' reduce using rule 161 (type_qualifier) ':' reduce using rule 161 (type_qualifier) '[' reduce using rule 161 (type_qualifier) '*' reduce using rule 161 (type_qualifier) ';' reduce using rule 161 (type_qualifier)
163 function_specifier → NORETURN • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 163 (function_specifier) TYPEDEF_NAME reduce using rule 163 (function_specifier) TYPEDEF reduce using rule 163 (function_specifier) EXTERN reduce using rule 163 (function_specifier) STATIC reduce using rule 163 (function_specifier) AUTO reduce using rule 163 (function_specifier) REGISTER reduce using rule 163 (function_specifier) INLINE reduce using rule 163 (function_specifier) CONST reduce using rule 163 (function_specifier) RESTRICT reduce using rule 163 (function_specifier) VOLATILE reduce using rule 163 (function_specifier) BOOL reduce using rule 163 (function_specifier) CHAR reduce using rule 163 (function_specifier) SHORT reduce using rule 163 (function_specifier) INT reduce using rule 163 (function_specifier) LONG reduce using rule 163 (function_specifier) SIGNED reduce using rule 163 (function_specifier) UNSIGNED reduce using rule 163 (function_specifier) FLOAT reduce using rule 163 (function_specifier) DOUBLE reduce using rule 163 (function_specifier) VOID reduce using rule 163 (function_specifier) COMPLEX reduce using rule 163 (function_specifier) IMAGINARY reduce using rule 163 (function_specifier) STRUCT reduce using rule 163 (function_specifier) UNION reduce using rule 163 (function_specifier) ENUM reduce using rule 163 (function_specifier) ALIGNAS reduce using rule 163 (function_specifier) ATOMIC reduce using rule 163 (function_specifier) NORETURN reduce using rule 163 (function_specifier) THREAD_LOCAL reduce using rule 163 (function_specifier) '(' reduce using rule 163 (function_specifier) ')' reduce using rule 163 (function_specifier) ',' reduce using rule 163 (function_specifier) '[' reduce using rule 163 (function_specifier) '*' reduce using rule 163 (function_specifier) ';' reduce using rule 163 (function_specifier)
235 static_assert_declaration → STATIC_ASSERT • '(' constant_expression ',' STRING_LITERAL ')' ';' '(' shift, and go to state 50
110 storage_class_specifier → THREAD_LOCAL • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 110 (storage_class_specifier) TYPEDEF_NAME reduce using rule 110 (storage_class_specifier) TYPEDEF reduce using rule 110 (storage_class_specifier) EXTERN reduce using rule 110 (storage_class_specifier) STATIC reduce using rule 110 (storage_class_specifier) AUTO reduce using rule 110 (storage_class_specifier) REGISTER reduce using rule 110 (storage_class_specifier) INLINE reduce using rule 110 (storage_class_specifier) CONST reduce using rule 110 (storage_class_specifier) RESTRICT reduce using rule 110 (storage_class_specifier) VOLATILE reduce using rule 110 (storage_class_specifier) BOOL reduce using rule 110 (storage_class_specifier) CHAR reduce using rule 110 (storage_class_specifier) SHORT reduce using rule 110 (storage_class_specifier) INT reduce using rule 110 (storage_class_specifier) LONG reduce using rule 110 (storage_class_specifier) SIGNED reduce using rule 110 (storage_class_specifier) UNSIGNED reduce using rule 110 (storage_class_specifier) FLOAT reduce using rule 110 (storage_class_specifier) DOUBLE reduce using rule 110 (storage_class_specifier) VOID reduce using rule 110 (storage_class_specifier) COMPLEX reduce using rule 110 (storage_class_specifier) IMAGINARY reduce using rule 110 (storage_class_specifier) STRUCT reduce using rule 110 (storage_class_specifier) UNION reduce using rule 110 (storage_class_specifier) ENUM reduce using rule 110 (storage_class_specifier) ALIGNAS reduce using rule 110 (storage_class_specifier) ATOMIC reduce using rule 110 (storage_class_specifier) NORETURN reduce using rule 110 (storage_class_specifier) THREAD_LOCAL reduce using rule 110 (storage_class_specifier) '(' reduce using rule 110 (storage_class_specifier) ')' reduce using rule 110 (storage_class_specifier) ',' reduce using rule 110 (storage_class_specifier) '[' reduce using rule 110 (storage_class_specifier) '*' reduce using rule 110 (storage_class_specifier) ';' reduce using rule 110 (storage_class_specifier)
270 external_declaration → declaration • [$end, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL] $end reduce using rule 270 (external_declaration) TYPEDEF_NAME reduce using rule 270 (external_declaration) TYPEDEF reduce using rule 270 (external_declaration) EXTERN reduce using rule 270 (external_declaration) STATIC reduce using rule 270 (external_declaration) AUTO reduce using rule 270 (external_declaration) REGISTER reduce using rule 270 (external_declaration) INLINE reduce using rule 270 (external_declaration) CONST reduce using rule 270 (external_declaration) RESTRICT reduce using rule 270 (external_declaration) VOLATILE reduce using rule 270 (external_declaration) BOOL reduce using rule 270 (external_declaration) CHAR reduce using rule 270 (external_declaration) SHORT reduce using rule 270 (external_declaration) INT reduce using rule 270 (external_declaration) LONG reduce using rule 270 (external_declaration) SIGNED reduce using rule 270 (external_declaration) UNSIGNED reduce using rule 270 (external_declaration) FLOAT reduce using rule 270 (external_declaration) DOUBLE reduce using rule 270 (external_declaration) VOID reduce using rule 270 (external_declaration) COMPLEX reduce using rule 270 (external_declaration) IMAGINARY reduce using rule 270 (external_declaration) STRUCT reduce using rule 270 (external_declaration) UNION reduce using rule 270 (external_declaration) ENUM reduce using rule 270 (external_declaration) ALIGNAS reduce using rule 270 (external_declaration) ATOMIC reduce using rule 270 (external_declaration) NORETURN reduce using rule 270 (external_declaration) STATIC_ASSERT reduce using rule 270 (external_declaration) THREAD_LOCAL reduce using rule 270 (external_declaration)
90 declaration → declaration_specifiers • ';' 91 | declaration_specifiers • init_declarator_list ';' 103 init_declarator_list → • init_declarator 104 | • init_declarator_list ',' init_declarator 105 init_declarator → • declarator '=' initializer 106 | • declarator 166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' 271 function_definition → declaration_specifiers • declarator declaration_list compound_statement 272 | declaration_specifiers • declarator compound_statement IDENTIFIER shift, and go to state 51 '(' shift, and go to state 52 '*' shift, and go to state 53 ';' shift, and go to state 54 init_declarator_list go to state 55 init_declarator go to state 56 declarator go to state 57 direct_declarator go to state 58 pointer go to state 59
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 93 | storage_class_specifier • declaration_specifiers 94 | • storage_class_specifier 94 | storage_class_specifier • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 IDENTIFIER reduce using rule 94 (declaration_specifiers) '(' reduce using rule 94 (declaration_specifiers) ')' reduce using rule 94 (declaration_specifiers) ',' reduce using rule 94 (declaration_specifiers) '[' reduce using rule 94 (declaration_specifiers) '*' reduce using rule 94 (declaration_specifiers) ';' reduce using rule 94 (declaration_specifiers) declaration_specifiers go to state 60 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 95 | type_specifier • declaration_specifiers 96 | • type_specifier 96 | type_specifier • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 IDENTIFIER reduce using rule 96 (declaration_specifiers) '(' reduce using rule 96 (declaration_specifiers) ')' reduce using rule 96 (declaration_specifiers) ',' reduce using rule 96 (declaration_specifiers) '[' reduce using rule 96 (declaration_specifiers) '*' reduce using rule 96 (declaration_specifiers) ';' reduce using rule 96 (declaration_specifiers) declaration_specifiers go to state 61 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41
126 type_specifier → struct_or_union_specifier • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 126 (type_specifier) TYPEDEF_NAME reduce using rule 126 (type_specifier) TYPEDEF reduce using rule 126 (type_specifier) EXTERN reduce using rule 126 (type_specifier) STATIC reduce using rule 126 (type_specifier) AUTO reduce using rule 126 (type_specifier) REGISTER reduce using rule 126 (type_specifier) INLINE reduce using rule 126 (type_specifier) CONST reduce using rule 126 (type_specifier) RESTRICT reduce using rule 126 (type_specifier) VOLATILE reduce using rule 126 (type_specifier) BOOL reduce using rule 126 (type_specifier) CHAR reduce using rule 126 (type_specifier) SHORT reduce using rule 126 (type_specifier) INT reduce using rule 126 (type_specifier) LONG reduce using rule 126 (type_specifier) SIGNED reduce using rule 126 (type_specifier) UNSIGNED reduce using rule 126 (type_specifier) FLOAT reduce using rule 126 (type_specifier) DOUBLE reduce using rule 126 (type_specifier) VOID reduce using rule 126 (type_specifier) COMPLEX reduce using rule 126 (type_specifier) IMAGINARY reduce using rule 126 (type_specifier) STRUCT reduce using rule 126 (type_specifier) UNION reduce using rule 126 (type_specifier) ENUM reduce using rule 126 (type_specifier) ALIGNAS reduce using rule 126 (type_specifier) ATOMIC reduce using rule 126 (type_specifier) NORETURN reduce using rule 126 (type_specifier) THREAD_LOCAL reduce using rule 126 (type_specifier) '(' reduce using rule 126 (type_specifier) ')' reduce using rule 126 (type_specifier) ',' reduce using rule 126 (type_specifier) ':' reduce using rule 126 (type_specifier) '[' reduce using rule 126 (type_specifier) '*' reduce using rule 126 (type_specifier) ';' reduce using rule 126 (type_specifier)
129 struct_or_union_specifier → struct_or_union • '{' struct_declaration_list '}' 130 | struct_or_union • IDENTIFIER '{' struct_declaration_list '}' 131 | struct_or_union • IDENTIFIER IDENTIFIER shift, and go to state 62 '{' shift, and go to state 63
127 type_specifier → enum_specifier • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 127 (type_specifier) TYPEDEF_NAME reduce using rule 127 (type_specifier) TYPEDEF reduce using rule 127 (type_specifier) EXTERN reduce using rule 127 (type_specifier) STATIC reduce using rule 127 (type_specifier) AUTO reduce using rule 127 (type_specifier) REGISTER reduce using rule 127 (type_specifier) INLINE reduce using rule 127 (type_specifier) CONST reduce using rule 127 (type_specifier) RESTRICT reduce using rule 127 (type_specifier) VOLATILE reduce using rule 127 (type_specifier) BOOL reduce using rule 127 (type_specifier) CHAR reduce using rule 127 (type_specifier) SHORT reduce using rule 127 (type_specifier) INT reduce using rule 127 (type_specifier) LONG reduce using rule 127 (type_specifier) SIGNED reduce using rule 127 (type_specifier) UNSIGNED reduce using rule 127 (type_specifier) FLOAT reduce using rule 127 (type_specifier) DOUBLE reduce using rule 127 (type_specifier) VOID reduce using rule 127 (type_specifier) COMPLEX reduce using rule 127 (type_specifier) IMAGINARY reduce using rule 127 (type_specifier) STRUCT reduce using rule 127 (type_specifier) UNION reduce using rule 127 (type_specifier) ENUM reduce using rule 127 (type_specifier) ALIGNAS reduce using rule 127 (type_specifier) ATOMIC reduce using rule 127 (type_specifier) NORETURN reduce using rule 127 (type_specifier) THREAD_LOCAL reduce using rule 127 (type_specifier) '(' reduce using rule 127 (type_specifier) ')' reduce using rule 127 (type_specifier) ',' reduce using rule 127 (type_specifier) ':' reduce using rule 127 (type_specifier) '[' reduce using rule 127 (type_specifier) '*' reduce using rule 127 (type_specifier) ';' reduce using rule 127 (type_specifier)
125 type_specifier → atomic_type_specifier • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 125 (type_specifier) TYPEDEF_NAME reduce using rule 125 (type_specifier) TYPEDEF reduce using rule 125 (type_specifier) EXTERN reduce using rule 125 (type_specifier) STATIC reduce using rule 125 (type_specifier) AUTO reduce using rule 125 (type_specifier) REGISTER reduce using rule 125 (type_specifier) INLINE reduce using rule 125 (type_specifier) CONST reduce using rule 125 (type_specifier) RESTRICT reduce using rule 125 (type_specifier) VOLATILE reduce using rule 125 (type_specifier) BOOL reduce using rule 125 (type_specifier) CHAR reduce using rule 125 (type_specifier) SHORT reduce using rule 125 (type_specifier) INT reduce using rule 125 (type_specifier) LONG reduce using rule 125 (type_specifier) SIGNED reduce using rule 125 (type_specifier) UNSIGNED reduce using rule 125 (type_specifier) FLOAT reduce using rule 125 (type_specifier) DOUBLE reduce using rule 125 (type_specifier) VOID reduce using rule 125 (type_specifier) COMPLEX reduce using rule 125 (type_specifier) IMAGINARY reduce using rule 125 (type_specifier) STRUCT reduce using rule 125 (type_specifier) UNION reduce using rule 125 (type_specifier) ENUM reduce using rule 125 (type_specifier) ALIGNAS reduce using rule 125 (type_specifier) ATOMIC reduce using rule 125 (type_specifier) NORETURN reduce using rule 125 (type_specifier) THREAD_LOCAL reduce using rule 125 (type_specifier) '(' reduce using rule 125 (type_specifier) ')' reduce using rule 125 (type_specifier) ',' reduce using rule 125 (type_specifier) ':' reduce using rule 125 (type_specifier) '[' reduce using rule 125 (type_specifier) '*' reduce using rule 125 (type_specifier) ';' reduce using rule 125 (type_specifier)
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 97 | type_qualifier • declaration_specifiers 98 | • type_qualifier 98 | type_qualifier • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 IDENTIFIER reduce using rule 98 (declaration_specifiers) '(' reduce using rule 98 (declaration_specifiers) ')' reduce using rule 98 (declaration_specifiers) ',' reduce using rule 98 (declaration_specifiers) '[' reduce using rule 98 (declaration_specifiers) '*' reduce using rule 98 (declaration_specifiers) ';' reduce using rule 98 (declaration_specifiers) declaration_specifiers go to state 64 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 99 | function_specifier • declaration_specifiers 100 | • function_specifier 100 | function_specifier • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 IDENTIFIER reduce using rule 100 (declaration_specifiers) '(' reduce using rule 100 (declaration_specifiers) ')' reduce using rule 100 (declaration_specifiers) ',' reduce using rule 100 (declaration_specifiers) '[' reduce using rule 100 (declaration_specifiers) '*' reduce using rule 100 (declaration_specifiers) ';' reduce using rule 100 (declaration_specifiers) declaration_specifiers go to state 65 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 101 | alignment_specifier • declaration_specifiers 102 | • alignment_specifier 102 | alignment_specifier • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 IDENTIFIER reduce using rule 102 (declaration_specifiers) '(' reduce using rule 102 (declaration_specifiers) ')' reduce using rule 102 (declaration_specifiers) ',' reduce using rule 102 (declaration_specifiers) '[' reduce using rule 102 (declaration_specifiers) '*' reduce using rule 102 (declaration_specifiers) ';' reduce using rule 102 (declaration_specifiers) declaration_specifiers go to state 66 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41
92 declaration → static_assert_declaration • [$end, IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] $end reduce using rule 92 (declaration) IDENTIFIER reduce using rule 92 (declaration) I_CONSTANT reduce using rule 92 (declaration) F_CONSTANT reduce using rule 92 (declaration) STRING_LITERAL reduce using rule 92 (declaration) FUNC_NAME reduce using rule 92 (declaration) SIZEOF reduce using rule 92 (declaration) INC_OP reduce using rule 92 (declaration) DEC_OP reduce using rule 92 (declaration) TYPEDEF_NAME reduce using rule 92 (declaration) ENUMERATION_CONSTANT reduce using rule 92 (declaration) TYPEDEF reduce using rule 92 (declaration) EXTERN reduce using rule 92 (declaration) STATIC reduce using rule 92 (declaration) AUTO reduce using rule 92 (declaration) REGISTER reduce using rule 92 (declaration) INLINE reduce using rule 92 (declaration) CONST reduce using rule 92 (declaration) RESTRICT reduce using rule 92 (declaration) VOLATILE reduce using rule 92 (declaration) BOOL reduce using rule 92 (declaration) CHAR reduce using rule 92 (declaration) SHORT reduce using rule 92 (declaration) INT reduce using rule 92 (declaration) LONG reduce using rule 92 (declaration) SIGNED reduce using rule 92 (declaration) UNSIGNED reduce using rule 92 (declaration) FLOAT reduce using rule 92 (declaration) DOUBLE reduce using rule 92 (declaration) VOID reduce using rule 92 (declaration) COMPLEX reduce using rule 92 (declaration) IMAGINARY reduce using rule 92 (declaration) STRUCT reduce using rule 92 (declaration) UNION reduce using rule 92 (declaration) ENUM reduce using rule 92 (declaration) CASE reduce using rule 92 (declaration) DEFAULT reduce using rule 92 (declaration) IF reduce using rule 92 (declaration) SWITCH reduce using rule 92 (declaration) WHILE reduce using rule 92 (declaration) DO reduce using rule 92 (declaration) FOR reduce using rule 92 (declaration) GOTO reduce using rule 92 (declaration) CONTINUE reduce using rule 92 (declaration) BREAK reduce using rule 92 (declaration) RETURN reduce using rule 92 (declaration) ALIGNAS reduce using rule 92 (declaration) ALIGNOF reduce using rule 92 (declaration) ATOMIC reduce using rule 92 (declaration) GENERIC reduce using rule 92 (declaration) NORETURN reduce using rule 92 (declaration) STATIC_ASSERT reduce using rule 92 (declaration) THREAD_LOCAL reduce using rule 92 (declaration) '(' reduce using rule 92 (declaration) '{' reduce using rule 92 (declaration) '}' reduce using rule 92 (declaration) '&' reduce using rule 92 (declaration) '*' reduce using rule 92 (declaration) '+' reduce using rule 92 (declaration) '-' reduce using rule 92 (declaration) '~' reduce using rule 92 (declaration) '!' reduce using rule 92 (declaration) ';' reduce using rule 92 (declaration)
0 $accept → translation_unit • $end 90 declaration → • declaration_specifiers ';' 91 | • declaration_specifiers init_declarator_list ';' 92 | • static_assert_declaration 93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 268 translation_unit → translation_unit • external_declaration 269 external_declaration → • function_definition 270 | • declaration 271 function_definition → • declaration_specifiers declarator declaration_list compound_statement 272 | • declaration_specifiers declarator compound_statement $end shift, and go to state 67 TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 STATIC_ASSERT shift, and go to state 29 THREAD_LOCAL shift, and go to state 30 declaration go to state 31 declaration_specifiers go to state 32 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 static_assert_declaration go to state 42 external_declaration go to state 68 function_definition go to state 45
267 translation_unit → external_declaration • [$end, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL] $end reduce using rule 267 (translation_unit) TYPEDEF_NAME reduce using rule 267 (translation_unit) TYPEDEF reduce using rule 267 (translation_unit) EXTERN reduce using rule 267 (translation_unit) STATIC reduce using rule 267 (translation_unit) AUTO reduce using rule 267 (translation_unit) REGISTER reduce using rule 267 (translation_unit) INLINE reduce using rule 267 (translation_unit) CONST reduce using rule 267 (translation_unit) RESTRICT reduce using rule 267 (translation_unit) VOLATILE reduce using rule 267 (translation_unit) BOOL reduce using rule 267 (translation_unit) CHAR reduce using rule 267 (translation_unit) SHORT reduce using rule 267 (translation_unit) INT reduce using rule 267 (translation_unit) LONG reduce using rule 267 (translation_unit) SIGNED reduce using rule 267 (translation_unit) UNSIGNED reduce using rule 267 (translation_unit) FLOAT reduce using rule 267 (translation_unit) DOUBLE reduce using rule 267 (translation_unit) VOID reduce using rule 267 (translation_unit) COMPLEX reduce using rule 267 (translation_unit) IMAGINARY reduce using rule 267 (translation_unit) STRUCT reduce using rule 267 (translation_unit) UNION reduce using rule 267 (translation_unit) ENUM reduce using rule 267 (translation_unit) ALIGNAS reduce using rule 267 (translation_unit) ATOMIC reduce using rule 267 (translation_unit) NORETURN reduce using rule 267 (translation_unit) STATIC_ASSERT reduce using rule 267 (translation_unit) THREAD_LOCAL reduce using rule 267 (translation_unit)
269 external_declaration → function_definition • [$end, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL] $end reduce using rule 269 (external_declaration) TYPEDEF_NAME reduce using rule 269 (external_declaration) TYPEDEF reduce using rule 269 (external_declaration) EXTERN reduce using rule 269 (external_declaration) STATIC reduce using rule 269 (external_declaration) AUTO reduce using rule 269 (external_declaration) REGISTER reduce using rule 269 (external_declaration) INLINE reduce using rule 269 (external_declaration) CONST reduce using rule 269 (external_declaration) RESTRICT reduce using rule 269 (external_declaration) VOLATILE reduce using rule 269 (external_declaration) BOOL reduce using rule 269 (external_declaration) CHAR reduce using rule 269 (external_declaration) SHORT reduce using rule 269 (external_declaration) INT reduce using rule 269 (external_declaration) LONG reduce using rule 269 (external_declaration) SIGNED reduce using rule 269 (external_declaration) UNSIGNED reduce using rule 269 (external_declaration) FLOAT reduce using rule 269 (external_declaration) DOUBLE reduce using rule 269 (external_declaration) VOID reduce using rule 269 (external_declaration) COMPLEX reduce using rule 269 (external_declaration) IMAGINARY reduce using rule 269 (external_declaration) STRUCT reduce using rule 269 (external_declaration) UNION reduce using rule 269 (external_declaration) ENUM reduce using rule 269 (external_declaration) ALIGNAS reduce using rule 269 (external_declaration) ATOMIC reduce using rule 269 (external_declaration) NORETURN reduce using rule 269 (external_declaration) STATIC_ASSERT reduce using rule 269 (external_declaration) THREAD_LOCAL reduce using rule 269 (external_declaration)
150 enum_specifier → ENUM IDENTIFIER • '{' enumerator_list '}' 151 | ENUM IDENTIFIER • '{' enumerator_list ',' '}' 152 | ENUM IDENTIFIER • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] '{' shift, and go to state 69 IDENTIFIER reduce using rule 152 (enum_specifier) TYPEDEF_NAME reduce using rule 152 (enum_specifier) TYPEDEF reduce using rule 152 (enum_specifier) EXTERN reduce using rule 152 (enum_specifier) STATIC reduce using rule 152 (enum_specifier) AUTO reduce using rule 152 (enum_specifier) REGISTER reduce using rule 152 (enum_specifier) INLINE reduce using rule 152 (enum_specifier) CONST reduce using rule 152 (enum_specifier) RESTRICT reduce using rule 152 (enum_specifier) VOLATILE reduce using rule 152 (enum_specifier) BOOL reduce using rule 152 (enum_specifier) CHAR reduce using rule 152 (enum_specifier) SHORT reduce using rule 152 (enum_specifier) INT reduce using rule 152 (enum_specifier) LONG reduce using rule 152 (enum_specifier) SIGNED reduce using rule 152 (enum_specifier) UNSIGNED reduce using rule 152 (enum_specifier) FLOAT reduce using rule 152 (enum_specifier) DOUBLE reduce using rule 152 (enum_specifier) VOID reduce using rule 152 (enum_specifier) COMPLEX reduce using rule 152 (enum_specifier) IMAGINARY reduce using rule 152 (enum_specifier) STRUCT reduce using rule 152 (enum_specifier) UNION reduce using rule 152 (enum_specifier) ENUM reduce using rule 152 (enum_specifier) ALIGNAS reduce using rule 152 (enum_specifier) ATOMIC reduce using rule 152 (enum_specifier) NORETURN reduce using rule 152 (enum_specifier) THREAD_LOCAL reduce using rule 152 (enum_specifier) '(' reduce using rule 152 (enum_specifier) ')' reduce using rule 152 (enum_specifier) ',' reduce using rule 152 (enum_specifier) ':' reduce using rule 152 (enum_specifier) '[' reduce using rule 152 (enum_specifier) '*' reduce using rule 152 (enum_specifier) ';' reduce using rule 152 (enum_specifier)
9 enumeration_constant → • IDENTIFIER 148 enum_specifier → ENUM '{' • enumerator_list '}' 149 | ENUM '{' • enumerator_list ',' '}' 153 enumerator_list → • enumerator 154 | • enumerator_list ',' enumerator 155 enumerator → • enumeration_constant '=' constant_expression 156 | • enumeration_constant IDENTIFIER shift, and go to state 70 enumeration_constant go to state 71 enumerator_list go to state 72 enumerator go to state 73
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 89 constant_expression → • conditional_expression 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 164 alignment_specifier → ALIGNAS '(' • type_name ')' 165 | ALIGNAS '(' • constant_expression ')' 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 TYPEDEF_NAME shift, and go to state 1 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 27 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 110 constant_expression go to state 111 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 115
113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 157 | ATOMIC '(' • type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 116
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 89 constant_expression → • conditional_expression 235 static_assert_declaration → STATIC_ASSERT '(' • constant_expression ',' STRING_LITERAL ')' ';' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 110 constant_expression go to state 117
168 direct_declarator → IDENTIFIER • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 168 (direct_declarator) TYPEDEF reduce using rule 168 (direct_declarator) EXTERN reduce using rule 168 (direct_declarator) STATIC reduce using rule 168 (direct_declarator) AUTO reduce using rule 168 (direct_declarator) REGISTER reduce using rule 168 (direct_declarator) INLINE reduce using rule 168 (direct_declarator) CONST reduce using rule 168 (direct_declarator) RESTRICT reduce using rule 168 (direct_declarator) VOLATILE reduce using rule 168 (direct_declarator) BOOL reduce using rule 168 (direct_declarator) CHAR reduce using rule 168 (direct_declarator) SHORT reduce using rule 168 (direct_declarator) INT reduce using rule 168 (direct_declarator) LONG reduce using rule 168 (direct_declarator) SIGNED reduce using rule 168 (direct_declarator) UNSIGNED reduce using rule 168 (direct_declarator) FLOAT reduce using rule 168 (direct_declarator) DOUBLE reduce using rule 168 (direct_declarator) VOID reduce using rule 168 (direct_declarator) COMPLEX reduce using rule 168 (direct_declarator) IMAGINARY reduce using rule 168 (direct_declarator) STRUCT reduce using rule 168 (direct_declarator) UNION reduce using rule 168 (direct_declarator) ENUM reduce using rule 168 (direct_declarator) ALIGNAS reduce using rule 168 (direct_declarator) ATOMIC reduce using rule 168 (direct_declarator) NORETURN reduce using rule 168 (direct_declarator) STATIC_ASSERT reduce using rule 168 (direct_declarator) THREAD_LOCAL reduce using rule 168 (direct_declarator) '(' reduce using rule 168 (direct_declarator) ')' reduce using rule 168 (direct_declarator) ',' reduce using rule 168 (direct_declarator) ':' reduce using rule 168 (direct_declarator) '[' reduce using rule 168 (direct_declarator) '{' reduce using rule 168 (direct_declarator) '=' reduce using rule 168 (direct_declarator) ';' reduce using rule 168 (direct_declarator)
166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 169 | '(' • declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 52 '*' shift, and go to state 53 declarator go to state 118 direct_declarator go to state 58 pointer go to state 59
158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 182 pointer → • '*' type_qualifier_list pointer 182 | '*' • type_qualifier_list pointer 183 | • '*' type_qualifier_list 183 | '*' • type_qualifier_list 184 | • '*' pointer 184 | '*' • pointer 185 | • '*' 185 | '*' • [IDENTIFIER, '(', ')', ',', ':', '['] 186 type_qualifier_list → • type_qualifier 187 | • type_qualifier_list type_qualifier CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ATOMIC shift, and go to state 119 '*' shift, and go to state 53 IDENTIFIER reduce using rule 185 (pointer) '(' reduce using rule 185 (pointer) ')' reduce using rule 185 (pointer) ',' reduce using rule 185 (pointer) ':' reduce using rule 185 (pointer) '[' reduce using rule 185 (pointer) type_qualifier go to state 120 pointer go to state 121 type_qualifier_list go to state 122
90 declaration → declaration_specifiers ';' • [$end, IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] $end reduce using rule 90 (declaration) IDENTIFIER reduce using rule 90 (declaration) I_CONSTANT reduce using rule 90 (declaration) F_CONSTANT reduce using rule 90 (declaration) STRING_LITERAL reduce using rule 90 (declaration) FUNC_NAME reduce using rule 90 (declaration) SIZEOF reduce using rule 90 (declaration) INC_OP reduce using rule 90 (declaration) DEC_OP reduce using rule 90 (declaration) TYPEDEF_NAME reduce using rule 90 (declaration) ENUMERATION_CONSTANT reduce using rule 90 (declaration) TYPEDEF reduce using rule 90 (declaration) EXTERN reduce using rule 90 (declaration) STATIC reduce using rule 90 (declaration) AUTO reduce using rule 90 (declaration) REGISTER reduce using rule 90 (declaration) INLINE reduce using rule 90 (declaration) CONST reduce using rule 90 (declaration) RESTRICT reduce using rule 90 (declaration) VOLATILE reduce using rule 90 (declaration) BOOL reduce using rule 90 (declaration) CHAR reduce using rule 90 (declaration) SHORT reduce using rule 90 (declaration) INT reduce using rule 90 (declaration) LONG reduce using rule 90 (declaration) SIGNED reduce using rule 90 (declaration) UNSIGNED reduce using rule 90 (declaration) FLOAT reduce using rule 90 (declaration) DOUBLE reduce using rule 90 (declaration) VOID reduce using rule 90 (declaration) COMPLEX reduce using rule 90 (declaration) IMAGINARY reduce using rule 90 (declaration) STRUCT reduce using rule 90 (declaration) UNION reduce using rule 90 (declaration) ENUM reduce using rule 90 (declaration) CASE reduce using rule 90 (declaration) DEFAULT reduce using rule 90 (declaration) IF reduce using rule 90 (declaration) SWITCH reduce using rule 90 (declaration) WHILE reduce using rule 90 (declaration) DO reduce using rule 90 (declaration) FOR reduce using rule 90 (declaration) GOTO reduce using rule 90 (declaration) CONTINUE reduce using rule 90 (declaration) BREAK reduce using rule 90 (declaration) RETURN reduce using rule 90 (declaration) ALIGNAS reduce using rule 90 (declaration) ALIGNOF reduce using rule 90 (declaration) ATOMIC reduce using rule 90 (declaration) GENERIC reduce using rule 90 (declaration) NORETURN reduce using rule 90 (declaration) STATIC_ASSERT reduce using rule 90 (declaration) THREAD_LOCAL reduce using rule 90 (declaration) '(' reduce using rule 90 (declaration) '{' reduce using rule 90 (declaration) '}' reduce using rule 90 (declaration) '&' reduce using rule 90 (declaration) '*' reduce using rule 90 (declaration) '+' reduce using rule 90 (declaration) '-' reduce using rule 90 (declaration) '~' reduce using rule 90 (declaration) '!' reduce using rule 90 (declaration) ';' reduce using rule 90 (declaration)
91 declaration → declaration_specifiers init_declarator_list • ';' 104 init_declarator_list → init_declarator_list • ',' init_declarator ',' shift, and go to state 123 ';' shift, and go to state 124
103 init_declarator_list → init_declarator • [',', ';'] ',' reduce using rule 103 (init_declarator_list) ';' reduce using rule 103 (init_declarator_list)
90 declaration → • declaration_specifiers ';' 91 | • declaration_specifiers init_declarator_list ';' 92 | • static_assert_declaration 93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 105 init_declarator → declarator • '=' initializer 106 | declarator • [',', ';'] 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 271 function_definition → declaration_specifiers declarator • declaration_list compound_statement 272 | declaration_specifiers declarator • compound_statement 273 declaration_list → • declaration 274 | • declaration_list declaration TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 STATIC_ASSERT shift, and go to state 29 THREAD_LOCAL shift, and go to state 30 '{' shift, and go to state 125 '=' shift, and go to state 126 ',' reduce using rule 106 (init_declarator) ';' reduce using rule 106 (init_declarator) declaration go to state 127 declaration_specifiers go to state 128 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 static_assert_declaration go to state 42 compound_statement go to state 129 declaration_list go to state 130
167 declarator → direct_declarator • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, ')', ',', ':', '{', '=', ';'] 170 direct_declarator → direct_declarator • '[' ']' 171 | direct_declarator • '[' '*' ']' 172 | direct_declarator • '[' STATIC type_qualifier_list assignment_expression ']' 173 | direct_declarator • '[' STATIC assignment_expression ']' 174 | direct_declarator • '[' type_qualifier_list '*' ']' 175 | direct_declarator • '[' type_qualifier_list STATIC assignment_expression ']' 176 | direct_declarator • '[' type_qualifier_list assignment_expression ']' 177 | direct_declarator • '[' type_qualifier_list ']' 178 | direct_declarator • '[' assignment_expression ']' 179 | direct_declarator • '(' parameter_type_list ')' 180 | direct_declarator • '(' ')' 181 | direct_declarator • '(' identifier_list ')' '(' shift, and go to state 131 '[' shift, and go to state 132 TYPEDEF_NAME reduce using rule 167 (declarator) TYPEDEF reduce using rule 167 (declarator) EXTERN reduce using rule 167 (declarator) STATIC reduce using rule 167 (declarator) AUTO reduce using rule 167 (declarator) REGISTER reduce using rule 167 (declarator) INLINE reduce using rule 167 (declarator) CONST reduce using rule 167 (declarator) RESTRICT reduce using rule 167 (declarator) VOLATILE reduce using rule 167 (declarator) BOOL reduce using rule 167 (declarator) CHAR reduce using rule 167 (declarator) SHORT reduce using rule 167 (declarator) INT reduce using rule 167 (declarator) LONG reduce using rule 167 (declarator) SIGNED reduce using rule 167 (declarator) UNSIGNED reduce using rule 167 (declarator) FLOAT reduce using rule 167 (declarator) DOUBLE reduce using rule 167 (declarator) VOID reduce using rule 167 (declarator) COMPLEX reduce using rule 167 (declarator) IMAGINARY reduce using rule 167 (declarator) STRUCT reduce using rule 167 (declarator) UNION reduce using rule 167 (declarator) ENUM reduce using rule 167 (declarator) ALIGNAS reduce using rule 167 (declarator) ATOMIC reduce using rule 167 (declarator) NORETURN reduce using rule 167 (declarator) STATIC_ASSERT reduce using rule 167 (declarator) THREAD_LOCAL reduce using rule 167 (declarator) ')' reduce using rule 167 (declarator) ',' reduce using rule 167 (declarator) ':' reduce using rule 167 (declarator) '{' reduce using rule 167 (declarator) '=' reduce using rule 167 (declarator) ';' reduce using rule 167 (declarator)
166 declarator → pointer • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 52 direct_declarator go to state 133
93 declaration_specifiers → storage_class_specifier declaration_specifiers • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 93 (declaration_specifiers) '(' reduce using rule 93 (declaration_specifiers) ')' reduce using rule 93 (declaration_specifiers) ',' reduce using rule 93 (declaration_specifiers) '[' reduce using rule 93 (declaration_specifiers) '*' reduce using rule 93 (declaration_specifiers) ';' reduce using rule 93 (declaration_specifiers)
95 declaration_specifiers → type_specifier declaration_specifiers • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 95 (declaration_specifiers) '(' reduce using rule 95 (declaration_specifiers) ')' reduce using rule 95 (declaration_specifiers) ',' reduce using rule 95 (declaration_specifiers) '[' reduce using rule 95 (declaration_specifiers) '*' reduce using rule 95 (declaration_specifiers) ';' reduce using rule 95 (declaration_specifiers)
130 struct_or_union_specifier → struct_or_union IDENTIFIER • '{' struct_declaration_list '}' 131 | struct_or_union IDENTIFIER • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] '{' shift, and go to state 134 IDENTIFIER reduce using rule 131 (struct_or_union_specifier) TYPEDEF_NAME reduce using rule 131 (struct_or_union_specifier) TYPEDEF reduce using rule 131 (struct_or_union_specifier) EXTERN reduce using rule 131 (struct_or_union_specifier) STATIC reduce using rule 131 (struct_or_union_specifier) AUTO reduce using rule 131 (struct_or_union_specifier) REGISTER reduce using rule 131 (struct_or_union_specifier) INLINE reduce using rule 131 (struct_or_union_specifier) CONST reduce using rule 131 (struct_or_union_specifier) RESTRICT reduce using rule 131 (struct_or_union_specifier) VOLATILE reduce using rule 131 (struct_or_union_specifier) BOOL reduce using rule 131 (struct_or_union_specifier) CHAR reduce using rule 131 (struct_or_union_specifier) SHORT reduce using rule 131 (struct_or_union_specifier) INT reduce using rule 131 (struct_or_union_specifier) LONG reduce using rule 131 (struct_or_union_specifier) SIGNED reduce using rule 131 (struct_or_union_specifier) UNSIGNED reduce using rule 131 (struct_or_union_specifier) FLOAT reduce using rule 131 (struct_or_union_specifier) DOUBLE reduce using rule 131 (struct_or_union_specifier) VOID reduce using rule 131 (struct_or_union_specifier) COMPLEX reduce using rule 131 (struct_or_union_specifier) IMAGINARY reduce using rule 131 (struct_or_union_specifier) STRUCT reduce using rule 131 (struct_or_union_specifier) UNION reduce using rule 131 (struct_or_union_specifier) ENUM reduce using rule 131 (struct_or_union_specifier) ALIGNAS reduce using rule 131 (struct_or_union_specifier) ATOMIC reduce using rule 131 (struct_or_union_specifier) NORETURN reduce using rule 131 (struct_or_union_specifier) THREAD_LOCAL reduce using rule 131 (struct_or_union_specifier) '(' reduce using rule 131 (struct_or_union_specifier) ')' reduce using rule 131 (struct_or_union_specifier) ',' reduce using rule 131 (struct_or_union_specifier) ':' reduce using rule 131 (struct_or_union_specifier) '[' reduce using rule 131 (struct_or_union_specifier) '*' reduce using rule 131 (struct_or_union_specifier) ';' reduce using rule 131 (struct_or_union_specifier)
113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 129 | struct_or_union '{' • struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 134 struct_declaration_list → • struct_declaration 135 | • struct_declaration_list struct_declaration 136 struct_declaration → • specifier_qualifier_list ';' 137 | • specifier_qualifier_list struct_declarator_list ';' 138 | • static_assert_declaration 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 STATIC_ASSERT shift, and go to state 29 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 struct_declaration_list go to state 135 struct_declaration go to state 136 specifier_qualifier_list go to state 137 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 static_assert_declaration go to state 138
97 declaration_specifiers → type_qualifier declaration_specifiers • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 97 (declaration_specifiers) '(' reduce using rule 97 (declaration_specifiers) ')' reduce using rule 97 (declaration_specifiers) ',' reduce using rule 97 (declaration_specifiers) '[' reduce using rule 97 (declaration_specifiers) '*' reduce using rule 97 (declaration_specifiers) ';' reduce using rule 97 (declaration_specifiers)
99 declaration_specifiers → function_specifier declaration_specifiers • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 99 (declaration_specifiers) '(' reduce using rule 99 (declaration_specifiers) ')' reduce using rule 99 (declaration_specifiers) ',' reduce using rule 99 (declaration_specifiers) '[' reduce using rule 99 (declaration_specifiers) '*' reduce using rule 99 (declaration_specifiers) ';' reduce using rule 99 (declaration_specifiers)
101 declaration_specifiers → alignment_specifier declaration_specifiers • [IDENTIFIER, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 101 (declaration_specifiers) '(' reduce using rule 101 (declaration_specifiers) ')' reduce using rule 101 (declaration_specifiers) ',' reduce using rule 101 (declaration_specifiers) '[' reduce using rule 101 (declaration_specifiers) '*' reduce using rule 101 (declaration_specifiers) ';' reduce using rule 101 (declaration_specifiers)
0 $accept → translation_unit $end • $default accept
268 translation_unit → translation_unit external_declaration • [$end, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL] $end reduce using rule 268 (translation_unit) TYPEDEF_NAME reduce using rule 268 (translation_unit) TYPEDEF reduce using rule 268 (translation_unit) EXTERN reduce using rule 268 (translation_unit) STATIC reduce using rule 268 (translation_unit) AUTO reduce using rule 268 (translation_unit) REGISTER reduce using rule 268 (translation_unit) INLINE reduce using rule 268 (translation_unit) CONST reduce using rule 268 (translation_unit) RESTRICT reduce using rule 268 (translation_unit) VOLATILE reduce using rule 268 (translation_unit) BOOL reduce using rule 268 (translation_unit) CHAR reduce using rule 268 (translation_unit) SHORT reduce using rule 268 (translation_unit) INT reduce using rule 268 (translation_unit) LONG reduce using rule 268 (translation_unit) SIGNED reduce using rule 268 (translation_unit) UNSIGNED reduce using rule 268 (translation_unit) FLOAT reduce using rule 268 (translation_unit) DOUBLE reduce using rule 268 (translation_unit) VOID reduce using rule 268 (translation_unit) COMPLEX reduce using rule 268 (translation_unit) IMAGINARY reduce using rule 268 (translation_unit) STRUCT reduce using rule 268 (translation_unit) UNION reduce using rule 268 (translation_unit) ENUM reduce using rule 268 (translation_unit) ALIGNAS reduce using rule 268 (translation_unit) ATOMIC reduce using rule 268 (translation_unit) NORETURN reduce using rule 268 (translation_unit) STATIC_ASSERT reduce using rule 268 (translation_unit) THREAD_LOCAL reduce using rule 268 (translation_unit)
9 enumeration_constant → • IDENTIFIER 150 enum_specifier → ENUM IDENTIFIER '{' • enumerator_list '}' 151 | ENUM IDENTIFIER '{' • enumerator_list ',' '}' 153 enumerator_list → • enumerator 154 | • enumerator_list ',' enumerator 155 enumerator → • enumeration_constant '=' constant_expression 156 | • enumeration_constant IDENTIFIER shift, and go to state 70 enumeration_constant go to state 71 enumerator_list go to state 139 enumerator go to state 73
9 enumeration_constant → IDENTIFIER • [',', '}', '='] ',' reduce using rule 9 (enumeration_constant) '}' reduce using rule 9 (enumeration_constant) '=' reduce using rule 9 (enumeration_constant)
155 enumerator → enumeration_constant • '=' constant_expression 156 | enumeration_constant • [',', '}'] '=' shift, and go to state 140 ',' reduce using rule 156 (enumerator) '}' reduce using rule 156 (enumerator)
148 enum_specifier → ENUM '{' enumerator_list • '}' 149 | ENUM '{' enumerator_list • ',' '}' 154 enumerator_list → enumerator_list • ',' enumerator ',' shift, and go to state 141 '}' shift, and go to state 142
153 enumerator_list → enumerator • [',', '}'] ',' reduce using rule 153 (enumerator_list) '}' reduce using rule 153 (enumerator_list)
1 primary_expression → IDENTIFIER • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 1 (primary_expression) INC_OP reduce using rule 1 (primary_expression) DEC_OP reduce using rule 1 (primary_expression) LEFT_OP reduce using rule 1 (primary_expression) RIGHT_OP reduce using rule 1 (primary_expression) LE_OP reduce using rule 1 (primary_expression) GE_OP reduce using rule 1 (primary_expression) EQ_OP reduce using rule 1 (primary_expression) NE_OP reduce using rule 1 (primary_expression) AND_OP reduce using rule 1 (primary_expression) OR_OP reduce using rule 1 (primary_expression) MUL_ASSIGN reduce using rule 1 (primary_expression) DIV_ASSIGN reduce using rule 1 (primary_expression) MOD_ASSIGN reduce using rule 1 (primary_expression) ADD_ASSIGN reduce using rule 1 (primary_expression) SUB_ASSIGN reduce using rule 1 (primary_expression) LEFT_ASSIGN reduce using rule 1 (primary_expression) RIGHT_ASSIGN reduce using rule 1 (primary_expression) AND_ASSIGN reduce using rule 1 (primary_expression) XOR_ASSIGN reduce using rule 1 (primary_expression) OR_ASSIGN reduce using rule 1 (primary_expression) '(' reduce using rule 1 (primary_expression) ')' reduce using rule 1 (primary_expression) ',' reduce using rule 1 (primary_expression) ':' reduce using rule 1 (primary_expression) '[' reduce using rule 1 (primary_expression) ']' reduce using rule 1 (primary_expression) '.' reduce using rule 1 (primary_expression) '}' reduce using rule 1 (primary_expression) '&' reduce using rule 1 (primary_expression) '*' reduce using rule 1 (primary_expression) '+' reduce using rule 1 (primary_expression) '-' reduce using rule 1 (primary_expression) '/' reduce using rule 1 (primary_expression) '%' reduce using rule 1 (primary_expression) '<' reduce using rule 1 (primary_expression) '>' reduce using rule 1 (primary_expression) '^' reduce using rule 1 (primary_expression) '|' reduce using rule 1 (primary_expression) '?' reduce using rule 1 (primary_expression) '=' reduce using rule 1 (primary_expression) ';' reduce using rule 1 (primary_expression)
6 constant → I_CONSTANT • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 6 (constant) INC_OP reduce using rule 6 (constant) DEC_OP reduce using rule 6 (constant) LEFT_OP reduce using rule 6 (constant) RIGHT_OP reduce using rule 6 (constant) LE_OP reduce using rule 6 (constant) GE_OP reduce using rule 6 (constant) EQ_OP reduce using rule 6 (constant) NE_OP reduce using rule 6 (constant) AND_OP reduce using rule 6 (constant) OR_OP reduce using rule 6 (constant) MUL_ASSIGN reduce using rule 6 (constant) DIV_ASSIGN reduce using rule 6 (constant) MOD_ASSIGN reduce using rule 6 (constant) ADD_ASSIGN reduce using rule 6 (constant) SUB_ASSIGN reduce using rule 6 (constant) LEFT_ASSIGN reduce using rule 6 (constant) RIGHT_ASSIGN reduce using rule 6 (constant) AND_ASSIGN reduce using rule 6 (constant) XOR_ASSIGN reduce using rule 6 (constant) OR_ASSIGN reduce using rule 6 (constant) '(' reduce using rule 6 (constant) ')' reduce using rule 6 (constant) ',' reduce using rule 6 (constant) ':' reduce using rule 6 (constant) '[' reduce using rule 6 (constant) ']' reduce using rule 6 (constant) '.' reduce using rule 6 (constant) '}' reduce using rule 6 (constant) '&' reduce using rule 6 (constant) '*' reduce using rule 6 (constant) '+' reduce using rule 6 (constant) '-' reduce using rule 6 (constant) '/' reduce using rule 6 (constant) '%' reduce using rule 6 (constant) '<' reduce using rule 6 (constant) '>' reduce using rule 6 (constant) '^' reduce using rule 6 (constant) '|' reduce using rule 6 (constant) '?' reduce using rule 6 (constant) '=' reduce using rule 6 (constant) ';' reduce using rule 6 (constant)
7 constant → F_CONSTANT • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 7 (constant) INC_OP reduce using rule 7 (constant) DEC_OP reduce using rule 7 (constant) LEFT_OP reduce using rule 7 (constant) RIGHT_OP reduce using rule 7 (constant) LE_OP reduce using rule 7 (constant) GE_OP reduce using rule 7 (constant) EQ_OP reduce using rule 7 (constant) NE_OP reduce using rule 7 (constant) AND_OP reduce using rule 7 (constant) OR_OP reduce using rule 7 (constant) MUL_ASSIGN reduce using rule 7 (constant) DIV_ASSIGN reduce using rule 7 (constant) MOD_ASSIGN reduce using rule 7 (constant) ADD_ASSIGN reduce using rule 7 (constant) SUB_ASSIGN reduce using rule 7 (constant) LEFT_ASSIGN reduce using rule 7 (constant) RIGHT_ASSIGN reduce using rule 7 (constant) AND_ASSIGN reduce using rule 7 (constant) XOR_ASSIGN reduce using rule 7 (constant) OR_ASSIGN reduce using rule 7 (constant) '(' reduce using rule 7 (constant) ')' reduce using rule 7 (constant) ',' reduce using rule 7 (constant) ':' reduce using rule 7 (constant) '[' reduce using rule 7 (constant) ']' reduce using rule 7 (constant) '.' reduce using rule 7 (constant) '}' reduce using rule 7 (constant) '&' reduce using rule 7 (constant) '*' reduce using rule 7 (constant) '+' reduce using rule 7 (constant) '-' reduce using rule 7 (constant) '/' reduce using rule 7 (constant) '%' reduce using rule 7 (constant) '<' reduce using rule 7 (constant) '>' reduce using rule 7 (constant) '^' reduce using rule 7 (constant) '|' reduce using rule 7 (constant) '?' reduce using rule 7 (constant) '=' reduce using rule 7 (constant) ';' reduce using rule 7 (constant)
10 string → STRING_LITERAL • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 10 (string) INC_OP reduce using rule 10 (string) DEC_OP reduce using rule 10 (string) LEFT_OP reduce using rule 10 (string) RIGHT_OP reduce using rule 10 (string) LE_OP reduce using rule 10 (string) GE_OP reduce using rule 10 (string) EQ_OP reduce using rule 10 (string) NE_OP reduce using rule 10 (string) AND_OP reduce using rule 10 (string) OR_OP reduce using rule 10 (string) MUL_ASSIGN reduce using rule 10 (string) DIV_ASSIGN reduce using rule 10 (string) MOD_ASSIGN reduce using rule 10 (string) ADD_ASSIGN reduce using rule 10 (string) SUB_ASSIGN reduce using rule 10 (string) LEFT_ASSIGN reduce using rule 10 (string) RIGHT_ASSIGN reduce using rule 10 (string) AND_ASSIGN reduce using rule 10 (string) XOR_ASSIGN reduce using rule 10 (string) OR_ASSIGN reduce using rule 10 (string) '(' reduce using rule 10 (string) ')' reduce using rule 10 (string) ',' reduce using rule 10 (string) ':' reduce using rule 10 (string) '[' reduce using rule 10 (string) ']' reduce using rule 10 (string) '.' reduce using rule 10 (string) '}' reduce using rule 10 (string) '&' reduce using rule 10 (string) '*' reduce using rule 10 (string) '+' reduce using rule 10 (string) '-' reduce using rule 10 (string) '/' reduce using rule 10 (string) '%' reduce using rule 10 (string) '<' reduce using rule 10 (string) '>' reduce using rule 10 (string) '^' reduce using rule 10 (string) '|' reduce using rule 10 (string) '?' reduce using rule 10 (string) '=' reduce using rule 10 (string) ';' reduce using rule 10 (string)
11 string → FUNC_NAME • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 11 (string) INC_OP reduce using rule 11 (string) DEC_OP reduce using rule 11 (string) LEFT_OP reduce using rule 11 (string) RIGHT_OP reduce using rule 11 (string) LE_OP reduce using rule 11 (string) GE_OP reduce using rule 11 (string) EQ_OP reduce using rule 11 (string) NE_OP reduce using rule 11 (string) AND_OP reduce using rule 11 (string) OR_OP reduce using rule 11 (string) MUL_ASSIGN reduce using rule 11 (string) DIV_ASSIGN reduce using rule 11 (string) MOD_ASSIGN reduce using rule 11 (string) ADD_ASSIGN reduce using rule 11 (string) SUB_ASSIGN reduce using rule 11 (string) LEFT_ASSIGN reduce using rule 11 (string) RIGHT_ASSIGN reduce using rule 11 (string) AND_ASSIGN reduce using rule 11 (string) XOR_ASSIGN reduce using rule 11 (string) OR_ASSIGN reduce using rule 11 (string) '(' reduce using rule 11 (string) ')' reduce using rule 11 (string) ',' reduce using rule 11 (string) ':' reduce using rule 11 (string) '[' reduce using rule 11 (string) ']' reduce using rule 11 (string) '.' reduce using rule 11 (string) '}' reduce using rule 11 (string) '&' reduce using rule 11 (string) '*' reduce using rule 11 (string) '+' reduce using rule 11 (string) '-' reduce using rule 11 (string) '/' reduce using rule 11 (string) '%' reduce using rule 11 (string) '<' reduce using rule 11 (string) '>' reduce using rule 11 (string) '^' reduce using rule 11 (string) '|' reduce using rule 11 (string) '?' reduce using rule 11 (string) '=' reduce using rule 11 (string) ';' reduce using rule 11 (string)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 33 | SIZEOF • unary_expression 34 | • SIZEOF '(' type_name ')' 34 | SIZEOF • '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 143 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 144 unary_operator go to state 98
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 30 | INC_OP • unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 145 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 146 unary_operator go to state 98
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 31 | DEC_OP • unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 145 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 147 unary_operator go to state 98
8 constant → ENUMERATION_CONSTANT • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 8 (constant) INC_OP reduce using rule 8 (constant) DEC_OP reduce using rule 8 (constant) LEFT_OP reduce using rule 8 (constant) RIGHT_OP reduce using rule 8 (constant) LE_OP reduce using rule 8 (constant) GE_OP reduce using rule 8 (constant) EQ_OP reduce using rule 8 (constant) NE_OP reduce using rule 8 (constant) AND_OP reduce using rule 8 (constant) OR_OP reduce using rule 8 (constant) MUL_ASSIGN reduce using rule 8 (constant) DIV_ASSIGN reduce using rule 8 (constant) MOD_ASSIGN reduce using rule 8 (constant) ADD_ASSIGN reduce using rule 8 (constant) SUB_ASSIGN reduce using rule 8 (constant) LEFT_ASSIGN reduce using rule 8 (constant) RIGHT_ASSIGN reduce using rule 8 (constant) AND_ASSIGN reduce using rule 8 (constant) XOR_ASSIGN reduce using rule 8 (constant) OR_ASSIGN reduce using rule 8 (constant) '(' reduce using rule 8 (constant) ')' reduce using rule 8 (constant) ',' reduce using rule 8 (constant) ':' reduce using rule 8 (constant) '[' reduce using rule 8 (constant) ']' reduce using rule 8 (constant) '.' reduce using rule 8 (constant) '}' reduce using rule 8 (constant) '&' reduce using rule 8 (constant) '*' reduce using rule 8 (constant) '+' reduce using rule 8 (constant) '-' reduce using rule 8 (constant) '/' reduce using rule 8 (constant) '%' reduce using rule 8 (constant) '<' reduce using rule 8 (constant) '>' reduce using rule 8 (constant) '^' reduce using rule 8 (constant) '|' reduce using rule 8 (constant) '?' reduce using rule 8 (constant) '=' reduce using rule 8 (constant) ';' reduce using rule 8 (constant)
35 unary_expression → ALIGNOF • '(' type_name ')' '(' shift, and go to state 148
12 generic_selection → GENERIC • '(' assignment_expression ',' generic_assoc_list ')' '(' shift, and go to state 149
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 4 | '(' • expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 25 | '(' • type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 26 | '(' • type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 43 | '(' • type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 TYPEDEF_NAME shift, and go to state 1 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 27 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 153 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 154
36 unary_operator → '&' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 36 (unary_operator) I_CONSTANT reduce using rule 36 (unary_operator) F_CONSTANT reduce using rule 36 (unary_operator) STRING_LITERAL reduce using rule 36 (unary_operator) FUNC_NAME reduce using rule 36 (unary_operator) SIZEOF reduce using rule 36 (unary_operator) INC_OP reduce using rule 36 (unary_operator) DEC_OP reduce using rule 36 (unary_operator) ENUMERATION_CONSTANT reduce using rule 36 (unary_operator) ALIGNOF reduce using rule 36 (unary_operator) GENERIC reduce using rule 36 (unary_operator) '(' reduce using rule 36 (unary_operator) '&' reduce using rule 36 (unary_operator) '*' reduce using rule 36 (unary_operator) '+' reduce using rule 36 (unary_operator) '-' reduce using rule 36 (unary_operator) '~' reduce using rule 36 (unary_operator) '!' reduce using rule 36 (unary_operator)
37 unary_operator → '*' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 37 (unary_operator) I_CONSTANT reduce using rule 37 (unary_operator) F_CONSTANT reduce using rule 37 (unary_operator) STRING_LITERAL reduce using rule 37 (unary_operator) FUNC_NAME reduce using rule 37 (unary_operator) SIZEOF reduce using rule 37 (unary_operator) INC_OP reduce using rule 37 (unary_operator) DEC_OP reduce using rule 37 (unary_operator) ENUMERATION_CONSTANT reduce using rule 37 (unary_operator) ALIGNOF reduce using rule 37 (unary_operator) GENERIC reduce using rule 37 (unary_operator) '(' reduce using rule 37 (unary_operator) '&' reduce using rule 37 (unary_operator) '*' reduce using rule 37 (unary_operator) '+' reduce using rule 37 (unary_operator) '-' reduce using rule 37 (unary_operator) '~' reduce using rule 37 (unary_operator) '!' reduce using rule 37 (unary_operator)
38 unary_operator → '+' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 38 (unary_operator) I_CONSTANT reduce using rule 38 (unary_operator) F_CONSTANT reduce using rule 38 (unary_operator) STRING_LITERAL reduce using rule 38 (unary_operator) FUNC_NAME reduce using rule 38 (unary_operator) SIZEOF reduce using rule 38 (unary_operator) INC_OP reduce using rule 38 (unary_operator) DEC_OP reduce using rule 38 (unary_operator) ENUMERATION_CONSTANT reduce using rule 38 (unary_operator) ALIGNOF reduce using rule 38 (unary_operator) GENERIC reduce using rule 38 (unary_operator) '(' reduce using rule 38 (unary_operator) '&' reduce using rule 38 (unary_operator) '*' reduce using rule 38 (unary_operator) '+' reduce using rule 38 (unary_operator) '-' reduce using rule 38 (unary_operator) '~' reduce using rule 38 (unary_operator) '!' reduce using rule 38 (unary_operator)
39 unary_operator → '-' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 39 (unary_operator) I_CONSTANT reduce using rule 39 (unary_operator) F_CONSTANT reduce using rule 39 (unary_operator) STRING_LITERAL reduce using rule 39 (unary_operator) FUNC_NAME reduce using rule 39 (unary_operator) SIZEOF reduce using rule 39 (unary_operator) INC_OP reduce using rule 39 (unary_operator) DEC_OP reduce using rule 39 (unary_operator) ENUMERATION_CONSTANT reduce using rule 39 (unary_operator) ALIGNOF reduce using rule 39 (unary_operator) GENERIC reduce using rule 39 (unary_operator) '(' reduce using rule 39 (unary_operator) '&' reduce using rule 39 (unary_operator) '*' reduce using rule 39 (unary_operator) '+' reduce using rule 39 (unary_operator) '-' reduce using rule 39 (unary_operator) '~' reduce using rule 39 (unary_operator) '!' reduce using rule 39 (unary_operator)
40 unary_operator → '~' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 40 (unary_operator) I_CONSTANT reduce using rule 40 (unary_operator) F_CONSTANT reduce using rule 40 (unary_operator) STRING_LITERAL reduce using rule 40 (unary_operator) FUNC_NAME reduce using rule 40 (unary_operator) SIZEOF reduce using rule 40 (unary_operator) INC_OP reduce using rule 40 (unary_operator) DEC_OP reduce using rule 40 (unary_operator) ENUMERATION_CONSTANT reduce using rule 40 (unary_operator) ALIGNOF reduce using rule 40 (unary_operator) GENERIC reduce using rule 40 (unary_operator) '(' reduce using rule 40 (unary_operator) '&' reduce using rule 40 (unary_operator) '*' reduce using rule 40 (unary_operator) '+' reduce using rule 40 (unary_operator) '-' reduce using rule 40 (unary_operator) '~' reduce using rule 40 (unary_operator) '!' reduce using rule 40 (unary_operator)
41 unary_operator → '!' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 41 (unary_operator) I_CONSTANT reduce using rule 41 (unary_operator) F_CONSTANT reduce using rule 41 (unary_operator) STRING_LITERAL reduce using rule 41 (unary_operator) FUNC_NAME reduce using rule 41 (unary_operator) SIZEOF reduce using rule 41 (unary_operator) INC_OP reduce using rule 41 (unary_operator) DEC_OP reduce using rule 41 (unary_operator) ENUMERATION_CONSTANT reduce using rule 41 (unary_operator) ALIGNOF reduce using rule 41 (unary_operator) GENERIC reduce using rule 41 (unary_operator) '(' reduce using rule 41 (unary_operator) '&' reduce using rule 41 (unary_operator) '*' reduce using rule 41 (unary_operator) '+' reduce using rule 41 (unary_operator) '-' reduce using rule 41 (unary_operator) '~' reduce using rule 41 (unary_operator) '!' reduce using rule 41 (unary_operator)
17 postfix_expression → primary_expression • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 17 (postfix_expression) INC_OP reduce using rule 17 (postfix_expression) DEC_OP reduce using rule 17 (postfix_expression) LEFT_OP reduce using rule 17 (postfix_expression) RIGHT_OP reduce using rule 17 (postfix_expression) LE_OP reduce using rule 17 (postfix_expression) GE_OP reduce using rule 17 (postfix_expression) EQ_OP reduce using rule 17 (postfix_expression) NE_OP reduce using rule 17 (postfix_expression) AND_OP reduce using rule 17 (postfix_expression) OR_OP reduce using rule 17 (postfix_expression) MUL_ASSIGN reduce using rule 17 (postfix_expression) DIV_ASSIGN reduce using rule 17 (postfix_expression) MOD_ASSIGN reduce using rule 17 (postfix_expression) ADD_ASSIGN reduce using rule 17 (postfix_expression) SUB_ASSIGN reduce using rule 17 (postfix_expression) LEFT_ASSIGN reduce using rule 17 (postfix_expression) RIGHT_ASSIGN reduce using rule 17 (postfix_expression) AND_ASSIGN reduce using rule 17 (postfix_expression) XOR_ASSIGN reduce using rule 17 (postfix_expression) OR_ASSIGN reduce using rule 17 (postfix_expression) '(' reduce using rule 17 (postfix_expression) ')' reduce using rule 17 (postfix_expression) ',' reduce using rule 17 (postfix_expression) ':' reduce using rule 17 (postfix_expression) '[' reduce using rule 17 (postfix_expression) ']' reduce using rule 17 (postfix_expression) '.' reduce using rule 17 (postfix_expression) '}' reduce using rule 17 (postfix_expression) '&' reduce using rule 17 (postfix_expression) '*' reduce using rule 17 (postfix_expression) '+' reduce using rule 17 (postfix_expression) '-' reduce using rule 17 (postfix_expression) '/' reduce using rule 17 (postfix_expression) '%' reduce using rule 17 (postfix_expression) '<' reduce using rule 17 (postfix_expression) '>' reduce using rule 17 (postfix_expression) '^' reduce using rule 17 (postfix_expression) '|' reduce using rule 17 (postfix_expression) '?' reduce using rule 17 (postfix_expression) '=' reduce using rule 17 (postfix_expression) ';' reduce using rule 17 (postfix_expression)
2 primary_expression → constant • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 2 (primary_expression) INC_OP reduce using rule 2 (primary_expression) DEC_OP reduce using rule 2 (primary_expression) LEFT_OP reduce using rule 2 (primary_expression) RIGHT_OP reduce using rule 2 (primary_expression) LE_OP reduce using rule 2 (primary_expression) GE_OP reduce using rule 2 (primary_expression) EQ_OP reduce using rule 2 (primary_expression) NE_OP reduce using rule 2 (primary_expression) AND_OP reduce using rule 2 (primary_expression) OR_OP reduce using rule 2 (primary_expression) MUL_ASSIGN reduce using rule 2 (primary_expression) DIV_ASSIGN reduce using rule 2 (primary_expression) MOD_ASSIGN reduce using rule 2 (primary_expression) ADD_ASSIGN reduce using rule 2 (primary_expression) SUB_ASSIGN reduce using rule 2 (primary_expression) LEFT_ASSIGN reduce using rule 2 (primary_expression) RIGHT_ASSIGN reduce using rule 2 (primary_expression) AND_ASSIGN reduce using rule 2 (primary_expression) XOR_ASSIGN reduce using rule 2 (primary_expression) OR_ASSIGN reduce using rule 2 (primary_expression) '(' reduce using rule 2 (primary_expression) ')' reduce using rule 2 (primary_expression) ',' reduce using rule 2 (primary_expression) ':' reduce using rule 2 (primary_expression) '[' reduce using rule 2 (primary_expression) ']' reduce using rule 2 (primary_expression) '.' reduce using rule 2 (primary_expression) '}' reduce using rule 2 (primary_expression) '&' reduce using rule 2 (primary_expression) '*' reduce using rule 2 (primary_expression) '+' reduce using rule 2 (primary_expression) '-' reduce using rule 2 (primary_expression) '/' reduce using rule 2 (primary_expression) '%' reduce using rule 2 (primary_expression) '<' reduce using rule 2 (primary_expression) '>' reduce using rule 2 (primary_expression) '^' reduce using rule 2 (primary_expression) '|' reduce using rule 2 (primary_expression) '?' reduce using rule 2 (primary_expression) '=' reduce using rule 2 (primary_expression) ';' reduce using rule 2 (primary_expression)
3 primary_expression → string • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 3 (primary_expression) INC_OP reduce using rule 3 (primary_expression) DEC_OP reduce using rule 3 (primary_expression) LEFT_OP reduce using rule 3 (primary_expression) RIGHT_OP reduce using rule 3 (primary_expression) LE_OP reduce using rule 3 (primary_expression) GE_OP reduce using rule 3 (primary_expression) EQ_OP reduce using rule 3 (primary_expression) NE_OP reduce using rule 3 (primary_expression) AND_OP reduce using rule 3 (primary_expression) OR_OP reduce using rule 3 (primary_expression) MUL_ASSIGN reduce using rule 3 (primary_expression) DIV_ASSIGN reduce using rule 3 (primary_expression) MOD_ASSIGN reduce using rule 3 (primary_expression) ADD_ASSIGN reduce using rule 3 (primary_expression) SUB_ASSIGN reduce using rule 3 (primary_expression) LEFT_ASSIGN reduce using rule 3 (primary_expression) RIGHT_ASSIGN reduce using rule 3 (primary_expression) AND_ASSIGN reduce using rule 3 (primary_expression) XOR_ASSIGN reduce using rule 3 (primary_expression) OR_ASSIGN reduce using rule 3 (primary_expression) '(' reduce using rule 3 (primary_expression) ')' reduce using rule 3 (primary_expression) ',' reduce using rule 3 (primary_expression) ':' reduce using rule 3 (primary_expression) '[' reduce using rule 3 (primary_expression) ']' reduce using rule 3 (primary_expression) '.' reduce using rule 3 (primary_expression) '}' reduce using rule 3 (primary_expression) '&' reduce using rule 3 (primary_expression) '*' reduce using rule 3 (primary_expression) '+' reduce using rule 3 (primary_expression) '-' reduce using rule 3 (primary_expression) '/' reduce using rule 3 (primary_expression) '%' reduce using rule 3 (primary_expression) '<' reduce using rule 3 (primary_expression) '>' reduce using rule 3 (primary_expression) '^' reduce using rule 3 (primary_expression) '|' reduce using rule 3 (primary_expression) '?' reduce using rule 3 (primary_expression) '=' reduce using rule 3 (primary_expression) ';' reduce using rule 3 (primary_expression)
5 primary_expression → generic_selection • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 5 (primary_expression) INC_OP reduce using rule 5 (primary_expression) DEC_OP reduce using rule 5 (primary_expression) LEFT_OP reduce using rule 5 (primary_expression) RIGHT_OP reduce using rule 5 (primary_expression) LE_OP reduce using rule 5 (primary_expression) GE_OP reduce using rule 5 (primary_expression) EQ_OP reduce using rule 5 (primary_expression) NE_OP reduce using rule 5 (primary_expression) AND_OP reduce using rule 5 (primary_expression) OR_OP reduce using rule 5 (primary_expression) MUL_ASSIGN reduce using rule 5 (primary_expression) DIV_ASSIGN reduce using rule 5 (primary_expression) MOD_ASSIGN reduce using rule 5 (primary_expression) ADD_ASSIGN reduce using rule 5 (primary_expression) SUB_ASSIGN reduce using rule 5 (primary_expression) LEFT_ASSIGN reduce using rule 5 (primary_expression) RIGHT_ASSIGN reduce using rule 5 (primary_expression) AND_ASSIGN reduce using rule 5 (primary_expression) XOR_ASSIGN reduce using rule 5 (primary_expression) OR_ASSIGN reduce using rule 5 (primary_expression) '(' reduce using rule 5 (primary_expression) ')' reduce using rule 5 (primary_expression) ',' reduce using rule 5 (primary_expression) ':' reduce using rule 5 (primary_expression) '[' reduce using rule 5 (primary_expression) ']' reduce using rule 5 (primary_expression) '.' reduce using rule 5 (primary_expression) '}' reduce using rule 5 (primary_expression) '&' reduce using rule 5 (primary_expression) '*' reduce using rule 5 (primary_expression) '+' reduce using rule 5 (primary_expression) '-' reduce using rule 5 (primary_expression) '/' reduce using rule 5 (primary_expression) '%' reduce using rule 5 (primary_expression) '<' reduce using rule 5 (primary_expression) '>' reduce using rule 5 (primary_expression) '^' reduce using rule 5 (primary_expression) '|' reduce using rule 5 (primary_expression) '?' reduce using rule 5 (primary_expression) '=' reduce using rule 5 (primary_expression) ';' reduce using rule 5 (primary_expression)
18 postfix_expression → postfix_expression • '[' expression ']' 19 | postfix_expression • '(' ')' 20 | postfix_expression • '(' argument_expression_list ')' 21 | postfix_expression • '.' IDENTIFIER 22 | postfix_expression • PTR_OP IDENTIFIER 23 | postfix_expression • INC_OP 24 | postfix_expression • DEC_OP 29 unary_expression → postfix_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP shift, and go to state 155 INC_OP shift, and go to state 156 DEC_OP shift, and go to state 157 '(' shift, and go to state 158 '[' shift, and go to state 159 '.' shift, and go to state 160 LEFT_OP reduce using rule 29 (unary_expression) RIGHT_OP reduce using rule 29 (unary_expression) LE_OP reduce using rule 29 (unary_expression) GE_OP reduce using rule 29 (unary_expression) EQ_OP reduce using rule 29 (unary_expression) NE_OP reduce using rule 29 (unary_expression) AND_OP reduce using rule 29 (unary_expression) OR_OP reduce using rule 29 (unary_expression) MUL_ASSIGN reduce using rule 29 (unary_expression) DIV_ASSIGN reduce using rule 29 (unary_expression) MOD_ASSIGN reduce using rule 29 (unary_expression) ADD_ASSIGN reduce using rule 29 (unary_expression) SUB_ASSIGN reduce using rule 29 (unary_expression) LEFT_ASSIGN reduce using rule 29 (unary_expression) RIGHT_ASSIGN reduce using rule 29 (unary_expression) AND_ASSIGN reduce using rule 29 (unary_expression) XOR_ASSIGN reduce using rule 29 (unary_expression) OR_ASSIGN reduce using rule 29 (unary_expression) ')' reduce using rule 29 (unary_expression) ',' reduce using rule 29 (unary_expression) ':' reduce using rule 29 (unary_expression) ']' reduce using rule 29 (unary_expression) '}' reduce using rule 29 (unary_expression) '&' reduce using rule 29 (unary_expression) '*' reduce using rule 29 (unary_expression) '+' reduce using rule 29 (unary_expression) '-' reduce using rule 29 (unary_expression) '/' reduce using rule 29 (unary_expression) '%' reduce using rule 29 (unary_expression) '<' reduce using rule 29 (unary_expression) '>' reduce using rule 29 (unary_expression) '^' reduce using rule 29 (unary_expression) '|' reduce using rule 29 (unary_expression) '?' reduce using rule 29 (unary_expression) '=' reduce using rule 29 (unary_expression) ';' reduce using rule 29 (unary_expression)
42 cast_expression → unary_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] LEFT_OP reduce using rule 42 (cast_expression) RIGHT_OP reduce using rule 42 (cast_expression) LE_OP reduce using rule 42 (cast_expression) GE_OP reduce using rule 42 (cast_expression) EQ_OP reduce using rule 42 (cast_expression) NE_OP reduce using rule 42 (cast_expression) AND_OP reduce using rule 42 (cast_expression) OR_OP reduce using rule 42 (cast_expression) MUL_ASSIGN reduce using rule 42 (cast_expression) DIV_ASSIGN reduce using rule 42 (cast_expression) MOD_ASSIGN reduce using rule 42 (cast_expression) ADD_ASSIGN reduce using rule 42 (cast_expression) SUB_ASSIGN reduce using rule 42 (cast_expression) LEFT_ASSIGN reduce using rule 42 (cast_expression) RIGHT_ASSIGN reduce using rule 42 (cast_expression) AND_ASSIGN reduce using rule 42 (cast_expression) XOR_ASSIGN reduce using rule 42 (cast_expression) OR_ASSIGN reduce using rule 42 (cast_expression) ')' reduce using rule 42 (cast_expression) ',' reduce using rule 42 (cast_expression) ':' reduce using rule 42 (cast_expression) ']' reduce using rule 42 (cast_expression) '}' reduce using rule 42 (cast_expression) '&' reduce using rule 42 (cast_expression) '*' reduce using rule 42 (cast_expression) '+' reduce using rule 42 (cast_expression) '-' reduce using rule 42 (cast_expression) '/' reduce using rule 42 (cast_expression) '%' reduce using rule 42 (cast_expression) '<' reduce using rule 42 (cast_expression) '>' reduce using rule 42 (cast_expression) '^' reduce using rule 42 (cast_expression) '|' reduce using rule 42 (cast_expression) '?' reduce using rule 42 (cast_expression) '=' reduce using rule 42 (cast_expression) ';' reduce using rule 42 (cast_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 32 | unary_operator • cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 161
44 multiplicative_expression → cast_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', ';'] LEFT_OP reduce using rule 44 (multiplicative_expression) RIGHT_OP reduce using rule 44 (multiplicative_expression) LE_OP reduce using rule 44 (multiplicative_expression) GE_OP reduce using rule 44 (multiplicative_expression) EQ_OP reduce using rule 44 (multiplicative_expression) NE_OP reduce using rule 44 (multiplicative_expression) AND_OP reduce using rule 44 (multiplicative_expression) OR_OP reduce using rule 44 (multiplicative_expression) ')' reduce using rule 44 (multiplicative_expression) ',' reduce using rule 44 (multiplicative_expression) ':' reduce using rule 44 (multiplicative_expression) ']' reduce using rule 44 (multiplicative_expression) '}' reduce using rule 44 (multiplicative_expression) '&' reduce using rule 44 (multiplicative_expression) '*' reduce using rule 44 (multiplicative_expression) '+' reduce using rule 44 (multiplicative_expression) '-' reduce using rule 44 (multiplicative_expression) '/' reduce using rule 44 (multiplicative_expression) '%' reduce using rule 44 (multiplicative_expression) '<' reduce using rule 44 (multiplicative_expression) '>' reduce using rule 44 (multiplicative_expression) '^' reduce using rule 44 (multiplicative_expression) '|' reduce using rule 44 (multiplicative_expression) '?' reduce using rule 44 (multiplicative_expression) ';' reduce using rule 44 (multiplicative_expression)
45 multiplicative_expression → multiplicative_expression • '*' cast_expression 46 | multiplicative_expression • '/' cast_expression 47 | multiplicative_expression • '%' cast_expression 48 additive_expression → multiplicative_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '+', '-', '<', '>', '^', '|', '?', ';'] '*' shift, and go to state 162 '/' shift, and go to state 163 '%' shift, and go to state 164 LEFT_OP reduce using rule 48 (additive_expression) RIGHT_OP reduce using rule 48 (additive_expression) LE_OP reduce using rule 48 (additive_expression) GE_OP reduce using rule 48 (additive_expression) EQ_OP reduce using rule 48 (additive_expression) NE_OP reduce using rule 48 (additive_expression) AND_OP reduce using rule 48 (additive_expression) OR_OP reduce using rule 48 (additive_expression) ')' reduce using rule 48 (additive_expression) ',' reduce using rule 48 (additive_expression) ':' reduce using rule 48 (additive_expression) ']' reduce using rule 48 (additive_expression) '}' reduce using rule 48 (additive_expression) '&' reduce using rule 48 (additive_expression) '+' reduce using rule 48 (additive_expression) '-' reduce using rule 48 (additive_expression) '<' reduce using rule 48 (additive_expression) '>' reduce using rule 48 (additive_expression) '^' reduce using rule 48 (additive_expression) '|' reduce using rule 48 (additive_expression) '?' reduce using rule 48 (additive_expression) ';' reduce using rule 48 (additive_expression)
49 additive_expression → additive_expression • '+' multiplicative_expression 50 | additive_expression • '-' multiplicative_expression 51 shift_expression → additive_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] '+' shift, and go to state 165 '-' shift, and go to state 166 LEFT_OP reduce using rule 51 (shift_expression) RIGHT_OP reduce using rule 51 (shift_expression) LE_OP reduce using rule 51 (shift_expression) GE_OP reduce using rule 51 (shift_expression) EQ_OP reduce using rule 51 (shift_expression) NE_OP reduce using rule 51 (shift_expression) AND_OP reduce using rule 51 (shift_expression) OR_OP reduce using rule 51 (shift_expression) ')' reduce using rule 51 (shift_expression) ',' reduce using rule 51 (shift_expression) ':' reduce using rule 51 (shift_expression) ']' reduce using rule 51 (shift_expression) '}' reduce using rule 51 (shift_expression) '&' reduce using rule 51 (shift_expression) '<' reduce using rule 51 (shift_expression) '>' reduce using rule 51 (shift_expression) '^' reduce using rule 51 (shift_expression) '|' reduce using rule 51 (shift_expression) '?' reduce using rule 51 (shift_expression) ';' reduce using rule 51 (shift_expression)
52 shift_expression → shift_expression • LEFT_OP additive_expression 53 | shift_expression • RIGHT_OP additive_expression 54 relational_expression → shift_expression • [LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] LEFT_OP shift, and go to state 167 RIGHT_OP shift, and go to state 168 LE_OP reduce using rule 54 (relational_expression) GE_OP reduce using rule 54 (relational_expression) EQ_OP reduce using rule 54 (relational_expression) NE_OP reduce using rule 54 (relational_expression) AND_OP reduce using rule 54 (relational_expression) OR_OP reduce using rule 54 (relational_expression) ')' reduce using rule 54 (relational_expression) ',' reduce using rule 54 (relational_expression) ':' reduce using rule 54 (relational_expression) ']' reduce using rule 54 (relational_expression) '}' reduce using rule 54 (relational_expression) '&' reduce using rule 54 (relational_expression) '<' reduce using rule 54 (relational_expression) '>' reduce using rule 54 (relational_expression) '^' reduce using rule 54 (relational_expression) '|' reduce using rule 54 (relational_expression) '?' reduce using rule 54 (relational_expression) ';' reduce using rule 54 (relational_expression)
55 relational_expression → relational_expression • '<' shift_expression 56 | relational_expression • '>' shift_expression 57 | relational_expression • LE_OP shift_expression 58 | relational_expression • GE_OP shift_expression 59 equality_expression → relational_expression • [EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '^', '|', '?', ';'] LE_OP shift, and go to state 169 GE_OP shift, and go to state 170 '<' shift, and go to state 171 '>' shift, and go to state 172 EQ_OP reduce using rule 59 (equality_expression) NE_OP reduce using rule 59 (equality_expression) AND_OP reduce using rule 59 (equality_expression) OR_OP reduce using rule 59 (equality_expression) ')' reduce using rule 59 (equality_expression) ',' reduce using rule 59 (equality_expression) ':' reduce using rule 59 (equality_expression) ']' reduce using rule 59 (equality_expression) '}' reduce using rule 59 (equality_expression) '&' reduce using rule 59 (equality_expression) '^' reduce using rule 59 (equality_expression) '|' reduce using rule 59 (equality_expression) '?' reduce using rule 59 (equality_expression) ';' reduce using rule 59 (equality_expression)
60 equality_expression → equality_expression • EQ_OP relational_expression 61 | equality_expression • NE_OP relational_expression 62 and_expression → equality_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '^', '|', '?', ';'] EQ_OP shift, and go to state 173 NE_OP shift, and go to state 174 AND_OP reduce using rule 62 (and_expression) OR_OP reduce using rule 62 (and_expression) ')' reduce using rule 62 (and_expression) ',' reduce using rule 62 (and_expression) ':' reduce using rule 62 (and_expression) ']' reduce using rule 62 (and_expression) '}' reduce using rule 62 (and_expression) '&' reduce using rule 62 (and_expression) '^' reduce using rule 62 (and_expression) '|' reduce using rule 62 (and_expression) '?' reduce using rule 62 (and_expression) ';' reduce using rule 62 (and_expression)
63 and_expression → and_expression • '&' equality_expression 64 exclusive_or_expression → and_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '^', '|', '?', ';'] '&' shift, and go to state 175 AND_OP reduce using rule 64 (exclusive_or_expression) OR_OP reduce using rule 64 (exclusive_or_expression) ')' reduce using rule 64 (exclusive_or_expression) ',' reduce using rule 64 (exclusive_or_expression) ':' reduce using rule 64 (exclusive_or_expression) ']' reduce using rule 64 (exclusive_or_expression) '}' reduce using rule 64 (exclusive_or_expression) '^' reduce using rule 64 (exclusive_or_expression) '|' reduce using rule 64 (exclusive_or_expression) '?' reduce using rule 64 (exclusive_or_expression) ';' reduce using rule 64 (exclusive_or_expression)
65 exclusive_or_expression → exclusive_or_expression • '^' and_expression 66 inclusive_or_expression → exclusive_or_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '|', '?', ';'] '^' shift, and go to state 176 AND_OP reduce using rule 66 (inclusive_or_expression) OR_OP reduce using rule 66 (inclusive_or_expression) ')' reduce using rule 66 (inclusive_or_expression) ',' reduce using rule 66 (inclusive_or_expression) ':' reduce using rule 66 (inclusive_or_expression) ']' reduce using rule 66 (inclusive_or_expression) '}' reduce using rule 66 (inclusive_or_expression) '|' reduce using rule 66 (inclusive_or_expression) '?' reduce using rule 66 (inclusive_or_expression) ';' reduce using rule 66 (inclusive_or_expression)
67 inclusive_or_expression → inclusive_or_expression • '|' exclusive_or_expression 68 logical_and_expression → inclusive_or_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '?', ';'] '|' shift, and go to state 177 AND_OP reduce using rule 68 (logical_and_expression) OR_OP reduce using rule 68 (logical_and_expression) ')' reduce using rule 68 (logical_and_expression) ',' reduce using rule 68 (logical_and_expression) ':' reduce using rule 68 (logical_and_expression) ']' reduce using rule 68 (logical_and_expression) '}' reduce using rule 68 (logical_and_expression) '?' reduce using rule 68 (logical_and_expression) ';' reduce using rule 68 (logical_and_expression)
69 logical_and_expression → logical_and_expression • AND_OP inclusive_or_expression 70 logical_or_expression → logical_and_expression • [OR_OP, ')', ',', ':', ']', '}', '?', ';'] AND_OP shift, and go to state 178 OR_OP reduce using rule 70 (logical_or_expression) ')' reduce using rule 70 (logical_or_expression) ',' reduce using rule 70 (logical_or_expression) ':' reduce using rule 70 (logical_or_expression) ']' reduce using rule 70 (logical_or_expression) '}' reduce using rule 70 (logical_or_expression) '?' reduce using rule 70 (logical_or_expression) ';' reduce using rule 70 (logical_or_expression)
71 logical_or_expression → logical_or_expression • OR_OP logical_and_expression 72 conditional_expression → logical_or_expression • [')', ',', ':', ']', '}', ';'] 73 | logical_or_expression • '?' expression ':' conditional_expression OR_OP shift, and go to state 179 '?' shift, and go to state 180 ')' reduce using rule 72 (conditional_expression) ',' reduce using rule 72 (conditional_expression) ':' reduce using rule 72 (conditional_expression) ']' reduce using rule 72 (conditional_expression) '}' reduce using rule 72 (conditional_expression) ';' reduce using rule 72 (conditional_expression)
89 constant_expression → conditional_expression • [')', ',', ':', ']', '}', ';'] ')' reduce using rule 89 (constant_expression) ',' reduce using rule 89 (constant_expression) ':' reduce using rule 89 (constant_expression) ']' reduce using rule 89 (constant_expression) '}' reduce using rule 89 (constant_expression) ';' reduce using rule 89 (constant_expression)
165 alignment_specifier → ALIGNAS '(' constant_expression • ')' ')' shift, and go to state 181
113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 139 | type_specifier • specifier_qualifier_list 140 | • type_specifier 140 | type_specifier • [IDENTIFIER, '(', ')', ':', '[', '*', ';'] 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 IDENTIFIER reduce using rule 140 (specifier_qualifier_list) '(' reduce using rule 140 (specifier_qualifier_list) ')' reduce using rule 140 (specifier_qualifier_list) ':' reduce using rule 140 (specifier_qualifier_list) '[' reduce using rule 140 (specifier_qualifier_list) '*' reduce using rule 140 (specifier_qualifier_list) ';' reduce using rule 140 (specifier_qualifier_list) type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 182 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114
182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' 197 type_name → specifier_qualifier_list • abstract_declarator 198 | specifier_qualifier_list • [')', ':'] 199 abstract_declarator → • pointer direct_abstract_declarator 200 | • pointer 201 | • direct_abstract_declarator 202 direct_abstract_declarator → • '(' abstract_declarator ')' 203 | • '[' ']' 204 | • '[' '*' ']' 205 | • '[' STATIC type_qualifier_list assignment_expression ']' 206 | • '[' STATIC assignment_expression ']' 207 | • '[' type_qualifier_list STATIC assignment_expression ']' 208 | • '[' type_qualifier_list assignment_expression ']' 209 | • '[' type_qualifier_list ']' 210 | • '[' assignment_expression ']' 211 | • direct_abstract_declarator '[' ']' 212 | • direct_abstract_declarator '[' '*' ']' 213 | • direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' 214 | • direct_abstract_declarator '[' STATIC assignment_expression ']' 215 | • direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' 216 | • direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' 217 | • direct_abstract_declarator '[' type_qualifier_list ']' 218 | • direct_abstract_declarator '[' assignment_expression ']' 219 | • '(' ')' 220 | • '(' parameter_type_list ')' 221 | • direct_abstract_declarator '(' ')' 222 | • direct_abstract_declarator '(' parameter_type_list ')' '(' shift, and go to state 183 '[' shift, and go to state 184 '*' shift, and go to state 53 ')' reduce using rule 198 (type_name) ':' reduce using rule 198 (type_name) pointer go to state 185 abstract_declarator go to state 186 direct_abstract_declarator go to state 187
113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 141 | type_qualifier • specifier_qualifier_list 142 | • type_qualifier 142 | type_qualifier • [IDENTIFIER, '(', ')', ':', '[', '*', ';'] 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 IDENTIFIER reduce using rule 142 (specifier_qualifier_list) '(' reduce using rule 142 (specifier_qualifier_list) ')' reduce using rule 142 (specifier_qualifier_list) ':' reduce using rule 142 (specifier_qualifier_list) '[' reduce using rule 142 (specifier_qualifier_list) '*' reduce using rule 142 (specifier_qualifier_list) ';' reduce using rule 142 (specifier_qualifier_list) type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 188 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114
164 alignment_specifier → ALIGNAS '(' type_name • ')' ')' shift, and go to state 189
157 atomic_type_specifier → ATOMIC '(' type_name • ')' ')' shift, and go to state 190
235 static_assert_declaration → STATIC_ASSERT '(' constant_expression • ',' STRING_LITERAL ')' ';' ',' shift, and go to state 191
169 direct_declarator → '(' declarator • ')' ')' shift, and go to state 192
161 type_qualifier → ATOMIC • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, STATIC, CONST, RESTRICT, VOLATILE, ALIGNOF, ATOMIC, GENERIC, '(', ')', ',', ':', '[', ']', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 161 (type_qualifier) I_CONSTANT reduce using rule 161 (type_qualifier) F_CONSTANT reduce using rule 161 (type_qualifier) STRING_LITERAL reduce using rule 161 (type_qualifier) FUNC_NAME reduce using rule 161 (type_qualifier) SIZEOF reduce using rule 161 (type_qualifier) INC_OP reduce using rule 161 (type_qualifier) DEC_OP reduce using rule 161 (type_qualifier) ENUMERATION_CONSTANT reduce using rule 161 (type_qualifier) STATIC reduce using rule 161 (type_qualifier) CONST reduce using rule 161 (type_qualifier) RESTRICT reduce using rule 161 (type_qualifier) VOLATILE reduce using rule 161 (type_qualifier) ALIGNOF reduce using rule 161 (type_qualifier) ATOMIC reduce using rule 161 (type_qualifier) GENERIC reduce using rule 161 (type_qualifier) '(' reduce using rule 161 (type_qualifier) ')' reduce using rule 161 (type_qualifier) ',' reduce using rule 161 (type_qualifier) ':' reduce using rule 161 (type_qualifier) '[' reduce using rule 161 (type_qualifier) ']' reduce using rule 161 (type_qualifier) '&' reduce using rule 161 (type_qualifier) '*' reduce using rule 161 (type_qualifier) '+' reduce using rule 161 (type_qualifier) '-' reduce using rule 161 (type_qualifier) '~' reduce using rule 161 (type_qualifier) '!' reduce using rule 161 (type_qualifier)
186 type_qualifier_list → type_qualifier • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, STATIC, CONST, RESTRICT, VOLATILE, ALIGNOF, ATOMIC, GENERIC, '(', ')', ',', ':', '[', ']', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 186 (type_qualifier_list) I_CONSTANT reduce using rule 186 (type_qualifier_list) F_CONSTANT reduce using rule 186 (type_qualifier_list) STRING_LITERAL reduce using rule 186 (type_qualifier_list) FUNC_NAME reduce using rule 186 (type_qualifier_list) SIZEOF reduce using rule 186 (type_qualifier_list) INC_OP reduce using rule 186 (type_qualifier_list) DEC_OP reduce using rule 186 (type_qualifier_list) ENUMERATION_CONSTANT reduce using rule 186 (type_qualifier_list) STATIC reduce using rule 186 (type_qualifier_list) CONST reduce using rule 186 (type_qualifier_list) RESTRICT reduce using rule 186 (type_qualifier_list) VOLATILE reduce using rule 186 (type_qualifier_list) ALIGNOF reduce using rule 186 (type_qualifier_list) ATOMIC reduce using rule 186 (type_qualifier_list) GENERIC reduce using rule 186 (type_qualifier_list) '(' reduce using rule 186 (type_qualifier_list) ')' reduce using rule 186 (type_qualifier_list) ',' reduce using rule 186 (type_qualifier_list) ':' reduce using rule 186 (type_qualifier_list) '[' reduce using rule 186 (type_qualifier_list) ']' reduce using rule 186 (type_qualifier_list) '&' reduce using rule 186 (type_qualifier_list) '*' reduce using rule 186 (type_qualifier_list) '+' reduce using rule 186 (type_qualifier_list) '-' reduce using rule 186 (type_qualifier_list) '~' reduce using rule 186 (type_qualifier_list) '!' reduce using rule 186 (type_qualifier_list)
184 pointer → '*' pointer • [IDENTIFIER, '(', ')', ',', ':', '['] IDENTIFIER reduce using rule 184 (pointer) '(' reduce using rule 184 (pointer) ')' reduce using rule 184 (pointer) ',' reduce using rule 184 (pointer) ':' reduce using rule 184 (pointer) '[' reduce using rule 184 (pointer)
158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 182 pointer → • '*' type_qualifier_list pointer 182 | '*' type_qualifier_list • pointer 183 | • '*' type_qualifier_list 183 | '*' type_qualifier_list • [IDENTIFIER, '(', ')', ',', ':', '['] 184 | • '*' pointer 185 | • '*' 187 type_qualifier_list → type_qualifier_list • type_qualifier CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ATOMIC shift, and go to state 119 '*' shift, and go to state 53 IDENTIFIER reduce using rule 183 (pointer) '(' reduce using rule 183 (pointer) ')' reduce using rule 183 (pointer) ',' reduce using rule 183 (pointer) ':' reduce using rule 183 (pointer) '[' reduce using rule 183 (pointer) type_qualifier go to state 193 pointer go to state 194
104 init_declarator_list → init_declarator_list ',' • init_declarator 105 init_declarator → • declarator '=' initializer 106 | • declarator 166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 52 '*' shift, and go to state 53 init_declarator go to state 195 declarator go to state 196 direct_declarator go to state 58 pointer go to state 59
91 declaration → declaration_specifiers init_declarator_list ';' • [$end, IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] $end reduce using rule 91 (declaration) IDENTIFIER reduce using rule 91 (declaration) I_CONSTANT reduce using rule 91 (declaration) F_CONSTANT reduce using rule 91 (declaration) STRING_LITERAL reduce using rule 91 (declaration) FUNC_NAME reduce using rule 91 (declaration) SIZEOF reduce using rule 91 (declaration) INC_OP reduce using rule 91 (declaration) DEC_OP reduce using rule 91 (declaration) TYPEDEF_NAME reduce using rule 91 (declaration) ENUMERATION_CONSTANT reduce using rule 91 (declaration) TYPEDEF reduce using rule 91 (declaration) EXTERN reduce using rule 91 (declaration) STATIC reduce using rule 91 (declaration) AUTO reduce using rule 91 (declaration) REGISTER reduce using rule 91 (declaration) INLINE reduce using rule 91 (declaration) CONST reduce using rule 91 (declaration) RESTRICT reduce using rule 91 (declaration) VOLATILE reduce using rule 91 (declaration) BOOL reduce using rule 91 (declaration) CHAR reduce using rule 91 (declaration) SHORT reduce using rule 91 (declaration) INT reduce using rule 91 (declaration) LONG reduce using rule 91 (declaration) SIGNED reduce using rule 91 (declaration) UNSIGNED reduce using rule 91 (declaration) FLOAT reduce using rule 91 (declaration) DOUBLE reduce using rule 91 (declaration) VOID reduce using rule 91 (declaration) COMPLEX reduce using rule 91 (declaration) IMAGINARY reduce using rule 91 (declaration) STRUCT reduce using rule 91 (declaration) UNION reduce using rule 91 (declaration) ENUM reduce using rule 91 (declaration) CASE reduce using rule 91 (declaration) DEFAULT reduce using rule 91 (declaration) IF reduce using rule 91 (declaration) SWITCH reduce using rule 91 (declaration) WHILE reduce using rule 91 (declaration) DO reduce using rule 91 (declaration) FOR reduce using rule 91 (declaration) GOTO reduce using rule 91 (declaration) CONTINUE reduce using rule 91 (declaration) BREAK reduce using rule 91 (declaration) RETURN reduce using rule 91 (declaration) ALIGNAS reduce using rule 91 (declaration) ALIGNOF reduce using rule 91 (declaration) ATOMIC reduce using rule 91 (declaration) GENERIC reduce using rule 91 (declaration) NORETURN reduce using rule 91 (declaration) STATIC_ASSERT reduce using rule 91 (declaration) THREAD_LOCAL reduce using rule 91 (declaration) '(' reduce using rule 91 (declaration) '{' reduce using rule 91 (declaration) '}' reduce using rule 91 (declaration) '&' reduce using rule 91 (declaration) '*' reduce using rule 91 (declaration) '+' reduce using rule 91 (declaration) '-' reduce using rule 91 (declaration) '~' reduce using rule 91 (declaration) '!' reduce using rule 91 (declaration) ';' reduce using rule 91 (declaration)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 90 declaration → • declaration_specifiers ';' 91 | • declaration_specifiers init_declarator_list ';' 92 | • static_assert_declaration 93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 245 | '{' • '}' 246 | • '{' block_item_list '}' 246 | '{' • block_item_list '}' 247 block_item_list → • block_item 248 | • block_item_list block_item 249 block_item → • declaration 250 | • statement 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 TYPEDEF_NAME shift, and go to state 1 ENUMERATION_CONSTANT shift, and go to state 82 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNAS shift, and go to state 26 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 27 GENERIC shift, and go to state 84 NORETURN shift, and go to state 28 STATIC_ASSERT shift, and go to state 29 THREAD_LOCAL shift, and go to state 30 '(' shift, and go to state 85 '{' shift, and go to state 125 '}' shift, and go to state 209 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 declaration go to state 212 declaration_specifiers go to state 128 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 static_assert_declaration go to state 42 statement go to state 213 labeled_statement go to state 214 compound_statement go to state 215 block_item_list go to state 216 block_item go to state 217 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 105 init_declarator → declarator '=' • initializer 223 initializer → • '{' initializer_list '}' 224 | • '{' initializer_list ',' '}' 225 | • assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 222 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 223 initializer go to state 224
273 declaration_list → declaration • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '{'] TYPEDEF_NAME reduce using rule 273 (declaration_list) TYPEDEF reduce using rule 273 (declaration_list) EXTERN reduce using rule 273 (declaration_list) STATIC reduce using rule 273 (declaration_list) AUTO reduce using rule 273 (declaration_list) REGISTER reduce using rule 273 (declaration_list) INLINE reduce using rule 273 (declaration_list) CONST reduce using rule 273 (declaration_list) RESTRICT reduce using rule 273 (declaration_list) VOLATILE reduce using rule 273 (declaration_list) BOOL reduce using rule 273 (declaration_list) CHAR reduce using rule 273 (declaration_list) SHORT reduce using rule 273 (declaration_list) INT reduce using rule 273 (declaration_list) LONG reduce using rule 273 (declaration_list) SIGNED reduce using rule 273 (declaration_list) UNSIGNED reduce using rule 273 (declaration_list) FLOAT reduce using rule 273 (declaration_list) DOUBLE reduce using rule 273 (declaration_list) VOID reduce using rule 273 (declaration_list) COMPLEX reduce using rule 273 (declaration_list) IMAGINARY reduce using rule 273 (declaration_list) STRUCT reduce using rule 273 (declaration_list) UNION reduce using rule 273 (declaration_list) ENUM reduce using rule 273 (declaration_list) ALIGNAS reduce using rule 273 (declaration_list) ATOMIC reduce using rule 273 (declaration_list) NORETURN reduce using rule 273 (declaration_list) STATIC_ASSERT reduce using rule 273 (declaration_list) THREAD_LOCAL reduce using rule 273 (declaration_list) '{' reduce using rule 273 (declaration_list)
90 declaration → declaration_specifiers • ';' 91 | declaration_specifiers • init_declarator_list ';' 103 init_declarator_list → • init_declarator 104 | • init_declarator_list ',' init_declarator 105 init_declarator → • declarator '=' initializer 106 | • declarator 166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 52 '*' shift, and go to state 53 ';' shift, and go to state 54 init_declarator_list go to state 55 init_declarator go to state 56 declarator go to state 196 direct_declarator go to state 58 pointer go to state 59
272 function_definition → declaration_specifiers declarator compound_statement • [$end, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL] $end reduce using rule 272 (function_definition) TYPEDEF_NAME reduce using rule 272 (function_definition) TYPEDEF reduce using rule 272 (function_definition) EXTERN reduce using rule 272 (function_definition) STATIC reduce using rule 272 (function_definition) AUTO reduce using rule 272 (function_definition) REGISTER reduce using rule 272 (function_definition) INLINE reduce using rule 272 (function_definition) CONST reduce using rule 272 (function_definition) RESTRICT reduce using rule 272 (function_definition) VOLATILE reduce using rule 272 (function_definition) BOOL reduce using rule 272 (function_definition) CHAR reduce using rule 272 (function_definition) SHORT reduce using rule 272 (function_definition) INT reduce using rule 272 (function_definition) LONG reduce using rule 272 (function_definition) SIGNED reduce using rule 272 (function_definition) UNSIGNED reduce using rule 272 (function_definition) FLOAT reduce using rule 272 (function_definition) DOUBLE reduce using rule 272 (function_definition) VOID reduce using rule 272 (function_definition) COMPLEX reduce using rule 272 (function_definition) IMAGINARY reduce using rule 272 (function_definition) STRUCT reduce using rule 272 (function_definition) UNION reduce using rule 272 (function_definition) ENUM reduce using rule 272 (function_definition) ALIGNAS reduce using rule 272 (function_definition) ATOMIC reduce using rule 272 (function_definition) NORETURN reduce using rule 272 (function_definition) STATIC_ASSERT reduce using rule 272 (function_definition) THREAD_LOCAL reduce using rule 272 (function_definition)
90 declaration → • declaration_specifiers ';' 91 | • declaration_specifiers init_declarator_list ';' 92 | • static_assert_declaration 93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 271 function_definition → declaration_specifiers declarator declaration_list • compound_statement 274 declaration_list → declaration_list • declaration TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 STATIC_ASSERT shift, and go to state 29 THREAD_LOCAL shift, and go to state 30 '{' shift, and go to state 125 declaration go to state 225 declaration_specifiers go to state 128 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 static_assert_declaration go to state 42 compound_statement go to state 226
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 179 direct_declarator → direct_declarator '(' • parameter_type_list ')' 180 | direct_declarator '(' • ')' 181 | direct_declarator '(' • identifier_list ')' 188 parameter_type_list → • parameter_list ',' ELLIPSIS 189 | • parameter_list 190 parameter_list → • parameter_declaration 191 | • parameter_list ',' parameter_declaration 192 parameter_declaration → • declaration_specifiers declarator 193 | • declaration_specifiers abstract_declarator 194 | • declaration_specifiers 195 identifier_list → • IDENTIFIER 196 | • identifier_list ',' IDENTIFIER IDENTIFIER shift, and go to state 227 TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 ')' shift, and go to state 228 declaration_specifiers go to state 229 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 parameter_type_list go to state 230 parameter_list go to state 231 parameter_declaration go to state 232 identifier_list go to state 233
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 170 direct_declarator → direct_declarator '[' • ']' 171 | direct_declarator '[' • '*' ']' 172 | direct_declarator '[' • STATIC type_qualifier_list assignment_expression ']' 173 | direct_declarator '[' • STATIC assignment_expression ']' 174 | direct_declarator '[' • type_qualifier_list '*' ']' 175 | direct_declarator '[' • type_qualifier_list STATIC assignment_expression ']' 176 | direct_declarator '[' • type_qualifier_list assignment_expression ']' 177 | direct_declarator '[' • type_qualifier_list ']' 178 | direct_declarator '[' • assignment_expression ']' 186 type_qualifier_list → • type_qualifier 187 | • type_qualifier_list type_qualifier IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 STATIC shift, and go to state 234 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ']' shift, and go to state 235 '&' shift, and go to state 86 '*' shift, and go to state 236 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 237 type_qualifier go to state 120 type_qualifier_list go to state 238
166 declarator → pointer direct_declarator • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, ')', ',', ':', '{', '=', ';'] 170 direct_declarator → direct_declarator • '[' ']' 171 | direct_declarator • '[' '*' ']' 172 | direct_declarator • '[' STATIC type_qualifier_list assignment_expression ']' 173 | direct_declarator • '[' STATIC assignment_expression ']' 174 | direct_declarator • '[' type_qualifier_list '*' ']' 175 | direct_declarator • '[' type_qualifier_list STATIC assignment_expression ']' 176 | direct_declarator • '[' type_qualifier_list assignment_expression ']' 177 | direct_declarator • '[' type_qualifier_list ']' 178 | direct_declarator • '[' assignment_expression ']' 179 | direct_declarator • '(' parameter_type_list ')' 180 | direct_declarator • '(' ')' 181 | direct_declarator • '(' identifier_list ')' '(' shift, and go to state 131 '[' shift, and go to state 132 TYPEDEF_NAME reduce using rule 166 (declarator) TYPEDEF reduce using rule 166 (declarator) EXTERN reduce using rule 166 (declarator) STATIC reduce using rule 166 (declarator) AUTO reduce using rule 166 (declarator) REGISTER reduce using rule 166 (declarator) INLINE reduce using rule 166 (declarator) CONST reduce using rule 166 (declarator) RESTRICT reduce using rule 166 (declarator) VOLATILE reduce using rule 166 (declarator) BOOL reduce using rule 166 (declarator) CHAR reduce using rule 166 (declarator) SHORT reduce using rule 166 (declarator) INT reduce using rule 166 (declarator) LONG reduce using rule 166 (declarator) SIGNED reduce using rule 166 (declarator) UNSIGNED reduce using rule 166 (declarator) FLOAT reduce using rule 166 (declarator) DOUBLE reduce using rule 166 (declarator) VOID reduce using rule 166 (declarator) COMPLEX reduce using rule 166 (declarator) IMAGINARY reduce using rule 166 (declarator) STRUCT reduce using rule 166 (declarator) UNION reduce using rule 166 (declarator) ENUM reduce using rule 166 (declarator) ALIGNAS reduce using rule 166 (declarator) ATOMIC reduce using rule 166 (declarator) NORETURN reduce using rule 166 (declarator) STATIC_ASSERT reduce using rule 166 (declarator) THREAD_LOCAL reduce using rule 166 (declarator) ')' reduce using rule 166 (declarator) ',' reduce using rule 166 (declarator) ':' reduce using rule 166 (declarator) '{' reduce using rule 166 (declarator) '=' reduce using rule 166 (declarator) ';' reduce using rule 166 (declarator)
113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 130 | struct_or_union IDENTIFIER '{' • struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 134 struct_declaration_list → • struct_declaration 135 | • struct_declaration_list struct_declaration 136 struct_declaration → • specifier_qualifier_list ';' 137 | • specifier_qualifier_list struct_declarator_list ';' 138 | • static_assert_declaration 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 STATIC_ASSERT shift, and go to state 29 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 struct_declaration_list go to state 239 struct_declaration go to state 136 specifier_qualifier_list go to state 137 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 static_assert_declaration go to state 138
113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 129 | struct_or_union '{' struct_declaration_list • '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 135 struct_declaration_list → struct_declaration_list • struct_declaration 136 struct_declaration → • specifier_qualifier_list ';' 137 | • specifier_qualifier_list struct_declarator_list ';' 138 | • static_assert_declaration 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 STATIC_ASSERT shift, and go to state 29 '}' shift, and go to state 240 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 struct_declaration go to state 241 specifier_qualifier_list go to state 137 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 static_assert_declaration go to state 138
134 struct_declaration_list → struct_declaration • [TYPEDEF_NAME, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ATOMIC, STATIC_ASSERT, '}'] TYPEDEF_NAME reduce using rule 134 (struct_declaration_list) CONST reduce using rule 134 (struct_declaration_list) RESTRICT reduce using rule 134 (struct_declaration_list) VOLATILE reduce using rule 134 (struct_declaration_list) BOOL reduce using rule 134 (struct_declaration_list) CHAR reduce using rule 134 (struct_declaration_list) SHORT reduce using rule 134 (struct_declaration_list) INT reduce using rule 134 (struct_declaration_list) LONG reduce using rule 134 (struct_declaration_list) SIGNED reduce using rule 134 (struct_declaration_list) UNSIGNED reduce using rule 134 (struct_declaration_list) FLOAT reduce using rule 134 (struct_declaration_list) DOUBLE reduce using rule 134 (struct_declaration_list) VOID reduce using rule 134 (struct_declaration_list) COMPLEX reduce using rule 134 (struct_declaration_list) IMAGINARY reduce using rule 134 (struct_declaration_list) STRUCT reduce using rule 134 (struct_declaration_list) UNION reduce using rule 134 (struct_declaration_list) ENUM reduce using rule 134 (struct_declaration_list) ATOMIC reduce using rule 134 (struct_declaration_list) STATIC_ASSERT reduce using rule 134 (struct_declaration_list) '}' reduce using rule 134 (struct_declaration_list)
136 struct_declaration → specifier_qualifier_list • ';' 137 | specifier_qualifier_list • struct_declarator_list ';' 143 struct_declarator_list → • struct_declarator 144 | • struct_declarator_list ',' struct_declarator 145 struct_declarator → • ':' constant_expression 146 | • declarator ':' constant_expression 147 | • declarator 166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 52 ':' shift, and go to state 242 '*' shift, and go to state 53 ';' shift, and go to state 243 struct_declarator_list go to state 244 struct_declarator go to state 245 declarator go to state 246 direct_declarator go to state 58 pointer go to state 59
138 struct_declaration → static_assert_declaration • [TYPEDEF_NAME, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ATOMIC, STATIC_ASSERT, '}'] TYPEDEF_NAME reduce using rule 138 (struct_declaration) CONST reduce using rule 138 (struct_declaration) RESTRICT reduce using rule 138 (struct_declaration) VOLATILE reduce using rule 138 (struct_declaration) BOOL reduce using rule 138 (struct_declaration) CHAR reduce using rule 138 (struct_declaration) SHORT reduce using rule 138 (struct_declaration) INT reduce using rule 138 (struct_declaration) LONG reduce using rule 138 (struct_declaration) SIGNED reduce using rule 138 (struct_declaration) UNSIGNED reduce using rule 138 (struct_declaration) FLOAT reduce using rule 138 (struct_declaration) DOUBLE reduce using rule 138 (struct_declaration) VOID reduce using rule 138 (struct_declaration) COMPLEX reduce using rule 138 (struct_declaration) IMAGINARY reduce using rule 138 (struct_declaration) STRUCT reduce using rule 138 (struct_declaration) UNION reduce using rule 138 (struct_declaration) ENUM reduce using rule 138 (struct_declaration) ATOMIC reduce using rule 138 (struct_declaration) STATIC_ASSERT reduce using rule 138 (struct_declaration) '}' reduce using rule 138 (struct_declaration)
150 enum_specifier → ENUM IDENTIFIER '{' enumerator_list • '}' 151 | ENUM IDENTIFIER '{' enumerator_list • ',' '}' 154 enumerator_list → enumerator_list • ',' enumerator ',' shift, and go to state 247 '}' shift, and go to state 248
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 89 constant_expression → • conditional_expression 155 enumerator → enumeration_constant '=' • constant_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 110 constant_expression go to state 249
9 enumeration_constant → • IDENTIFIER 149 enum_specifier → ENUM '{' enumerator_list ',' • '}' 154 enumerator_list → enumerator_list ',' • enumerator 155 enumerator → • enumeration_constant '=' constant_expression 156 | • enumeration_constant IDENTIFIER shift, and go to state 70 '}' shift, and go to state 250 enumeration_constant go to state 71 enumerator go to state 251
148 enum_specifier → ENUM '{' enumerator_list '}' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 148 (enum_specifier) TYPEDEF_NAME reduce using rule 148 (enum_specifier) TYPEDEF reduce using rule 148 (enum_specifier) EXTERN reduce using rule 148 (enum_specifier) STATIC reduce using rule 148 (enum_specifier) AUTO reduce using rule 148 (enum_specifier) REGISTER reduce using rule 148 (enum_specifier) INLINE reduce using rule 148 (enum_specifier) CONST reduce using rule 148 (enum_specifier) RESTRICT reduce using rule 148 (enum_specifier) VOLATILE reduce using rule 148 (enum_specifier) BOOL reduce using rule 148 (enum_specifier) CHAR reduce using rule 148 (enum_specifier) SHORT reduce using rule 148 (enum_specifier) INT reduce using rule 148 (enum_specifier) LONG reduce using rule 148 (enum_specifier) SIGNED reduce using rule 148 (enum_specifier) UNSIGNED reduce using rule 148 (enum_specifier) FLOAT reduce using rule 148 (enum_specifier) DOUBLE reduce using rule 148 (enum_specifier) VOID reduce using rule 148 (enum_specifier) COMPLEX reduce using rule 148 (enum_specifier) IMAGINARY reduce using rule 148 (enum_specifier) STRUCT reduce using rule 148 (enum_specifier) UNION reduce using rule 148 (enum_specifier) ENUM reduce using rule 148 (enum_specifier) ALIGNAS reduce using rule 148 (enum_specifier) ATOMIC reduce using rule 148 (enum_specifier) NORETURN reduce using rule 148 (enum_specifier) THREAD_LOCAL reduce using rule 148 (enum_specifier) '(' reduce using rule 148 (enum_specifier) ')' reduce using rule 148 (enum_specifier) ',' reduce using rule 148 (enum_specifier) ':' reduce using rule 148 (enum_specifier) '[' reduce using rule 148 (enum_specifier) '*' reduce using rule 148 (enum_specifier) ';' reduce using rule 148 (enum_specifier)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 4 | '(' • expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 25 | '(' • type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 26 | '(' • type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 34 | SIZEOF '(' • type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 TYPEDEF_NAME shift, and go to state 1 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 27 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 153 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 252
33 unary_expression → SIZEOF unary_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] LEFT_OP reduce using rule 33 (unary_expression) RIGHT_OP reduce using rule 33 (unary_expression) LE_OP reduce using rule 33 (unary_expression) GE_OP reduce using rule 33 (unary_expression) EQ_OP reduce using rule 33 (unary_expression) NE_OP reduce using rule 33 (unary_expression) AND_OP reduce using rule 33 (unary_expression) OR_OP reduce using rule 33 (unary_expression) MUL_ASSIGN reduce using rule 33 (unary_expression) DIV_ASSIGN reduce using rule 33 (unary_expression) MOD_ASSIGN reduce using rule 33 (unary_expression) ADD_ASSIGN reduce using rule 33 (unary_expression) SUB_ASSIGN reduce using rule 33 (unary_expression) LEFT_ASSIGN reduce using rule 33 (unary_expression) RIGHT_ASSIGN reduce using rule 33 (unary_expression) AND_ASSIGN reduce using rule 33 (unary_expression) XOR_ASSIGN reduce using rule 33 (unary_expression) OR_ASSIGN reduce using rule 33 (unary_expression) ')' reduce using rule 33 (unary_expression) ',' reduce using rule 33 (unary_expression) ':' reduce using rule 33 (unary_expression) ']' reduce using rule 33 (unary_expression) '}' reduce using rule 33 (unary_expression) '&' reduce using rule 33 (unary_expression) '*' reduce using rule 33 (unary_expression) '+' reduce using rule 33 (unary_expression) '-' reduce using rule 33 (unary_expression) '/' reduce using rule 33 (unary_expression) '%' reduce using rule 33 (unary_expression) '<' reduce using rule 33 (unary_expression) '>' reduce using rule 33 (unary_expression) '^' reduce using rule 33 (unary_expression) '|' reduce using rule 33 (unary_expression) '?' reduce using rule 33 (unary_expression) '=' reduce using rule 33 (unary_expression) ';' reduce using rule 33 (unary_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 4 | '(' • expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 25 | '(' • type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 26 | '(' • type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 TYPEDEF_NAME shift, and go to state 1 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 27 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 153 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 253
30 unary_expression → INC_OP unary_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] LEFT_OP reduce using rule 30 (unary_expression) RIGHT_OP reduce using rule 30 (unary_expression) LE_OP reduce using rule 30 (unary_expression) GE_OP reduce using rule 30 (unary_expression) EQ_OP reduce using rule 30 (unary_expression) NE_OP reduce using rule 30 (unary_expression) AND_OP reduce using rule 30 (unary_expression) OR_OP reduce using rule 30 (unary_expression) MUL_ASSIGN reduce using rule 30 (unary_expression) DIV_ASSIGN reduce using rule 30 (unary_expression) MOD_ASSIGN reduce using rule 30 (unary_expression) ADD_ASSIGN reduce using rule 30 (unary_expression) SUB_ASSIGN reduce using rule 30 (unary_expression) LEFT_ASSIGN reduce using rule 30 (unary_expression) RIGHT_ASSIGN reduce using rule 30 (unary_expression) AND_ASSIGN reduce using rule 30 (unary_expression) XOR_ASSIGN reduce using rule 30 (unary_expression) OR_ASSIGN reduce using rule 30 (unary_expression) ')' reduce using rule 30 (unary_expression) ',' reduce using rule 30 (unary_expression) ':' reduce using rule 30 (unary_expression) ']' reduce using rule 30 (unary_expression) '}' reduce using rule 30 (unary_expression) '&' reduce using rule 30 (unary_expression) '*' reduce using rule 30 (unary_expression) '+' reduce using rule 30 (unary_expression) '-' reduce using rule 30 (unary_expression) '/' reduce using rule 30 (unary_expression) '%' reduce using rule 30 (unary_expression) '<' reduce using rule 30 (unary_expression) '>' reduce using rule 30 (unary_expression) '^' reduce using rule 30 (unary_expression) '|' reduce using rule 30 (unary_expression) '?' reduce using rule 30 (unary_expression) '=' reduce using rule 30 (unary_expression) ';' reduce using rule 30 (unary_expression)
31 unary_expression → DEC_OP unary_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] LEFT_OP reduce using rule 31 (unary_expression) RIGHT_OP reduce using rule 31 (unary_expression) LE_OP reduce using rule 31 (unary_expression) GE_OP reduce using rule 31 (unary_expression) EQ_OP reduce using rule 31 (unary_expression) NE_OP reduce using rule 31 (unary_expression) AND_OP reduce using rule 31 (unary_expression) OR_OP reduce using rule 31 (unary_expression) MUL_ASSIGN reduce using rule 31 (unary_expression) DIV_ASSIGN reduce using rule 31 (unary_expression) MOD_ASSIGN reduce using rule 31 (unary_expression) ADD_ASSIGN reduce using rule 31 (unary_expression) SUB_ASSIGN reduce using rule 31 (unary_expression) LEFT_ASSIGN reduce using rule 31 (unary_expression) RIGHT_ASSIGN reduce using rule 31 (unary_expression) AND_ASSIGN reduce using rule 31 (unary_expression) XOR_ASSIGN reduce using rule 31 (unary_expression) OR_ASSIGN reduce using rule 31 (unary_expression) ')' reduce using rule 31 (unary_expression) ',' reduce using rule 31 (unary_expression) ':' reduce using rule 31 (unary_expression) ']' reduce using rule 31 (unary_expression) '}' reduce using rule 31 (unary_expression) '&' reduce using rule 31 (unary_expression) '*' reduce using rule 31 (unary_expression) '+' reduce using rule 31 (unary_expression) '-' reduce using rule 31 (unary_expression) '/' reduce using rule 31 (unary_expression) '%' reduce using rule 31 (unary_expression) '<' reduce using rule 31 (unary_expression) '>' reduce using rule 31 (unary_expression) '^' reduce using rule 31 (unary_expression) '|' reduce using rule 31 (unary_expression) '?' reduce using rule 31 (unary_expression) '=' reduce using rule 31 (unary_expression) ';' reduce using rule 31 (unary_expression)
35 unary_expression → ALIGNOF '(' • type_name ')' 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 254
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 12 | GENERIC '(' • assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 255
42 cast_expression → unary_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', ';'] 75 assignment_expression → unary_expression • assignment_operator assignment_expression 76 assignment_operator → • '=' 77 | • MUL_ASSIGN 78 | • DIV_ASSIGN 79 | • MOD_ASSIGN 80 | • ADD_ASSIGN 81 | • SUB_ASSIGN 82 | • LEFT_ASSIGN 83 | • RIGHT_ASSIGN 84 | • AND_ASSIGN 85 | • XOR_ASSIGN 86 | • OR_ASSIGN MUL_ASSIGN shift, and go to state 256 DIV_ASSIGN shift, and go to state 257 MOD_ASSIGN shift, and go to state 258 ADD_ASSIGN shift, and go to state 259 SUB_ASSIGN shift, and go to state 260 LEFT_ASSIGN shift, and go to state 261 RIGHT_ASSIGN shift, and go to state 262 AND_ASSIGN shift, and go to state 263 XOR_ASSIGN shift, and go to state 264 OR_ASSIGN shift, and go to state 265 '=' shift, and go to state 266 LEFT_OP reduce using rule 42 (cast_expression) RIGHT_OP reduce using rule 42 (cast_expression) LE_OP reduce using rule 42 (cast_expression) GE_OP reduce using rule 42 (cast_expression) EQ_OP reduce using rule 42 (cast_expression) NE_OP reduce using rule 42 (cast_expression) AND_OP reduce using rule 42 (cast_expression) OR_OP reduce using rule 42 (cast_expression) ')' reduce using rule 42 (cast_expression) ',' reduce using rule 42 (cast_expression) ':' reduce using rule 42 (cast_expression) ']' reduce using rule 42 (cast_expression) '}' reduce using rule 42 (cast_expression) '&' reduce using rule 42 (cast_expression) '*' reduce using rule 42 (cast_expression) '+' reduce using rule 42 (cast_expression) '-' reduce using rule 42 (cast_expression) '/' reduce using rule 42 (cast_expression) '%' reduce using rule 42 (cast_expression) '<' reduce using rule 42 (cast_expression) '>' reduce using rule 42 (cast_expression) '^' reduce using rule 42 (cast_expression) '|' reduce using rule 42 (cast_expression) '?' reduce using rule 42 (cast_expression) ';' reduce using rule 42 (cast_expression) assignment_operator go to state 267
74 assignment_expression → conditional_expression • [')', ',', ':', ']', '}', ';'] ')' reduce using rule 74 (assignment_expression) ',' reduce using rule 74 (assignment_expression) ':' reduce using rule 74 (assignment_expression) ']' reduce using rule 74 (assignment_expression) '}' reduce using rule 74 (assignment_expression) ';' reduce using rule 74 (assignment_expression)
87 expression → assignment_expression • [')', ',', ':', ']', ';'] ')' reduce using rule 87 (expression) ',' reduce using rule 87 (expression) ':' reduce using rule 87 (expression) ']' reduce using rule 87 (expression) ';' reduce using rule 87 (expression)
4 primary_expression → '(' expression • ')' 88 expression → expression • ',' assignment_expression ')' shift, and go to state 268 ',' shift, and go to state 269
25 postfix_expression → '(' type_name • ')' '{' initializer_list '}' 26 | '(' type_name • ')' '{' initializer_list ',' '}' 43 cast_expression → '(' type_name • ')' cast_expression ')' shift, and go to state 270
22 postfix_expression → postfix_expression PTR_OP • IDENTIFIER IDENTIFIER shift, and go to state 271
23 postfix_expression → postfix_expression INC_OP • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 23 (postfix_expression) INC_OP reduce using rule 23 (postfix_expression) DEC_OP reduce using rule 23 (postfix_expression) LEFT_OP reduce using rule 23 (postfix_expression) RIGHT_OP reduce using rule 23 (postfix_expression) LE_OP reduce using rule 23 (postfix_expression) GE_OP reduce using rule 23 (postfix_expression) EQ_OP reduce using rule 23 (postfix_expression) NE_OP reduce using rule 23 (postfix_expression) AND_OP reduce using rule 23 (postfix_expression) OR_OP reduce using rule 23 (postfix_expression) MUL_ASSIGN reduce using rule 23 (postfix_expression) DIV_ASSIGN reduce using rule 23 (postfix_expression) MOD_ASSIGN reduce using rule 23 (postfix_expression) ADD_ASSIGN reduce using rule 23 (postfix_expression) SUB_ASSIGN reduce using rule 23 (postfix_expression) LEFT_ASSIGN reduce using rule 23 (postfix_expression) RIGHT_ASSIGN reduce using rule 23 (postfix_expression) AND_ASSIGN reduce using rule 23 (postfix_expression) XOR_ASSIGN reduce using rule 23 (postfix_expression) OR_ASSIGN reduce using rule 23 (postfix_expression) '(' reduce using rule 23 (postfix_expression) ')' reduce using rule 23 (postfix_expression) ',' reduce using rule 23 (postfix_expression) ':' reduce using rule 23 (postfix_expression) '[' reduce using rule 23 (postfix_expression) ']' reduce using rule 23 (postfix_expression) '.' reduce using rule 23 (postfix_expression) '}' reduce using rule 23 (postfix_expression) '&' reduce using rule 23 (postfix_expression) '*' reduce using rule 23 (postfix_expression) '+' reduce using rule 23 (postfix_expression) '-' reduce using rule 23 (postfix_expression) '/' reduce using rule 23 (postfix_expression) '%' reduce using rule 23 (postfix_expression) '<' reduce using rule 23 (postfix_expression) '>' reduce using rule 23 (postfix_expression) '^' reduce using rule 23 (postfix_expression) '|' reduce using rule 23 (postfix_expression) '?' reduce using rule 23 (postfix_expression) '=' reduce using rule 23 (postfix_expression) ';' reduce using rule 23 (postfix_expression)
24 postfix_expression → postfix_expression DEC_OP • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 24 (postfix_expression) INC_OP reduce using rule 24 (postfix_expression) DEC_OP reduce using rule 24 (postfix_expression) LEFT_OP reduce using rule 24 (postfix_expression) RIGHT_OP reduce using rule 24 (postfix_expression) LE_OP reduce using rule 24 (postfix_expression) GE_OP reduce using rule 24 (postfix_expression) EQ_OP reduce using rule 24 (postfix_expression) NE_OP reduce using rule 24 (postfix_expression) AND_OP reduce using rule 24 (postfix_expression) OR_OP reduce using rule 24 (postfix_expression) MUL_ASSIGN reduce using rule 24 (postfix_expression) DIV_ASSIGN reduce using rule 24 (postfix_expression) MOD_ASSIGN reduce using rule 24 (postfix_expression) ADD_ASSIGN reduce using rule 24 (postfix_expression) SUB_ASSIGN reduce using rule 24 (postfix_expression) LEFT_ASSIGN reduce using rule 24 (postfix_expression) RIGHT_ASSIGN reduce using rule 24 (postfix_expression) AND_ASSIGN reduce using rule 24 (postfix_expression) XOR_ASSIGN reduce using rule 24 (postfix_expression) OR_ASSIGN reduce using rule 24 (postfix_expression) '(' reduce using rule 24 (postfix_expression) ')' reduce using rule 24 (postfix_expression) ',' reduce using rule 24 (postfix_expression) ':' reduce using rule 24 (postfix_expression) '[' reduce using rule 24 (postfix_expression) ']' reduce using rule 24 (postfix_expression) '.' reduce using rule 24 (postfix_expression) '}' reduce using rule 24 (postfix_expression) '&' reduce using rule 24 (postfix_expression) '*' reduce using rule 24 (postfix_expression) '+' reduce using rule 24 (postfix_expression) '-' reduce using rule 24 (postfix_expression) '/' reduce using rule 24 (postfix_expression) '%' reduce using rule 24 (postfix_expression) '<' reduce using rule 24 (postfix_expression) '>' reduce using rule 24 (postfix_expression) '^' reduce using rule 24 (postfix_expression) '|' reduce using rule 24 (postfix_expression) '?' reduce using rule 24 (postfix_expression) '=' reduce using rule 24 (postfix_expression) ';' reduce using rule 24 (postfix_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 19 | postfix_expression '(' • ')' 20 | • postfix_expression '(' argument_expression_list ')' 20 | postfix_expression '(' • argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 27 argument_expression_list → • assignment_expression 28 | • argument_expression_list ',' assignment_expression 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ')' shift, and go to state 272 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 argument_expression_list go to state 273 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 274
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 18 | postfix_expression '[' • expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 275
21 postfix_expression → postfix_expression '.' • IDENTIFIER IDENTIFIER shift, and go to state 276
32 unary_expression → unary_operator cast_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] LEFT_OP reduce using rule 32 (unary_expression) RIGHT_OP reduce using rule 32 (unary_expression) LE_OP reduce using rule 32 (unary_expression) GE_OP reduce using rule 32 (unary_expression) EQ_OP reduce using rule 32 (unary_expression) NE_OP reduce using rule 32 (unary_expression) AND_OP reduce using rule 32 (unary_expression) OR_OP reduce using rule 32 (unary_expression) MUL_ASSIGN reduce using rule 32 (unary_expression) DIV_ASSIGN reduce using rule 32 (unary_expression) MOD_ASSIGN reduce using rule 32 (unary_expression) ADD_ASSIGN reduce using rule 32 (unary_expression) SUB_ASSIGN reduce using rule 32 (unary_expression) LEFT_ASSIGN reduce using rule 32 (unary_expression) RIGHT_ASSIGN reduce using rule 32 (unary_expression) AND_ASSIGN reduce using rule 32 (unary_expression) XOR_ASSIGN reduce using rule 32 (unary_expression) OR_ASSIGN reduce using rule 32 (unary_expression) ')' reduce using rule 32 (unary_expression) ',' reduce using rule 32 (unary_expression) ':' reduce using rule 32 (unary_expression) ']' reduce using rule 32 (unary_expression) '}' reduce using rule 32 (unary_expression) '&' reduce using rule 32 (unary_expression) '*' reduce using rule 32 (unary_expression) '+' reduce using rule 32 (unary_expression) '-' reduce using rule 32 (unary_expression) '/' reduce using rule 32 (unary_expression) '%' reduce using rule 32 (unary_expression) '<' reduce using rule 32 (unary_expression) '>' reduce using rule 32 (unary_expression) '^' reduce using rule 32 (unary_expression) '|' reduce using rule 32 (unary_expression) '?' reduce using rule 32 (unary_expression) '=' reduce using rule 32 (unary_expression) ';' reduce using rule 32 (unary_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 45 multiplicative_expression → multiplicative_expression '*' • cast_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 277
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 46 multiplicative_expression → multiplicative_expression '/' • cast_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 278
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 47 multiplicative_expression → multiplicative_expression '%' • cast_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 279
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 49 additive_expression → additive_expression '+' • multiplicative_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 280
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 50 additive_expression → additive_expression '-' • multiplicative_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 281
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 52 shift_expression → shift_expression LEFT_OP • additive_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 282
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 53 shift_expression → shift_expression RIGHT_OP • additive_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 283
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 57 relational_expression → relational_expression LE_OP • shift_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 284
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 58 relational_expression → relational_expression GE_OP • shift_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 285
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 55 relational_expression → relational_expression '<' • shift_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 286
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 56 relational_expression → relational_expression '>' • shift_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 287
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 60 equality_expression → equality_expression EQ_OP • relational_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 288
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 61 equality_expression → equality_expression NE_OP • relational_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 289
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 63 and_expression → and_expression '&' • equality_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 290
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 65 exclusive_or_expression → exclusive_or_expression '^' • and_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 291
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 67 inclusive_or_expression → inclusive_or_expression '|' • exclusive_or_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 292
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 69 logical_and_expression → logical_and_expression AND_OP • inclusive_or_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 293
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 71 logical_or_expression → logical_or_expression OR_OP • logical_and_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 294
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 73 | logical_or_expression '?' • expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 295
165 alignment_specifier → ALIGNAS '(' constant_expression ')' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 165 (alignment_specifier) TYPEDEF_NAME reduce using rule 165 (alignment_specifier) TYPEDEF reduce using rule 165 (alignment_specifier) EXTERN reduce using rule 165 (alignment_specifier) STATIC reduce using rule 165 (alignment_specifier) AUTO reduce using rule 165 (alignment_specifier) REGISTER reduce using rule 165 (alignment_specifier) INLINE reduce using rule 165 (alignment_specifier) CONST reduce using rule 165 (alignment_specifier) RESTRICT reduce using rule 165 (alignment_specifier) VOLATILE reduce using rule 165 (alignment_specifier) BOOL reduce using rule 165 (alignment_specifier) CHAR reduce using rule 165 (alignment_specifier) SHORT reduce using rule 165 (alignment_specifier) INT reduce using rule 165 (alignment_specifier) LONG reduce using rule 165 (alignment_specifier) SIGNED reduce using rule 165 (alignment_specifier) UNSIGNED reduce using rule 165 (alignment_specifier) FLOAT reduce using rule 165 (alignment_specifier) DOUBLE reduce using rule 165 (alignment_specifier) VOID reduce using rule 165 (alignment_specifier) COMPLEX reduce using rule 165 (alignment_specifier) IMAGINARY reduce using rule 165 (alignment_specifier) STRUCT reduce using rule 165 (alignment_specifier) UNION reduce using rule 165 (alignment_specifier) ENUM reduce using rule 165 (alignment_specifier) ALIGNAS reduce using rule 165 (alignment_specifier) ATOMIC reduce using rule 165 (alignment_specifier) NORETURN reduce using rule 165 (alignment_specifier) THREAD_LOCAL reduce using rule 165 (alignment_specifier) '(' reduce using rule 165 (alignment_specifier) ')' reduce using rule 165 (alignment_specifier) ',' reduce using rule 165 (alignment_specifier) '[' reduce using rule 165 (alignment_specifier) '*' reduce using rule 165 (alignment_specifier) ';' reduce using rule 165 (alignment_specifier)
139 specifier_qualifier_list → type_specifier specifier_qualifier_list • [IDENTIFIER, '(', ')', ':', '[', '*', ';'] IDENTIFIER reduce using rule 139 (specifier_qualifier_list) '(' reduce using rule 139 (specifier_qualifier_list) ')' reduce using rule 139 (specifier_qualifier_list) ':' reduce using rule 139 (specifier_qualifier_list) '[' reduce using rule 139 (specifier_qualifier_list) '*' reduce using rule 139 (specifier_qualifier_list) ';' reduce using rule 139 (specifier_qualifier_list)
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' 188 parameter_type_list → • parameter_list ',' ELLIPSIS 189 | • parameter_list 190 parameter_list → • parameter_declaration 191 | • parameter_list ',' parameter_declaration 192 parameter_declaration → • declaration_specifiers declarator 193 | • declaration_specifiers abstract_declarator 194 | • declaration_specifiers 199 abstract_declarator → • pointer direct_abstract_declarator 200 | • pointer 201 | • direct_abstract_declarator 202 direct_abstract_declarator → • '(' abstract_declarator ')' 202 | '(' • abstract_declarator ')' 203 | • '[' ']' 204 | • '[' '*' ']' 205 | • '[' STATIC type_qualifier_list assignment_expression ']' 206 | • '[' STATIC assignment_expression ']' 207 | • '[' type_qualifier_list STATIC assignment_expression ']' 208 | • '[' type_qualifier_list assignment_expression ']' 209 | • '[' type_qualifier_list ']' 210 | • '[' assignment_expression ']' 211 | • direct_abstract_declarator '[' ']' 212 | • direct_abstract_declarator '[' '*' ']' 213 | • direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' 214 | • direct_abstract_declarator '[' STATIC assignment_expression ']' 215 | • direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' 216 | • direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' 217 | • direct_abstract_declarator '[' type_qualifier_list ']' 218 | • direct_abstract_declarator '[' assignment_expression ']' 219 | • '(' ')' 219 | '(' • ')' 220 | • '(' parameter_type_list ')' 220 | '(' • parameter_type_list ')' 221 | • direct_abstract_declarator '(' ')' 222 | • direct_abstract_declarator '(' parameter_type_list ')' TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 '(' shift, and go to state 183 ')' shift, and go to state 296 '[' shift, and go to state 184 '*' shift, and go to state 53 declaration_specifiers go to state 229 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 pointer go to state 185 parameter_type_list go to state 297 parameter_list go to state 231 parameter_declaration go to state 232 abstract_declarator go to state 298 direct_abstract_declarator go to state 187
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 186 type_qualifier_list → • type_qualifier 187 | • type_qualifier_list type_qualifier 203 direct_abstract_declarator → '[' • ']' 204 | '[' • '*' ']' 205 | '[' • STATIC type_qualifier_list assignment_expression ']' 206 | '[' • STATIC assignment_expression ']' 207 | '[' • type_qualifier_list STATIC assignment_expression ']' 208 | '[' • type_qualifier_list assignment_expression ']' 209 | '[' • type_qualifier_list ']' 210 | '[' • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 STATIC shift, and go to state 299 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ']' shift, and go to state 300 '&' shift, and go to state 86 '*' shift, and go to state 301 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 302 type_qualifier go to state 120 type_qualifier_list go to state 303
199 abstract_declarator → pointer • direct_abstract_declarator 200 | pointer • [')', ':'] 202 direct_abstract_declarator → • '(' abstract_declarator ')' 203 | • '[' ']' 204 | • '[' '*' ']' 205 | • '[' STATIC type_qualifier_list assignment_expression ']' 206 | • '[' STATIC assignment_expression ']' 207 | • '[' type_qualifier_list STATIC assignment_expression ']' 208 | • '[' type_qualifier_list assignment_expression ']' 209 | • '[' type_qualifier_list ']' 210 | • '[' assignment_expression ']' 211 | • direct_abstract_declarator '[' ']' 212 | • direct_abstract_declarator '[' '*' ']' 213 | • direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' 214 | • direct_abstract_declarator '[' STATIC assignment_expression ']' 215 | • direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' 216 | • direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' 217 | • direct_abstract_declarator '[' type_qualifier_list ']' 218 | • direct_abstract_declarator '[' assignment_expression ']' 219 | • '(' ')' 220 | • '(' parameter_type_list ')' 221 | • direct_abstract_declarator '(' ')' 222 | • direct_abstract_declarator '(' parameter_type_list ')' '(' shift, and go to state 183 '[' shift, and go to state 184 ')' reduce using rule 200 (abstract_declarator) ':' reduce using rule 200 (abstract_declarator) direct_abstract_declarator go to state 304
197 type_name → specifier_qualifier_list abstract_declarator • [')', ':'] ')' reduce using rule 197 (type_name) ':' reduce using rule 197 (type_name)
201 abstract_declarator → direct_abstract_declarator • [')', ',', ':'] 211 direct_abstract_declarator → direct_abstract_declarator • '[' ']' 212 | direct_abstract_declarator • '[' '*' ']' 213 | direct_abstract_declarator • '[' STATIC type_qualifier_list assignment_expression ']' 214 | direct_abstract_declarator • '[' STATIC assignment_expression ']' 215 | direct_abstract_declarator • '[' type_qualifier_list assignment_expression ']' 216 | direct_abstract_declarator • '[' type_qualifier_list STATIC assignment_expression ']' 217 | direct_abstract_declarator • '[' type_qualifier_list ']' 218 | direct_abstract_declarator • '[' assignment_expression ']' 221 | direct_abstract_declarator • '(' ')' 222 | direct_abstract_declarator • '(' parameter_type_list ')' '(' shift, and go to state 305 '[' shift, and go to state 306 ')' reduce using rule 201 (abstract_declarator) ',' reduce using rule 201 (abstract_declarator) ':' reduce using rule 201 (abstract_declarator)
141 specifier_qualifier_list → type_qualifier specifier_qualifier_list • [IDENTIFIER, '(', ')', ':', '[', '*', ';'] IDENTIFIER reduce using rule 141 (specifier_qualifier_list) '(' reduce using rule 141 (specifier_qualifier_list) ')' reduce using rule 141 (specifier_qualifier_list) ':' reduce using rule 141 (specifier_qualifier_list) '[' reduce using rule 141 (specifier_qualifier_list) '*' reduce using rule 141 (specifier_qualifier_list) ';' reduce using rule 141 (specifier_qualifier_list)
164 alignment_specifier → ALIGNAS '(' type_name ')' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', '[', '*', ';'] IDENTIFIER reduce using rule 164 (alignment_specifier) TYPEDEF_NAME reduce using rule 164 (alignment_specifier) TYPEDEF reduce using rule 164 (alignment_specifier) EXTERN reduce using rule 164 (alignment_specifier) STATIC reduce using rule 164 (alignment_specifier) AUTO reduce using rule 164 (alignment_specifier) REGISTER reduce using rule 164 (alignment_specifier) INLINE reduce using rule 164 (alignment_specifier) CONST reduce using rule 164 (alignment_specifier) RESTRICT reduce using rule 164 (alignment_specifier) VOLATILE reduce using rule 164 (alignment_specifier) BOOL reduce using rule 164 (alignment_specifier) CHAR reduce using rule 164 (alignment_specifier) SHORT reduce using rule 164 (alignment_specifier) INT reduce using rule 164 (alignment_specifier) LONG reduce using rule 164 (alignment_specifier) SIGNED reduce using rule 164 (alignment_specifier) UNSIGNED reduce using rule 164 (alignment_specifier) FLOAT reduce using rule 164 (alignment_specifier) DOUBLE reduce using rule 164 (alignment_specifier) VOID reduce using rule 164 (alignment_specifier) COMPLEX reduce using rule 164 (alignment_specifier) IMAGINARY reduce using rule 164 (alignment_specifier) STRUCT reduce using rule 164 (alignment_specifier) UNION reduce using rule 164 (alignment_specifier) ENUM reduce using rule 164 (alignment_specifier) ALIGNAS reduce using rule 164 (alignment_specifier) ATOMIC reduce using rule 164 (alignment_specifier) NORETURN reduce using rule 164 (alignment_specifier) THREAD_LOCAL reduce using rule 164 (alignment_specifier) '(' reduce using rule 164 (alignment_specifier) ')' reduce using rule 164 (alignment_specifier) ',' reduce using rule 164 (alignment_specifier) '[' reduce using rule 164 (alignment_specifier) '*' reduce using rule 164 (alignment_specifier) ';' reduce using rule 164 (alignment_specifier)
157 atomic_type_specifier → ATOMIC '(' type_name ')' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 157 (atomic_type_specifier) TYPEDEF_NAME reduce using rule 157 (atomic_type_specifier) TYPEDEF reduce using rule 157 (atomic_type_specifier) EXTERN reduce using rule 157 (atomic_type_specifier) STATIC reduce using rule 157 (atomic_type_specifier) AUTO reduce using rule 157 (atomic_type_specifier) REGISTER reduce using rule 157 (atomic_type_specifier) INLINE reduce using rule 157 (atomic_type_specifier) CONST reduce using rule 157 (atomic_type_specifier) RESTRICT reduce using rule 157 (atomic_type_specifier) VOLATILE reduce using rule 157 (atomic_type_specifier) BOOL reduce using rule 157 (atomic_type_specifier) CHAR reduce using rule 157 (atomic_type_specifier) SHORT reduce using rule 157 (atomic_type_specifier) INT reduce using rule 157 (atomic_type_specifier) LONG reduce using rule 157 (atomic_type_specifier) SIGNED reduce using rule 157 (atomic_type_specifier) UNSIGNED reduce using rule 157 (atomic_type_specifier) FLOAT reduce using rule 157 (atomic_type_specifier) DOUBLE reduce using rule 157 (atomic_type_specifier) VOID reduce using rule 157 (atomic_type_specifier) COMPLEX reduce using rule 157 (atomic_type_specifier) IMAGINARY reduce using rule 157 (atomic_type_specifier) STRUCT reduce using rule 157 (atomic_type_specifier) UNION reduce using rule 157 (atomic_type_specifier) ENUM reduce using rule 157 (atomic_type_specifier) ALIGNAS reduce using rule 157 (atomic_type_specifier) ATOMIC reduce using rule 157 (atomic_type_specifier) NORETURN reduce using rule 157 (atomic_type_specifier) THREAD_LOCAL reduce using rule 157 (atomic_type_specifier) '(' reduce using rule 157 (atomic_type_specifier) ')' reduce using rule 157 (atomic_type_specifier) ',' reduce using rule 157 (atomic_type_specifier) ':' reduce using rule 157 (atomic_type_specifier) '[' reduce using rule 157 (atomic_type_specifier) '*' reduce using rule 157 (atomic_type_specifier) ';' reduce using rule 157 (atomic_type_specifier)
235 static_assert_declaration → STATIC_ASSERT '(' constant_expression ',' • STRING_LITERAL ')' ';' STRING_LITERAL shift, and go to state 307
169 direct_declarator → '(' declarator ')' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 169 (direct_declarator) TYPEDEF reduce using rule 169 (direct_declarator) EXTERN reduce using rule 169 (direct_declarator) STATIC reduce using rule 169 (direct_declarator) AUTO reduce using rule 169 (direct_declarator) REGISTER reduce using rule 169 (direct_declarator) INLINE reduce using rule 169 (direct_declarator) CONST reduce using rule 169 (direct_declarator) RESTRICT reduce using rule 169 (direct_declarator) VOLATILE reduce using rule 169 (direct_declarator) BOOL reduce using rule 169 (direct_declarator) CHAR reduce using rule 169 (direct_declarator) SHORT reduce using rule 169 (direct_declarator) INT reduce using rule 169 (direct_declarator) LONG reduce using rule 169 (direct_declarator) SIGNED reduce using rule 169 (direct_declarator) UNSIGNED reduce using rule 169 (direct_declarator) FLOAT reduce using rule 169 (direct_declarator) DOUBLE reduce using rule 169 (direct_declarator) VOID reduce using rule 169 (direct_declarator) COMPLEX reduce using rule 169 (direct_declarator) IMAGINARY reduce using rule 169 (direct_declarator) STRUCT reduce using rule 169 (direct_declarator) UNION reduce using rule 169 (direct_declarator) ENUM reduce using rule 169 (direct_declarator) ALIGNAS reduce using rule 169 (direct_declarator) ATOMIC reduce using rule 169 (direct_declarator) NORETURN reduce using rule 169 (direct_declarator) STATIC_ASSERT reduce using rule 169 (direct_declarator) THREAD_LOCAL reduce using rule 169 (direct_declarator) '(' reduce using rule 169 (direct_declarator) ')' reduce using rule 169 (direct_declarator) ',' reduce using rule 169 (direct_declarator) ':' reduce using rule 169 (direct_declarator) '[' reduce using rule 169 (direct_declarator) '{' reduce using rule 169 (direct_declarator) '=' reduce using rule 169 (direct_declarator) ';' reduce using rule 169 (direct_declarator)
187 type_qualifier_list → type_qualifier_list type_qualifier • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, STATIC, CONST, RESTRICT, VOLATILE, ALIGNOF, ATOMIC, GENERIC, '(', ')', ',', ':', '[', ']', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 187 (type_qualifier_list) I_CONSTANT reduce using rule 187 (type_qualifier_list) F_CONSTANT reduce using rule 187 (type_qualifier_list) STRING_LITERAL reduce using rule 187 (type_qualifier_list) FUNC_NAME reduce using rule 187 (type_qualifier_list) SIZEOF reduce using rule 187 (type_qualifier_list) INC_OP reduce using rule 187 (type_qualifier_list) DEC_OP reduce using rule 187 (type_qualifier_list) ENUMERATION_CONSTANT reduce using rule 187 (type_qualifier_list) STATIC reduce using rule 187 (type_qualifier_list) CONST reduce using rule 187 (type_qualifier_list) RESTRICT reduce using rule 187 (type_qualifier_list) VOLATILE reduce using rule 187 (type_qualifier_list) ALIGNOF reduce using rule 187 (type_qualifier_list) ATOMIC reduce using rule 187 (type_qualifier_list) GENERIC reduce using rule 187 (type_qualifier_list) '(' reduce using rule 187 (type_qualifier_list) ')' reduce using rule 187 (type_qualifier_list) ',' reduce using rule 187 (type_qualifier_list) ':' reduce using rule 187 (type_qualifier_list) '[' reduce using rule 187 (type_qualifier_list) ']' reduce using rule 187 (type_qualifier_list) '&' reduce using rule 187 (type_qualifier_list) '*' reduce using rule 187 (type_qualifier_list) '+' reduce using rule 187 (type_qualifier_list) '-' reduce using rule 187 (type_qualifier_list) '~' reduce using rule 187 (type_qualifier_list) '!' reduce using rule 187 (type_qualifier_list)
182 pointer → '*' type_qualifier_list pointer • [IDENTIFIER, '(', ')', ',', ':', '['] IDENTIFIER reduce using rule 182 (pointer) '(' reduce using rule 182 (pointer) ')' reduce using rule 182 (pointer) ',' reduce using rule 182 (pointer) ':' reduce using rule 182 (pointer) '[' reduce using rule 182 (pointer)
104 init_declarator_list → init_declarator_list ',' init_declarator • [',', ';'] ',' reduce using rule 104 (init_declarator_list) ';' reduce using rule 104 (init_declarator_list)
105 init_declarator → declarator • '=' initializer 106 | declarator • [',', ';'] '=' shift, and go to state 126 ',' reduce using rule 106 (init_declarator) ';' reduce using rule 106 (init_declarator)
1 primary_expression → IDENTIFIER • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ',', '[', '.', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] 242 labeled_statement → IDENTIFIER • ':' statement ':' shift, and go to state 308 PTR_OP reduce using rule 1 (primary_expression) INC_OP reduce using rule 1 (primary_expression) DEC_OP reduce using rule 1 (primary_expression) LEFT_OP reduce using rule 1 (primary_expression) RIGHT_OP reduce using rule 1 (primary_expression) LE_OP reduce using rule 1 (primary_expression) GE_OP reduce using rule 1 (primary_expression) EQ_OP reduce using rule 1 (primary_expression) NE_OP reduce using rule 1 (primary_expression) AND_OP reduce using rule 1 (primary_expression) OR_OP reduce using rule 1 (primary_expression) MUL_ASSIGN reduce using rule 1 (primary_expression) DIV_ASSIGN reduce using rule 1 (primary_expression) MOD_ASSIGN reduce using rule 1 (primary_expression) ADD_ASSIGN reduce using rule 1 (primary_expression) SUB_ASSIGN reduce using rule 1 (primary_expression) LEFT_ASSIGN reduce using rule 1 (primary_expression) RIGHT_ASSIGN reduce using rule 1 (primary_expression) AND_ASSIGN reduce using rule 1 (primary_expression) XOR_ASSIGN reduce using rule 1 (primary_expression) OR_ASSIGN reduce using rule 1 (primary_expression) '(' reduce using rule 1 (primary_expression) ',' reduce using rule 1 (primary_expression) '[' reduce using rule 1 (primary_expression) '.' reduce using rule 1 (primary_expression) '&' reduce using rule 1 (primary_expression) '*' reduce using rule 1 (primary_expression) '+' reduce using rule 1 (primary_expression) '-' reduce using rule 1 (primary_expression) '/' reduce using rule 1 (primary_expression) '%' reduce using rule 1 (primary_expression) '<' reduce using rule 1 (primary_expression) '>' reduce using rule 1 (primary_expression) '^' reduce using rule 1 (primary_expression) '|' reduce using rule 1 (primary_expression) '?' reduce using rule 1 (primary_expression) '=' reduce using rule 1 (primary_expression) ';' reduce using rule 1 (primary_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 89 constant_expression → • conditional_expression 243 labeled_statement → CASE • constant_expression ':' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 110 constant_expression go to state 309
244 labeled_statement → DEFAULT • ':' statement ':' shift, and go to state 310
253 selection_statement → IF • '(' expression ')' statement ELSE statement 254 | IF • '(' expression ')' statement '(' shift, and go to state 311
255 selection_statement → SWITCH • '(' expression ')' statement '(' shift, and go to state 312
256 iteration_statement → WHILE • '(' expression ')' statement '(' shift, and go to state 313
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 257 | DO • statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 314 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
258 iteration_statement → FOR • '(' expression_statement expression_statement ')' statement 259 | FOR • '(' expression_statement expression_statement expression ')' statement 260 | FOR • '(' declaration expression_statement ')' statement 261 | FOR • '(' declaration expression_statement expression ')' statement '(' shift, and go to state 315
262 jump_statement → GOTO • IDENTIFIER ';' IDENTIFIER shift, and go to state 316
263 jump_statement → CONTINUE • ';' ';' shift, and go to state 317
264 jump_statement → BREAK • ';' ';' shift, and go to state 318
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 265 jump_statement → RETURN • ';' 266 | RETURN • expression ';' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 319 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 320
245 compound_statement → '{' '}' • [$end, IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] $end reduce using rule 245 (compound_statement) IDENTIFIER reduce using rule 245 (compound_statement) I_CONSTANT reduce using rule 245 (compound_statement) F_CONSTANT reduce using rule 245 (compound_statement) STRING_LITERAL reduce using rule 245 (compound_statement) FUNC_NAME reduce using rule 245 (compound_statement) SIZEOF reduce using rule 245 (compound_statement) INC_OP reduce using rule 245 (compound_statement) DEC_OP reduce using rule 245 (compound_statement) TYPEDEF_NAME reduce using rule 245 (compound_statement) ENUMERATION_CONSTANT reduce using rule 245 (compound_statement) TYPEDEF reduce using rule 245 (compound_statement) EXTERN reduce using rule 245 (compound_statement) STATIC reduce using rule 245 (compound_statement) AUTO reduce using rule 245 (compound_statement) REGISTER reduce using rule 245 (compound_statement) INLINE reduce using rule 245 (compound_statement) CONST reduce using rule 245 (compound_statement) RESTRICT reduce using rule 245 (compound_statement) VOLATILE reduce using rule 245 (compound_statement) BOOL reduce using rule 245 (compound_statement) CHAR reduce using rule 245 (compound_statement) SHORT reduce using rule 245 (compound_statement) INT reduce using rule 245 (compound_statement) LONG reduce using rule 245 (compound_statement) SIGNED reduce using rule 245 (compound_statement) UNSIGNED reduce using rule 245 (compound_statement) FLOAT reduce using rule 245 (compound_statement) DOUBLE reduce using rule 245 (compound_statement) VOID reduce using rule 245 (compound_statement) COMPLEX reduce using rule 245 (compound_statement) IMAGINARY reduce using rule 245 (compound_statement) STRUCT reduce using rule 245 (compound_statement) UNION reduce using rule 245 (compound_statement) ENUM reduce using rule 245 (compound_statement) CASE reduce using rule 245 (compound_statement) DEFAULT reduce using rule 245 (compound_statement) IF reduce using rule 245 (compound_statement) ELSE reduce using rule 245 (compound_statement) SWITCH reduce using rule 245 (compound_statement) WHILE reduce using rule 245 (compound_statement) DO reduce using rule 245 (compound_statement) FOR reduce using rule 245 (compound_statement) GOTO reduce using rule 245 (compound_statement) CONTINUE reduce using rule 245 (compound_statement) BREAK reduce using rule 245 (compound_statement) RETURN reduce using rule 245 (compound_statement) ALIGNAS reduce using rule 245 (compound_statement) ALIGNOF reduce using rule 245 (compound_statement) ATOMIC reduce using rule 245 (compound_statement) GENERIC reduce using rule 245 (compound_statement) NORETURN reduce using rule 245 (compound_statement) STATIC_ASSERT reduce using rule 245 (compound_statement) THREAD_LOCAL reduce using rule 245 (compound_statement) '(' reduce using rule 245 (compound_statement) '{' reduce using rule 245 (compound_statement) '}' reduce using rule 245 (compound_statement) '&' reduce using rule 245 (compound_statement) '*' reduce using rule 245 (compound_statement) '+' reduce using rule 245 (compound_statement) '-' reduce using rule 245 (compound_statement) '~' reduce using rule 245 (compound_statement) '!' reduce using rule 245 (compound_statement) ';' reduce using rule 245 (compound_statement)
251 expression_statement → ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 251 (expression_statement) I_CONSTANT reduce using rule 251 (expression_statement) F_CONSTANT reduce using rule 251 (expression_statement) STRING_LITERAL reduce using rule 251 (expression_statement) FUNC_NAME reduce using rule 251 (expression_statement) SIZEOF reduce using rule 251 (expression_statement) INC_OP reduce using rule 251 (expression_statement) DEC_OP reduce using rule 251 (expression_statement) TYPEDEF_NAME reduce using rule 251 (expression_statement) ENUMERATION_CONSTANT reduce using rule 251 (expression_statement) TYPEDEF reduce using rule 251 (expression_statement) EXTERN reduce using rule 251 (expression_statement) STATIC reduce using rule 251 (expression_statement) AUTO reduce using rule 251 (expression_statement) REGISTER reduce using rule 251 (expression_statement) INLINE reduce using rule 251 (expression_statement) CONST reduce using rule 251 (expression_statement) RESTRICT reduce using rule 251 (expression_statement) VOLATILE reduce using rule 251 (expression_statement) BOOL reduce using rule 251 (expression_statement) CHAR reduce using rule 251 (expression_statement) SHORT reduce using rule 251 (expression_statement) INT reduce using rule 251 (expression_statement) LONG reduce using rule 251 (expression_statement) SIGNED reduce using rule 251 (expression_statement) UNSIGNED reduce using rule 251 (expression_statement) FLOAT reduce using rule 251 (expression_statement) DOUBLE reduce using rule 251 (expression_statement) VOID reduce using rule 251 (expression_statement) COMPLEX reduce using rule 251 (expression_statement) IMAGINARY reduce using rule 251 (expression_statement) STRUCT reduce using rule 251 (expression_statement) UNION reduce using rule 251 (expression_statement) ENUM reduce using rule 251 (expression_statement) CASE reduce using rule 251 (expression_statement) DEFAULT reduce using rule 251 (expression_statement) IF reduce using rule 251 (expression_statement) ELSE reduce using rule 251 (expression_statement) SWITCH reduce using rule 251 (expression_statement) WHILE reduce using rule 251 (expression_statement) DO reduce using rule 251 (expression_statement) FOR reduce using rule 251 (expression_statement) GOTO reduce using rule 251 (expression_statement) CONTINUE reduce using rule 251 (expression_statement) BREAK reduce using rule 251 (expression_statement) RETURN reduce using rule 251 (expression_statement) ALIGNAS reduce using rule 251 (expression_statement) ALIGNOF reduce using rule 251 (expression_statement) ATOMIC reduce using rule 251 (expression_statement) GENERIC reduce using rule 251 (expression_statement) NORETURN reduce using rule 251 (expression_statement) STATIC_ASSERT reduce using rule 251 (expression_statement) THREAD_LOCAL reduce using rule 251 (expression_statement) '(' reduce using rule 251 (expression_statement) ')' reduce using rule 251 (expression_statement) '{' reduce using rule 251 (expression_statement) '}' reduce using rule 251 (expression_statement) '&' reduce using rule 251 (expression_statement) '*' reduce using rule 251 (expression_statement) '+' reduce using rule 251 (expression_statement) '-' reduce using rule 251 (expression_statement) '~' reduce using rule 251 (expression_statement) '!' reduce using rule 251 (expression_statement) ';' reduce using rule 251 (expression_statement)
88 expression → expression • ',' assignment_expression 252 expression_statement → expression • ';' ',' shift, and go to state 269 ';' shift, and go to state 321
249 block_item → declaration • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 249 (block_item) I_CONSTANT reduce using rule 249 (block_item) F_CONSTANT reduce using rule 249 (block_item) STRING_LITERAL reduce using rule 249 (block_item) FUNC_NAME reduce using rule 249 (block_item) SIZEOF reduce using rule 249 (block_item) INC_OP reduce using rule 249 (block_item) DEC_OP reduce using rule 249 (block_item) TYPEDEF_NAME reduce using rule 249 (block_item) ENUMERATION_CONSTANT reduce using rule 249 (block_item) TYPEDEF reduce using rule 249 (block_item) EXTERN reduce using rule 249 (block_item) STATIC reduce using rule 249 (block_item) AUTO reduce using rule 249 (block_item) REGISTER reduce using rule 249 (block_item) INLINE reduce using rule 249 (block_item) CONST reduce using rule 249 (block_item) RESTRICT reduce using rule 249 (block_item) VOLATILE reduce using rule 249 (block_item) BOOL reduce using rule 249 (block_item) CHAR reduce using rule 249 (block_item) SHORT reduce using rule 249 (block_item) INT reduce using rule 249 (block_item) LONG reduce using rule 249 (block_item) SIGNED reduce using rule 249 (block_item) UNSIGNED reduce using rule 249 (block_item) FLOAT reduce using rule 249 (block_item) DOUBLE reduce using rule 249 (block_item) VOID reduce using rule 249 (block_item) COMPLEX reduce using rule 249 (block_item) IMAGINARY reduce using rule 249 (block_item) STRUCT reduce using rule 249 (block_item) UNION reduce using rule 249 (block_item) ENUM reduce using rule 249 (block_item) CASE reduce using rule 249 (block_item) DEFAULT reduce using rule 249 (block_item) IF reduce using rule 249 (block_item) SWITCH reduce using rule 249 (block_item) WHILE reduce using rule 249 (block_item) DO reduce using rule 249 (block_item) FOR reduce using rule 249 (block_item) GOTO reduce using rule 249 (block_item) CONTINUE reduce using rule 249 (block_item) BREAK reduce using rule 249 (block_item) RETURN reduce using rule 249 (block_item) ALIGNAS reduce using rule 249 (block_item) ALIGNOF reduce using rule 249 (block_item) ATOMIC reduce using rule 249 (block_item) GENERIC reduce using rule 249 (block_item) NORETURN reduce using rule 249 (block_item) STATIC_ASSERT reduce using rule 249 (block_item) THREAD_LOCAL reduce using rule 249 (block_item) '(' reduce using rule 249 (block_item) '{' reduce using rule 249 (block_item) '}' reduce using rule 249 (block_item) '&' reduce using rule 249 (block_item) '*' reduce using rule 249 (block_item) '+' reduce using rule 249 (block_item) '-' reduce using rule 249 (block_item) '~' reduce using rule 249 (block_item) '!' reduce using rule 249 (block_item) ';' reduce using rule 249 (block_item)
250 block_item → statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 250 (block_item) I_CONSTANT reduce using rule 250 (block_item) F_CONSTANT reduce using rule 250 (block_item) STRING_LITERAL reduce using rule 250 (block_item) FUNC_NAME reduce using rule 250 (block_item) SIZEOF reduce using rule 250 (block_item) INC_OP reduce using rule 250 (block_item) DEC_OP reduce using rule 250 (block_item) TYPEDEF_NAME reduce using rule 250 (block_item) ENUMERATION_CONSTANT reduce using rule 250 (block_item) TYPEDEF reduce using rule 250 (block_item) EXTERN reduce using rule 250 (block_item) STATIC reduce using rule 250 (block_item) AUTO reduce using rule 250 (block_item) REGISTER reduce using rule 250 (block_item) INLINE reduce using rule 250 (block_item) CONST reduce using rule 250 (block_item) RESTRICT reduce using rule 250 (block_item) VOLATILE reduce using rule 250 (block_item) BOOL reduce using rule 250 (block_item) CHAR reduce using rule 250 (block_item) SHORT reduce using rule 250 (block_item) INT reduce using rule 250 (block_item) LONG reduce using rule 250 (block_item) SIGNED reduce using rule 250 (block_item) UNSIGNED reduce using rule 250 (block_item) FLOAT reduce using rule 250 (block_item) DOUBLE reduce using rule 250 (block_item) VOID reduce using rule 250 (block_item) COMPLEX reduce using rule 250 (block_item) IMAGINARY reduce using rule 250 (block_item) STRUCT reduce using rule 250 (block_item) UNION reduce using rule 250 (block_item) ENUM reduce using rule 250 (block_item) CASE reduce using rule 250 (block_item) DEFAULT reduce using rule 250 (block_item) IF reduce using rule 250 (block_item) SWITCH reduce using rule 250 (block_item) WHILE reduce using rule 250 (block_item) DO reduce using rule 250 (block_item) FOR reduce using rule 250 (block_item) GOTO reduce using rule 250 (block_item) CONTINUE reduce using rule 250 (block_item) BREAK reduce using rule 250 (block_item) RETURN reduce using rule 250 (block_item) ALIGNAS reduce using rule 250 (block_item) ALIGNOF reduce using rule 250 (block_item) ATOMIC reduce using rule 250 (block_item) GENERIC reduce using rule 250 (block_item) NORETURN reduce using rule 250 (block_item) STATIC_ASSERT reduce using rule 250 (block_item) THREAD_LOCAL reduce using rule 250 (block_item) '(' reduce using rule 250 (block_item) '{' reduce using rule 250 (block_item) '}' reduce using rule 250 (block_item) '&' reduce using rule 250 (block_item) '*' reduce using rule 250 (block_item) '+' reduce using rule 250 (block_item) '-' reduce using rule 250 (block_item) '~' reduce using rule 250 (block_item) '!' reduce using rule 250 (block_item) ';' reduce using rule 250 (block_item)
236 statement → labeled_statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 236 (statement) I_CONSTANT reduce using rule 236 (statement) F_CONSTANT reduce using rule 236 (statement) STRING_LITERAL reduce using rule 236 (statement) FUNC_NAME reduce using rule 236 (statement) SIZEOF reduce using rule 236 (statement) INC_OP reduce using rule 236 (statement) DEC_OP reduce using rule 236 (statement) TYPEDEF_NAME reduce using rule 236 (statement) ENUMERATION_CONSTANT reduce using rule 236 (statement) TYPEDEF reduce using rule 236 (statement) EXTERN reduce using rule 236 (statement) STATIC reduce using rule 236 (statement) AUTO reduce using rule 236 (statement) REGISTER reduce using rule 236 (statement) INLINE reduce using rule 236 (statement) CONST reduce using rule 236 (statement) RESTRICT reduce using rule 236 (statement) VOLATILE reduce using rule 236 (statement) BOOL reduce using rule 236 (statement) CHAR reduce using rule 236 (statement) SHORT reduce using rule 236 (statement) INT reduce using rule 236 (statement) LONG reduce using rule 236 (statement) SIGNED reduce using rule 236 (statement) UNSIGNED reduce using rule 236 (statement) FLOAT reduce using rule 236 (statement) DOUBLE reduce using rule 236 (statement) VOID reduce using rule 236 (statement) COMPLEX reduce using rule 236 (statement) IMAGINARY reduce using rule 236 (statement) STRUCT reduce using rule 236 (statement) UNION reduce using rule 236 (statement) ENUM reduce using rule 236 (statement) CASE reduce using rule 236 (statement) DEFAULT reduce using rule 236 (statement) IF reduce using rule 236 (statement) ELSE reduce using rule 236 (statement) SWITCH reduce using rule 236 (statement) WHILE reduce using rule 236 (statement) DO reduce using rule 236 (statement) FOR reduce using rule 236 (statement) GOTO reduce using rule 236 (statement) CONTINUE reduce using rule 236 (statement) BREAK reduce using rule 236 (statement) RETURN reduce using rule 236 (statement) ALIGNAS reduce using rule 236 (statement) ALIGNOF reduce using rule 236 (statement) ATOMIC reduce using rule 236 (statement) GENERIC reduce using rule 236 (statement) NORETURN reduce using rule 236 (statement) STATIC_ASSERT reduce using rule 236 (statement) THREAD_LOCAL reduce using rule 236 (statement) '(' reduce using rule 236 (statement) '{' reduce using rule 236 (statement) '}' reduce using rule 236 (statement) '&' reduce using rule 236 (statement) '*' reduce using rule 236 (statement) '+' reduce using rule 236 (statement) '-' reduce using rule 236 (statement) '~' reduce using rule 236 (statement) '!' reduce using rule 236 (statement) ';' reduce using rule 236 (statement)
237 statement → compound_statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 237 (statement) I_CONSTANT reduce using rule 237 (statement) F_CONSTANT reduce using rule 237 (statement) STRING_LITERAL reduce using rule 237 (statement) FUNC_NAME reduce using rule 237 (statement) SIZEOF reduce using rule 237 (statement) INC_OP reduce using rule 237 (statement) DEC_OP reduce using rule 237 (statement) TYPEDEF_NAME reduce using rule 237 (statement) ENUMERATION_CONSTANT reduce using rule 237 (statement) TYPEDEF reduce using rule 237 (statement) EXTERN reduce using rule 237 (statement) STATIC reduce using rule 237 (statement) AUTO reduce using rule 237 (statement) REGISTER reduce using rule 237 (statement) INLINE reduce using rule 237 (statement) CONST reduce using rule 237 (statement) RESTRICT reduce using rule 237 (statement) VOLATILE reduce using rule 237 (statement) BOOL reduce using rule 237 (statement) CHAR reduce using rule 237 (statement) SHORT reduce using rule 237 (statement) INT reduce using rule 237 (statement) LONG reduce using rule 237 (statement) SIGNED reduce using rule 237 (statement) UNSIGNED reduce using rule 237 (statement) FLOAT reduce using rule 237 (statement) DOUBLE reduce using rule 237 (statement) VOID reduce using rule 237 (statement) COMPLEX reduce using rule 237 (statement) IMAGINARY reduce using rule 237 (statement) STRUCT reduce using rule 237 (statement) UNION reduce using rule 237 (statement) ENUM reduce using rule 237 (statement) CASE reduce using rule 237 (statement) DEFAULT reduce using rule 237 (statement) IF reduce using rule 237 (statement) ELSE reduce using rule 237 (statement) SWITCH reduce using rule 237 (statement) WHILE reduce using rule 237 (statement) DO reduce using rule 237 (statement) FOR reduce using rule 237 (statement) GOTO reduce using rule 237 (statement) CONTINUE reduce using rule 237 (statement) BREAK reduce using rule 237 (statement) RETURN reduce using rule 237 (statement) ALIGNAS reduce using rule 237 (statement) ALIGNOF reduce using rule 237 (statement) ATOMIC reduce using rule 237 (statement) GENERIC reduce using rule 237 (statement) NORETURN reduce using rule 237 (statement) STATIC_ASSERT reduce using rule 237 (statement) THREAD_LOCAL reduce using rule 237 (statement) '(' reduce using rule 237 (statement) '{' reduce using rule 237 (statement) '}' reduce using rule 237 (statement) '&' reduce using rule 237 (statement) '*' reduce using rule 237 (statement) '+' reduce using rule 237 (statement) '-' reduce using rule 237 (statement) '~' reduce using rule 237 (statement) '!' reduce using rule 237 (statement) ';' reduce using rule 237 (statement)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 90 declaration → • declaration_specifiers ';' 91 | • declaration_specifiers init_declarator_list ';' 92 | • static_assert_declaration 93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 246 | '{' block_item_list • '}' 248 block_item_list → block_item_list • block_item 249 block_item → • declaration 250 | • statement 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 TYPEDEF_NAME shift, and go to state 1 ENUMERATION_CONSTANT shift, and go to state 82 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNAS shift, and go to state 26 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 27 GENERIC shift, and go to state 84 NORETURN shift, and go to state 28 STATIC_ASSERT shift, and go to state 29 THREAD_LOCAL shift, and go to state 30 '(' shift, and go to state 85 '{' shift, and go to state 125 '}' shift, and go to state 322 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 declaration go to state 212 declaration_specifiers go to state 128 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 static_assert_declaration go to state 42 statement go to state 213 labeled_statement go to state 214 compound_statement go to state 215 block_item go to state 323 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
247 block_item_list → block_item • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 247 (block_item_list) I_CONSTANT reduce using rule 247 (block_item_list) F_CONSTANT reduce using rule 247 (block_item_list) STRING_LITERAL reduce using rule 247 (block_item_list) FUNC_NAME reduce using rule 247 (block_item_list) SIZEOF reduce using rule 247 (block_item_list) INC_OP reduce using rule 247 (block_item_list) DEC_OP reduce using rule 247 (block_item_list) TYPEDEF_NAME reduce using rule 247 (block_item_list) ENUMERATION_CONSTANT reduce using rule 247 (block_item_list) TYPEDEF reduce using rule 247 (block_item_list) EXTERN reduce using rule 247 (block_item_list) STATIC reduce using rule 247 (block_item_list) AUTO reduce using rule 247 (block_item_list) REGISTER reduce using rule 247 (block_item_list) INLINE reduce using rule 247 (block_item_list) CONST reduce using rule 247 (block_item_list) RESTRICT reduce using rule 247 (block_item_list) VOLATILE reduce using rule 247 (block_item_list) BOOL reduce using rule 247 (block_item_list) CHAR reduce using rule 247 (block_item_list) SHORT reduce using rule 247 (block_item_list) INT reduce using rule 247 (block_item_list) LONG reduce using rule 247 (block_item_list) SIGNED reduce using rule 247 (block_item_list) UNSIGNED reduce using rule 247 (block_item_list) FLOAT reduce using rule 247 (block_item_list) DOUBLE reduce using rule 247 (block_item_list) VOID reduce using rule 247 (block_item_list) COMPLEX reduce using rule 247 (block_item_list) IMAGINARY reduce using rule 247 (block_item_list) STRUCT reduce using rule 247 (block_item_list) UNION reduce using rule 247 (block_item_list) ENUM reduce using rule 247 (block_item_list) CASE reduce using rule 247 (block_item_list) DEFAULT reduce using rule 247 (block_item_list) IF reduce using rule 247 (block_item_list) SWITCH reduce using rule 247 (block_item_list) WHILE reduce using rule 247 (block_item_list) DO reduce using rule 247 (block_item_list) FOR reduce using rule 247 (block_item_list) GOTO reduce using rule 247 (block_item_list) CONTINUE reduce using rule 247 (block_item_list) BREAK reduce using rule 247 (block_item_list) RETURN reduce using rule 247 (block_item_list) ALIGNAS reduce using rule 247 (block_item_list) ALIGNOF reduce using rule 247 (block_item_list) ATOMIC reduce using rule 247 (block_item_list) GENERIC reduce using rule 247 (block_item_list) NORETURN reduce using rule 247 (block_item_list) STATIC_ASSERT reduce using rule 247 (block_item_list) THREAD_LOCAL reduce using rule 247 (block_item_list) '(' reduce using rule 247 (block_item_list) '{' reduce using rule 247 (block_item_list) '}' reduce using rule 247 (block_item_list) '&' reduce using rule 247 (block_item_list) '*' reduce using rule 247 (block_item_list) '+' reduce using rule 247 (block_item_list) '-' reduce using rule 247 (block_item_list) '~' reduce using rule 247 (block_item_list) '!' reduce using rule 247 (block_item_list) ';' reduce using rule 247 (block_item_list)
238 statement → expression_statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 238 (statement) I_CONSTANT reduce using rule 238 (statement) F_CONSTANT reduce using rule 238 (statement) STRING_LITERAL reduce using rule 238 (statement) FUNC_NAME reduce using rule 238 (statement) SIZEOF reduce using rule 238 (statement) INC_OP reduce using rule 238 (statement) DEC_OP reduce using rule 238 (statement) TYPEDEF_NAME reduce using rule 238 (statement) ENUMERATION_CONSTANT reduce using rule 238 (statement) TYPEDEF reduce using rule 238 (statement) EXTERN reduce using rule 238 (statement) STATIC reduce using rule 238 (statement) AUTO reduce using rule 238 (statement) REGISTER reduce using rule 238 (statement) INLINE reduce using rule 238 (statement) CONST reduce using rule 238 (statement) RESTRICT reduce using rule 238 (statement) VOLATILE reduce using rule 238 (statement) BOOL reduce using rule 238 (statement) CHAR reduce using rule 238 (statement) SHORT reduce using rule 238 (statement) INT reduce using rule 238 (statement) LONG reduce using rule 238 (statement) SIGNED reduce using rule 238 (statement) UNSIGNED reduce using rule 238 (statement) FLOAT reduce using rule 238 (statement) DOUBLE reduce using rule 238 (statement) VOID reduce using rule 238 (statement) COMPLEX reduce using rule 238 (statement) IMAGINARY reduce using rule 238 (statement) STRUCT reduce using rule 238 (statement) UNION reduce using rule 238 (statement) ENUM reduce using rule 238 (statement) CASE reduce using rule 238 (statement) DEFAULT reduce using rule 238 (statement) IF reduce using rule 238 (statement) ELSE reduce using rule 238 (statement) SWITCH reduce using rule 238 (statement) WHILE reduce using rule 238 (statement) DO reduce using rule 238 (statement) FOR reduce using rule 238 (statement) GOTO reduce using rule 238 (statement) CONTINUE reduce using rule 238 (statement) BREAK reduce using rule 238 (statement) RETURN reduce using rule 238 (statement) ALIGNAS reduce using rule 238 (statement) ALIGNOF reduce using rule 238 (statement) ATOMIC reduce using rule 238 (statement) GENERIC reduce using rule 238 (statement) NORETURN reduce using rule 238 (statement) STATIC_ASSERT reduce using rule 238 (statement) THREAD_LOCAL reduce using rule 238 (statement) '(' reduce using rule 238 (statement) '{' reduce using rule 238 (statement) '}' reduce using rule 238 (statement) '&' reduce using rule 238 (statement) '*' reduce using rule 238 (statement) '+' reduce using rule 238 (statement) '-' reduce using rule 238 (statement) '~' reduce using rule 238 (statement) '!' reduce using rule 238 (statement) ';' reduce using rule 238 (statement)
239 statement → selection_statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 239 (statement) I_CONSTANT reduce using rule 239 (statement) F_CONSTANT reduce using rule 239 (statement) STRING_LITERAL reduce using rule 239 (statement) FUNC_NAME reduce using rule 239 (statement) SIZEOF reduce using rule 239 (statement) INC_OP reduce using rule 239 (statement) DEC_OP reduce using rule 239 (statement) TYPEDEF_NAME reduce using rule 239 (statement) ENUMERATION_CONSTANT reduce using rule 239 (statement) TYPEDEF reduce using rule 239 (statement) EXTERN reduce using rule 239 (statement) STATIC reduce using rule 239 (statement) AUTO reduce using rule 239 (statement) REGISTER reduce using rule 239 (statement) INLINE reduce using rule 239 (statement) CONST reduce using rule 239 (statement) RESTRICT reduce using rule 239 (statement) VOLATILE reduce using rule 239 (statement) BOOL reduce using rule 239 (statement) CHAR reduce using rule 239 (statement) SHORT reduce using rule 239 (statement) INT reduce using rule 239 (statement) LONG reduce using rule 239 (statement) SIGNED reduce using rule 239 (statement) UNSIGNED reduce using rule 239 (statement) FLOAT reduce using rule 239 (statement) DOUBLE reduce using rule 239 (statement) VOID reduce using rule 239 (statement) COMPLEX reduce using rule 239 (statement) IMAGINARY reduce using rule 239 (statement) STRUCT reduce using rule 239 (statement) UNION reduce using rule 239 (statement) ENUM reduce using rule 239 (statement) CASE reduce using rule 239 (statement) DEFAULT reduce using rule 239 (statement) IF reduce using rule 239 (statement) ELSE reduce using rule 239 (statement) SWITCH reduce using rule 239 (statement) WHILE reduce using rule 239 (statement) DO reduce using rule 239 (statement) FOR reduce using rule 239 (statement) GOTO reduce using rule 239 (statement) CONTINUE reduce using rule 239 (statement) BREAK reduce using rule 239 (statement) RETURN reduce using rule 239 (statement) ALIGNAS reduce using rule 239 (statement) ALIGNOF reduce using rule 239 (statement) ATOMIC reduce using rule 239 (statement) GENERIC reduce using rule 239 (statement) NORETURN reduce using rule 239 (statement) STATIC_ASSERT reduce using rule 239 (statement) THREAD_LOCAL reduce using rule 239 (statement) '(' reduce using rule 239 (statement) '{' reduce using rule 239 (statement) '}' reduce using rule 239 (statement) '&' reduce using rule 239 (statement) '*' reduce using rule 239 (statement) '+' reduce using rule 239 (statement) '-' reduce using rule 239 (statement) '~' reduce using rule 239 (statement) '!' reduce using rule 239 (statement) ';' reduce using rule 239 (statement)
240 statement → iteration_statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 240 (statement) I_CONSTANT reduce using rule 240 (statement) F_CONSTANT reduce using rule 240 (statement) STRING_LITERAL reduce using rule 240 (statement) FUNC_NAME reduce using rule 240 (statement) SIZEOF reduce using rule 240 (statement) INC_OP reduce using rule 240 (statement) DEC_OP reduce using rule 240 (statement) TYPEDEF_NAME reduce using rule 240 (statement) ENUMERATION_CONSTANT reduce using rule 240 (statement) TYPEDEF reduce using rule 240 (statement) EXTERN reduce using rule 240 (statement) STATIC reduce using rule 240 (statement) AUTO reduce using rule 240 (statement) REGISTER reduce using rule 240 (statement) INLINE reduce using rule 240 (statement) CONST reduce using rule 240 (statement) RESTRICT reduce using rule 240 (statement) VOLATILE reduce using rule 240 (statement) BOOL reduce using rule 240 (statement) CHAR reduce using rule 240 (statement) SHORT reduce using rule 240 (statement) INT reduce using rule 240 (statement) LONG reduce using rule 240 (statement) SIGNED reduce using rule 240 (statement) UNSIGNED reduce using rule 240 (statement) FLOAT reduce using rule 240 (statement) DOUBLE reduce using rule 240 (statement) VOID reduce using rule 240 (statement) COMPLEX reduce using rule 240 (statement) IMAGINARY reduce using rule 240 (statement) STRUCT reduce using rule 240 (statement) UNION reduce using rule 240 (statement) ENUM reduce using rule 240 (statement) CASE reduce using rule 240 (statement) DEFAULT reduce using rule 240 (statement) IF reduce using rule 240 (statement) ELSE reduce using rule 240 (statement) SWITCH reduce using rule 240 (statement) WHILE reduce using rule 240 (statement) DO reduce using rule 240 (statement) FOR reduce using rule 240 (statement) GOTO reduce using rule 240 (statement) CONTINUE reduce using rule 240 (statement) BREAK reduce using rule 240 (statement) RETURN reduce using rule 240 (statement) ALIGNAS reduce using rule 240 (statement) ALIGNOF reduce using rule 240 (statement) ATOMIC reduce using rule 240 (statement) GENERIC reduce using rule 240 (statement) NORETURN reduce using rule 240 (statement) STATIC_ASSERT reduce using rule 240 (statement) THREAD_LOCAL reduce using rule 240 (statement) '(' reduce using rule 240 (statement) '{' reduce using rule 240 (statement) '}' reduce using rule 240 (statement) '&' reduce using rule 240 (statement) '*' reduce using rule 240 (statement) '+' reduce using rule 240 (statement) '-' reduce using rule 240 (statement) '~' reduce using rule 240 (statement) '!' reduce using rule 240 (statement) ';' reduce using rule 240 (statement)
241 statement → jump_statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 241 (statement) I_CONSTANT reduce using rule 241 (statement) F_CONSTANT reduce using rule 241 (statement) STRING_LITERAL reduce using rule 241 (statement) FUNC_NAME reduce using rule 241 (statement) SIZEOF reduce using rule 241 (statement) INC_OP reduce using rule 241 (statement) DEC_OP reduce using rule 241 (statement) TYPEDEF_NAME reduce using rule 241 (statement) ENUMERATION_CONSTANT reduce using rule 241 (statement) TYPEDEF reduce using rule 241 (statement) EXTERN reduce using rule 241 (statement) STATIC reduce using rule 241 (statement) AUTO reduce using rule 241 (statement) REGISTER reduce using rule 241 (statement) INLINE reduce using rule 241 (statement) CONST reduce using rule 241 (statement) RESTRICT reduce using rule 241 (statement) VOLATILE reduce using rule 241 (statement) BOOL reduce using rule 241 (statement) CHAR reduce using rule 241 (statement) SHORT reduce using rule 241 (statement) INT reduce using rule 241 (statement) LONG reduce using rule 241 (statement) SIGNED reduce using rule 241 (statement) UNSIGNED reduce using rule 241 (statement) FLOAT reduce using rule 241 (statement) DOUBLE reduce using rule 241 (statement) VOID reduce using rule 241 (statement) COMPLEX reduce using rule 241 (statement) IMAGINARY reduce using rule 241 (statement) STRUCT reduce using rule 241 (statement) UNION reduce using rule 241 (statement) ENUM reduce using rule 241 (statement) CASE reduce using rule 241 (statement) DEFAULT reduce using rule 241 (statement) IF reduce using rule 241 (statement) ELSE reduce using rule 241 (statement) SWITCH reduce using rule 241 (statement) WHILE reduce using rule 241 (statement) DO reduce using rule 241 (statement) FOR reduce using rule 241 (statement) GOTO reduce using rule 241 (statement) CONTINUE reduce using rule 241 (statement) BREAK reduce using rule 241 (statement) RETURN reduce using rule 241 (statement) ALIGNAS reduce using rule 241 (statement) ALIGNOF reduce using rule 241 (statement) ATOMIC reduce using rule 241 (statement) GENERIC reduce using rule 241 (statement) NORETURN reduce using rule 241 (statement) STATIC_ASSERT reduce using rule 241 (statement) THREAD_LOCAL reduce using rule 241 (statement) '(' reduce using rule 241 (statement) '{' reduce using rule 241 (statement) '}' reduce using rule 241 (statement) '&' reduce using rule 241 (statement) '*' reduce using rule 241 (statement) '+' reduce using rule 241 (statement) '-' reduce using rule 241 (statement) '~' reduce using rule 241 (statement) '!' reduce using rule 241 (statement) ';' reduce using rule 241 (statement)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 223 initializer → • '{' initializer_list '}' 223 | '{' • initializer_list '}' 224 | • '{' initializer_list ',' '}' 224 | '{' • initializer_list ',' '}' 225 | • assignment_expression 226 initializer_list → • designation initializer 227 | • initializer 228 | • initializer_list ',' designation initializer 229 | • initializer_list ',' initializer 230 designation → • designator_list '=' 231 designator_list → • designator 232 | • designator_list designator 233 designator → • '[' constant_expression ']' 234 | • '.' IDENTIFIER IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '[' shift, and go to state 324 '.' shift, and go to state 325 '{' shift, and go to state 222 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 223 initializer go to state 326 initializer_list go to state 327 designation go to state 328 designator_list go to state 329 designator go to state 330
225 initializer → assignment_expression • [',', '}', ';'] ',' reduce using rule 225 (initializer) '}' reduce using rule 225 (initializer) ';' reduce using rule 225 (initializer)
105 init_declarator → declarator '=' initializer • [',', ';'] ',' reduce using rule 105 (init_declarator) ';' reduce using rule 105 (init_declarator)
274 declaration_list → declaration_list declaration • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '{'] TYPEDEF_NAME reduce using rule 274 (declaration_list) TYPEDEF reduce using rule 274 (declaration_list) EXTERN reduce using rule 274 (declaration_list) STATIC reduce using rule 274 (declaration_list) AUTO reduce using rule 274 (declaration_list) REGISTER reduce using rule 274 (declaration_list) INLINE reduce using rule 274 (declaration_list) CONST reduce using rule 274 (declaration_list) RESTRICT reduce using rule 274 (declaration_list) VOLATILE reduce using rule 274 (declaration_list) BOOL reduce using rule 274 (declaration_list) CHAR reduce using rule 274 (declaration_list) SHORT reduce using rule 274 (declaration_list) INT reduce using rule 274 (declaration_list) LONG reduce using rule 274 (declaration_list) SIGNED reduce using rule 274 (declaration_list) UNSIGNED reduce using rule 274 (declaration_list) FLOAT reduce using rule 274 (declaration_list) DOUBLE reduce using rule 274 (declaration_list) VOID reduce using rule 274 (declaration_list) COMPLEX reduce using rule 274 (declaration_list) IMAGINARY reduce using rule 274 (declaration_list) STRUCT reduce using rule 274 (declaration_list) UNION reduce using rule 274 (declaration_list) ENUM reduce using rule 274 (declaration_list) ALIGNAS reduce using rule 274 (declaration_list) ATOMIC reduce using rule 274 (declaration_list) NORETURN reduce using rule 274 (declaration_list) STATIC_ASSERT reduce using rule 274 (declaration_list) THREAD_LOCAL reduce using rule 274 (declaration_list) '{' reduce using rule 274 (declaration_list)
271 function_definition → declaration_specifiers declarator declaration_list compound_statement • [$end, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL] $end reduce using rule 271 (function_definition) TYPEDEF_NAME reduce using rule 271 (function_definition) TYPEDEF reduce using rule 271 (function_definition) EXTERN reduce using rule 271 (function_definition) STATIC reduce using rule 271 (function_definition) AUTO reduce using rule 271 (function_definition) REGISTER reduce using rule 271 (function_definition) INLINE reduce using rule 271 (function_definition) CONST reduce using rule 271 (function_definition) RESTRICT reduce using rule 271 (function_definition) VOLATILE reduce using rule 271 (function_definition) BOOL reduce using rule 271 (function_definition) CHAR reduce using rule 271 (function_definition) SHORT reduce using rule 271 (function_definition) INT reduce using rule 271 (function_definition) LONG reduce using rule 271 (function_definition) SIGNED reduce using rule 271 (function_definition) UNSIGNED reduce using rule 271 (function_definition) FLOAT reduce using rule 271 (function_definition) DOUBLE reduce using rule 271 (function_definition) VOID reduce using rule 271 (function_definition) COMPLEX reduce using rule 271 (function_definition) IMAGINARY reduce using rule 271 (function_definition) STRUCT reduce using rule 271 (function_definition) UNION reduce using rule 271 (function_definition) ENUM reduce using rule 271 (function_definition) ALIGNAS reduce using rule 271 (function_definition) ATOMIC reduce using rule 271 (function_definition) NORETURN reduce using rule 271 (function_definition) STATIC_ASSERT reduce using rule 271 (function_definition) THREAD_LOCAL reduce using rule 271 (function_definition)
195 identifier_list → IDENTIFIER • [')', ','] ')' reduce using rule 195 (identifier_list) ',' reduce using rule 195 (identifier_list)
180 direct_declarator → direct_declarator '(' ')' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 180 (direct_declarator) TYPEDEF reduce using rule 180 (direct_declarator) EXTERN reduce using rule 180 (direct_declarator) STATIC reduce using rule 180 (direct_declarator) AUTO reduce using rule 180 (direct_declarator) REGISTER reduce using rule 180 (direct_declarator) INLINE reduce using rule 180 (direct_declarator) CONST reduce using rule 180 (direct_declarator) RESTRICT reduce using rule 180 (direct_declarator) VOLATILE reduce using rule 180 (direct_declarator) BOOL reduce using rule 180 (direct_declarator) CHAR reduce using rule 180 (direct_declarator) SHORT reduce using rule 180 (direct_declarator) INT reduce using rule 180 (direct_declarator) LONG reduce using rule 180 (direct_declarator) SIGNED reduce using rule 180 (direct_declarator) UNSIGNED reduce using rule 180 (direct_declarator) FLOAT reduce using rule 180 (direct_declarator) DOUBLE reduce using rule 180 (direct_declarator) VOID reduce using rule 180 (direct_declarator) COMPLEX reduce using rule 180 (direct_declarator) IMAGINARY reduce using rule 180 (direct_declarator) STRUCT reduce using rule 180 (direct_declarator) UNION reduce using rule 180 (direct_declarator) ENUM reduce using rule 180 (direct_declarator) ALIGNAS reduce using rule 180 (direct_declarator) ATOMIC reduce using rule 180 (direct_declarator) NORETURN reduce using rule 180 (direct_declarator) STATIC_ASSERT reduce using rule 180 (direct_declarator) THREAD_LOCAL reduce using rule 180 (direct_declarator) '(' reduce using rule 180 (direct_declarator) ')' reduce using rule 180 (direct_declarator) ',' reduce using rule 180 (direct_declarator) ':' reduce using rule 180 (direct_declarator) '[' reduce using rule 180 (direct_declarator) '{' reduce using rule 180 (direct_declarator) '=' reduce using rule 180 (direct_declarator) ';' reduce using rule 180 (direct_declarator)
166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' 192 parameter_declaration → declaration_specifiers • declarator 193 | declaration_specifiers • abstract_declarator 194 | declaration_specifiers • [')', ','] 199 abstract_declarator → • pointer direct_abstract_declarator 200 | • pointer 201 | • direct_abstract_declarator 202 direct_abstract_declarator → • '(' abstract_declarator ')' 203 | • '[' ']' 204 | • '[' '*' ']' 205 | • '[' STATIC type_qualifier_list assignment_expression ']' 206 | • '[' STATIC assignment_expression ']' 207 | • '[' type_qualifier_list STATIC assignment_expression ']' 208 | • '[' type_qualifier_list assignment_expression ']' 209 | • '[' type_qualifier_list ']' 210 | • '[' assignment_expression ']' 211 | • direct_abstract_declarator '[' ']' 212 | • direct_abstract_declarator '[' '*' ']' 213 | • direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' 214 | • direct_abstract_declarator '[' STATIC assignment_expression ']' 215 | • direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' 216 | • direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' 217 | • direct_abstract_declarator '[' type_qualifier_list ']' 218 | • direct_abstract_declarator '[' assignment_expression ']' 219 | • '(' ')' 220 | • '(' parameter_type_list ')' 221 | • direct_abstract_declarator '(' ')' 222 | • direct_abstract_declarator '(' parameter_type_list ')' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 331 '[' shift, and go to state 184 '*' shift, and go to state 53 ')' reduce using rule 194 (parameter_declaration) ',' reduce using rule 194 (parameter_declaration) declarator go to state 332 direct_declarator go to state 58 pointer go to state 333 abstract_declarator go to state 334 direct_abstract_declarator go to state 187
179 direct_declarator → direct_declarator '(' parameter_type_list • ')' ')' shift, and go to state 335
188 parameter_type_list → parameter_list • ',' ELLIPSIS 189 | parameter_list • [')'] 191 parameter_list → parameter_list • ',' parameter_declaration ',' shift, and go to state 336 ')' reduce using rule 189 (parameter_type_list)
190 parameter_list → parameter_declaration • [')', ','] ')' reduce using rule 190 (parameter_list) ',' reduce using rule 190 (parameter_list)
181 direct_declarator → direct_declarator '(' identifier_list • ')' 196 identifier_list → identifier_list • ',' IDENTIFIER ')' shift, and go to state 337 ',' shift, and go to state 338
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 172 direct_declarator → direct_declarator '[' STATIC • type_qualifier_list assignment_expression ']' 173 | direct_declarator '[' STATIC • assignment_expression ']' 186 type_qualifier_list → • type_qualifier 187 | • type_qualifier_list type_qualifier IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 339 type_qualifier go to state 120 type_qualifier_list go to state 340
170 direct_declarator → direct_declarator '[' ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 170 (direct_declarator) TYPEDEF reduce using rule 170 (direct_declarator) EXTERN reduce using rule 170 (direct_declarator) STATIC reduce using rule 170 (direct_declarator) AUTO reduce using rule 170 (direct_declarator) REGISTER reduce using rule 170 (direct_declarator) INLINE reduce using rule 170 (direct_declarator) CONST reduce using rule 170 (direct_declarator) RESTRICT reduce using rule 170 (direct_declarator) VOLATILE reduce using rule 170 (direct_declarator) BOOL reduce using rule 170 (direct_declarator) CHAR reduce using rule 170 (direct_declarator) SHORT reduce using rule 170 (direct_declarator) INT reduce using rule 170 (direct_declarator) LONG reduce using rule 170 (direct_declarator) SIGNED reduce using rule 170 (direct_declarator) UNSIGNED reduce using rule 170 (direct_declarator) FLOAT reduce using rule 170 (direct_declarator) DOUBLE reduce using rule 170 (direct_declarator) VOID reduce using rule 170 (direct_declarator) COMPLEX reduce using rule 170 (direct_declarator) IMAGINARY reduce using rule 170 (direct_declarator) STRUCT reduce using rule 170 (direct_declarator) UNION reduce using rule 170 (direct_declarator) ENUM reduce using rule 170 (direct_declarator) ALIGNAS reduce using rule 170 (direct_declarator) ATOMIC reduce using rule 170 (direct_declarator) NORETURN reduce using rule 170 (direct_declarator) STATIC_ASSERT reduce using rule 170 (direct_declarator) THREAD_LOCAL reduce using rule 170 (direct_declarator) '(' reduce using rule 170 (direct_declarator) ')' reduce using rule 170 (direct_declarator) ',' reduce using rule 170 (direct_declarator) ':' reduce using rule 170 (direct_declarator) '[' reduce using rule 170 (direct_declarator) '{' reduce using rule 170 (direct_declarator) '=' reduce using rule 170 (direct_declarator) ';' reduce using rule 170 (direct_declarator)
37 unary_operator → '*' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] 171 direct_declarator → direct_declarator '[' '*' • ']' ']' shift, and go to state 341 IDENTIFIER reduce using rule 37 (unary_operator) I_CONSTANT reduce using rule 37 (unary_operator) F_CONSTANT reduce using rule 37 (unary_operator) STRING_LITERAL reduce using rule 37 (unary_operator) FUNC_NAME reduce using rule 37 (unary_operator) SIZEOF reduce using rule 37 (unary_operator) INC_OP reduce using rule 37 (unary_operator) DEC_OP reduce using rule 37 (unary_operator) ENUMERATION_CONSTANT reduce using rule 37 (unary_operator) ALIGNOF reduce using rule 37 (unary_operator) GENERIC reduce using rule 37 (unary_operator) '(' reduce using rule 37 (unary_operator) '&' reduce using rule 37 (unary_operator) '*' reduce using rule 37 (unary_operator) '+' reduce using rule 37 (unary_operator) '-' reduce using rule 37 (unary_operator) '~' reduce using rule 37 (unary_operator) '!' reduce using rule 37 (unary_operator)
178 direct_declarator → direct_declarator '[' assignment_expression • ']' ']' shift, and go to state 342
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 174 direct_declarator → direct_declarator '[' type_qualifier_list • '*' ']' 175 | direct_declarator '[' type_qualifier_list • STATIC assignment_expression ']' 176 | direct_declarator '[' type_qualifier_list • assignment_expression ']' 177 | direct_declarator '[' type_qualifier_list • ']' 187 type_qualifier_list → type_qualifier_list • type_qualifier IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 STATIC shift, and go to state 343 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ']' shift, and go to state 344 '&' shift, and go to state 86 '*' shift, and go to state 345 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 346 type_qualifier go to state 193
113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 130 | struct_or_union IDENTIFIER '{' struct_declaration_list • '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 135 struct_declaration_list → struct_declaration_list • struct_declaration 136 struct_declaration → • specifier_qualifier_list ';' 137 | • specifier_qualifier_list struct_declarator_list ';' 138 | • static_assert_declaration 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ATOMIC shift, and go to state 27 STATIC_ASSERT shift, and go to state 29 '}' shift, and go to state 347 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 struct_declaration go to state 241 specifier_qualifier_list go to state 137 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 static_assert_declaration go to state 138
129 struct_or_union_specifier → struct_or_union '{' struct_declaration_list '}' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 129 (struct_or_union_specifier) TYPEDEF_NAME reduce using rule 129 (struct_or_union_specifier) TYPEDEF reduce using rule 129 (struct_or_union_specifier) EXTERN reduce using rule 129 (struct_or_union_specifier) STATIC reduce using rule 129 (struct_or_union_specifier) AUTO reduce using rule 129 (struct_or_union_specifier) REGISTER reduce using rule 129 (struct_or_union_specifier) INLINE reduce using rule 129 (struct_or_union_specifier) CONST reduce using rule 129 (struct_or_union_specifier) RESTRICT reduce using rule 129 (struct_or_union_specifier) VOLATILE reduce using rule 129 (struct_or_union_specifier) BOOL reduce using rule 129 (struct_or_union_specifier) CHAR reduce using rule 129 (struct_or_union_specifier) SHORT reduce using rule 129 (struct_or_union_specifier) INT reduce using rule 129 (struct_or_union_specifier) LONG reduce using rule 129 (struct_or_union_specifier) SIGNED reduce using rule 129 (struct_or_union_specifier) UNSIGNED reduce using rule 129 (struct_or_union_specifier) FLOAT reduce using rule 129 (struct_or_union_specifier) DOUBLE reduce using rule 129 (struct_or_union_specifier) VOID reduce using rule 129 (struct_or_union_specifier) COMPLEX reduce using rule 129 (struct_or_union_specifier) IMAGINARY reduce using rule 129 (struct_or_union_specifier) STRUCT reduce using rule 129 (struct_or_union_specifier) UNION reduce using rule 129 (struct_or_union_specifier) ENUM reduce using rule 129 (struct_or_union_specifier) ALIGNAS reduce using rule 129 (struct_or_union_specifier) ATOMIC reduce using rule 129 (struct_or_union_specifier) NORETURN reduce using rule 129 (struct_or_union_specifier) THREAD_LOCAL reduce using rule 129 (struct_or_union_specifier) '(' reduce using rule 129 (struct_or_union_specifier) ')' reduce using rule 129 (struct_or_union_specifier) ',' reduce using rule 129 (struct_or_union_specifier) ':' reduce using rule 129 (struct_or_union_specifier) '[' reduce using rule 129 (struct_or_union_specifier) '*' reduce using rule 129 (struct_or_union_specifier) ';' reduce using rule 129 (struct_or_union_specifier)
135 struct_declaration_list → struct_declaration_list struct_declaration • [TYPEDEF_NAME, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ATOMIC, STATIC_ASSERT, '}'] TYPEDEF_NAME reduce using rule 135 (struct_declaration_list) CONST reduce using rule 135 (struct_declaration_list) RESTRICT reduce using rule 135 (struct_declaration_list) VOLATILE reduce using rule 135 (struct_declaration_list) BOOL reduce using rule 135 (struct_declaration_list) CHAR reduce using rule 135 (struct_declaration_list) SHORT reduce using rule 135 (struct_declaration_list) INT reduce using rule 135 (struct_declaration_list) LONG reduce using rule 135 (struct_declaration_list) SIGNED reduce using rule 135 (struct_declaration_list) UNSIGNED reduce using rule 135 (struct_declaration_list) FLOAT reduce using rule 135 (struct_declaration_list) DOUBLE reduce using rule 135 (struct_declaration_list) VOID reduce using rule 135 (struct_declaration_list) COMPLEX reduce using rule 135 (struct_declaration_list) IMAGINARY reduce using rule 135 (struct_declaration_list) STRUCT reduce using rule 135 (struct_declaration_list) UNION reduce using rule 135 (struct_declaration_list) ENUM reduce using rule 135 (struct_declaration_list) ATOMIC reduce using rule 135 (struct_declaration_list) STATIC_ASSERT reduce using rule 135 (struct_declaration_list) '}' reduce using rule 135 (struct_declaration_list)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 89 constant_expression → • conditional_expression 145 struct_declarator → ':' • constant_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 110 constant_expression go to state 348
136 struct_declaration → specifier_qualifier_list ';' • [TYPEDEF_NAME, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ATOMIC, STATIC_ASSERT, '}'] TYPEDEF_NAME reduce using rule 136 (struct_declaration) CONST reduce using rule 136 (struct_declaration) RESTRICT reduce using rule 136 (struct_declaration) VOLATILE reduce using rule 136 (struct_declaration) BOOL reduce using rule 136 (struct_declaration) CHAR reduce using rule 136 (struct_declaration) SHORT reduce using rule 136 (struct_declaration) INT reduce using rule 136 (struct_declaration) LONG reduce using rule 136 (struct_declaration) SIGNED reduce using rule 136 (struct_declaration) UNSIGNED reduce using rule 136 (struct_declaration) FLOAT reduce using rule 136 (struct_declaration) DOUBLE reduce using rule 136 (struct_declaration) VOID reduce using rule 136 (struct_declaration) COMPLEX reduce using rule 136 (struct_declaration) IMAGINARY reduce using rule 136 (struct_declaration) STRUCT reduce using rule 136 (struct_declaration) UNION reduce using rule 136 (struct_declaration) ENUM reduce using rule 136 (struct_declaration) ATOMIC reduce using rule 136 (struct_declaration) STATIC_ASSERT reduce using rule 136 (struct_declaration) '}' reduce using rule 136 (struct_declaration)
137 struct_declaration → specifier_qualifier_list struct_declarator_list • ';' 144 struct_declarator_list → struct_declarator_list • ',' struct_declarator ',' shift, and go to state 349 ';' shift, and go to state 350
143 struct_declarator_list → struct_declarator • [',', ';'] ',' reduce using rule 143 (struct_declarator_list) ';' reduce using rule 143 (struct_declarator_list)
146 struct_declarator → declarator • ':' constant_expression 147 | declarator • [',', ';'] ':' shift, and go to state 351 ',' reduce using rule 147 (struct_declarator) ';' reduce using rule 147 (struct_declarator)
9 enumeration_constant → • IDENTIFIER 151 enum_specifier → ENUM IDENTIFIER '{' enumerator_list ',' • '}' 154 enumerator_list → enumerator_list ',' • enumerator 155 enumerator → • enumeration_constant '=' constant_expression 156 | • enumeration_constant IDENTIFIER shift, and go to state 70 '}' shift, and go to state 352 enumeration_constant go to state 71 enumerator go to state 251
150 enum_specifier → ENUM IDENTIFIER '{' enumerator_list '}' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 150 (enum_specifier) TYPEDEF_NAME reduce using rule 150 (enum_specifier) TYPEDEF reduce using rule 150 (enum_specifier) EXTERN reduce using rule 150 (enum_specifier) STATIC reduce using rule 150 (enum_specifier) AUTO reduce using rule 150 (enum_specifier) REGISTER reduce using rule 150 (enum_specifier) INLINE reduce using rule 150 (enum_specifier) CONST reduce using rule 150 (enum_specifier) RESTRICT reduce using rule 150 (enum_specifier) VOLATILE reduce using rule 150 (enum_specifier) BOOL reduce using rule 150 (enum_specifier) CHAR reduce using rule 150 (enum_specifier) SHORT reduce using rule 150 (enum_specifier) INT reduce using rule 150 (enum_specifier) LONG reduce using rule 150 (enum_specifier) SIGNED reduce using rule 150 (enum_specifier) UNSIGNED reduce using rule 150 (enum_specifier) FLOAT reduce using rule 150 (enum_specifier) DOUBLE reduce using rule 150 (enum_specifier) VOID reduce using rule 150 (enum_specifier) COMPLEX reduce using rule 150 (enum_specifier) IMAGINARY reduce using rule 150 (enum_specifier) STRUCT reduce using rule 150 (enum_specifier) UNION reduce using rule 150 (enum_specifier) ENUM reduce using rule 150 (enum_specifier) ALIGNAS reduce using rule 150 (enum_specifier) ATOMIC reduce using rule 150 (enum_specifier) NORETURN reduce using rule 150 (enum_specifier) THREAD_LOCAL reduce using rule 150 (enum_specifier) '(' reduce using rule 150 (enum_specifier) ')' reduce using rule 150 (enum_specifier) ',' reduce using rule 150 (enum_specifier) ':' reduce using rule 150 (enum_specifier) '[' reduce using rule 150 (enum_specifier) '*' reduce using rule 150 (enum_specifier) ';' reduce using rule 150 (enum_specifier)
155 enumerator → enumeration_constant '=' constant_expression • [',', '}'] ',' reduce using rule 155 (enumerator) '}' reduce using rule 155 (enumerator)
149 enum_specifier → ENUM '{' enumerator_list ',' '}' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 149 (enum_specifier) TYPEDEF_NAME reduce using rule 149 (enum_specifier) TYPEDEF reduce using rule 149 (enum_specifier) EXTERN reduce using rule 149 (enum_specifier) STATIC reduce using rule 149 (enum_specifier) AUTO reduce using rule 149 (enum_specifier) REGISTER reduce using rule 149 (enum_specifier) INLINE reduce using rule 149 (enum_specifier) CONST reduce using rule 149 (enum_specifier) RESTRICT reduce using rule 149 (enum_specifier) VOLATILE reduce using rule 149 (enum_specifier) BOOL reduce using rule 149 (enum_specifier) CHAR reduce using rule 149 (enum_specifier) SHORT reduce using rule 149 (enum_specifier) INT reduce using rule 149 (enum_specifier) LONG reduce using rule 149 (enum_specifier) SIGNED reduce using rule 149 (enum_specifier) UNSIGNED reduce using rule 149 (enum_specifier) FLOAT reduce using rule 149 (enum_specifier) DOUBLE reduce using rule 149 (enum_specifier) VOID reduce using rule 149 (enum_specifier) COMPLEX reduce using rule 149 (enum_specifier) IMAGINARY reduce using rule 149 (enum_specifier) STRUCT reduce using rule 149 (enum_specifier) UNION reduce using rule 149 (enum_specifier) ENUM reduce using rule 149 (enum_specifier) ALIGNAS reduce using rule 149 (enum_specifier) ATOMIC reduce using rule 149 (enum_specifier) NORETURN reduce using rule 149 (enum_specifier) THREAD_LOCAL reduce using rule 149 (enum_specifier) '(' reduce using rule 149 (enum_specifier) ')' reduce using rule 149 (enum_specifier) ',' reduce using rule 149 (enum_specifier) ':' reduce using rule 149 (enum_specifier) '[' reduce using rule 149 (enum_specifier) '*' reduce using rule 149 (enum_specifier) ';' reduce using rule 149 (enum_specifier)
154 enumerator_list → enumerator_list ',' enumerator • [',', '}'] ',' reduce using rule 154 (enumerator_list) '}' reduce using rule 154 (enumerator_list)
25 postfix_expression → '(' type_name • ')' '{' initializer_list '}' 26 | '(' type_name • ')' '{' initializer_list ',' '}' 34 unary_expression → SIZEOF '(' type_name • ')' ')' shift, and go to state 353
25 postfix_expression → '(' type_name • ')' '{' initializer_list '}' 26 | '(' type_name • ')' '{' initializer_list ',' '}' ')' shift, and go to state 354
35 unary_expression → ALIGNOF '(' type_name • ')' ')' shift, and go to state 355
12 generic_selection → GENERIC '(' assignment_expression • ',' generic_assoc_list ')' ',' shift, and go to state 356
77 assignment_operator → MUL_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 77 (assignment_operator) I_CONSTANT reduce using rule 77 (assignment_operator) F_CONSTANT reduce using rule 77 (assignment_operator) STRING_LITERAL reduce using rule 77 (assignment_operator) FUNC_NAME reduce using rule 77 (assignment_operator) SIZEOF reduce using rule 77 (assignment_operator) INC_OP reduce using rule 77 (assignment_operator) DEC_OP reduce using rule 77 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 77 (assignment_operator) ALIGNOF reduce using rule 77 (assignment_operator) GENERIC reduce using rule 77 (assignment_operator) '(' reduce using rule 77 (assignment_operator) '&' reduce using rule 77 (assignment_operator) '*' reduce using rule 77 (assignment_operator) '+' reduce using rule 77 (assignment_operator) '-' reduce using rule 77 (assignment_operator) '~' reduce using rule 77 (assignment_operator) '!' reduce using rule 77 (assignment_operator)
78 assignment_operator → DIV_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 78 (assignment_operator) I_CONSTANT reduce using rule 78 (assignment_operator) F_CONSTANT reduce using rule 78 (assignment_operator) STRING_LITERAL reduce using rule 78 (assignment_operator) FUNC_NAME reduce using rule 78 (assignment_operator) SIZEOF reduce using rule 78 (assignment_operator) INC_OP reduce using rule 78 (assignment_operator) DEC_OP reduce using rule 78 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 78 (assignment_operator) ALIGNOF reduce using rule 78 (assignment_operator) GENERIC reduce using rule 78 (assignment_operator) '(' reduce using rule 78 (assignment_operator) '&' reduce using rule 78 (assignment_operator) '*' reduce using rule 78 (assignment_operator) '+' reduce using rule 78 (assignment_operator) '-' reduce using rule 78 (assignment_operator) '~' reduce using rule 78 (assignment_operator) '!' reduce using rule 78 (assignment_operator)
79 assignment_operator → MOD_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 79 (assignment_operator) I_CONSTANT reduce using rule 79 (assignment_operator) F_CONSTANT reduce using rule 79 (assignment_operator) STRING_LITERAL reduce using rule 79 (assignment_operator) FUNC_NAME reduce using rule 79 (assignment_operator) SIZEOF reduce using rule 79 (assignment_operator) INC_OP reduce using rule 79 (assignment_operator) DEC_OP reduce using rule 79 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 79 (assignment_operator) ALIGNOF reduce using rule 79 (assignment_operator) GENERIC reduce using rule 79 (assignment_operator) '(' reduce using rule 79 (assignment_operator) '&' reduce using rule 79 (assignment_operator) '*' reduce using rule 79 (assignment_operator) '+' reduce using rule 79 (assignment_operator) '-' reduce using rule 79 (assignment_operator) '~' reduce using rule 79 (assignment_operator) '!' reduce using rule 79 (assignment_operator)
80 assignment_operator → ADD_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 80 (assignment_operator) I_CONSTANT reduce using rule 80 (assignment_operator) F_CONSTANT reduce using rule 80 (assignment_operator) STRING_LITERAL reduce using rule 80 (assignment_operator) FUNC_NAME reduce using rule 80 (assignment_operator) SIZEOF reduce using rule 80 (assignment_operator) INC_OP reduce using rule 80 (assignment_operator) DEC_OP reduce using rule 80 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 80 (assignment_operator) ALIGNOF reduce using rule 80 (assignment_operator) GENERIC reduce using rule 80 (assignment_operator) '(' reduce using rule 80 (assignment_operator) '&' reduce using rule 80 (assignment_operator) '*' reduce using rule 80 (assignment_operator) '+' reduce using rule 80 (assignment_operator) '-' reduce using rule 80 (assignment_operator) '~' reduce using rule 80 (assignment_operator) '!' reduce using rule 80 (assignment_operator)
81 assignment_operator → SUB_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 81 (assignment_operator) I_CONSTANT reduce using rule 81 (assignment_operator) F_CONSTANT reduce using rule 81 (assignment_operator) STRING_LITERAL reduce using rule 81 (assignment_operator) FUNC_NAME reduce using rule 81 (assignment_operator) SIZEOF reduce using rule 81 (assignment_operator) INC_OP reduce using rule 81 (assignment_operator) DEC_OP reduce using rule 81 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 81 (assignment_operator) ALIGNOF reduce using rule 81 (assignment_operator) GENERIC reduce using rule 81 (assignment_operator) '(' reduce using rule 81 (assignment_operator) '&' reduce using rule 81 (assignment_operator) '*' reduce using rule 81 (assignment_operator) '+' reduce using rule 81 (assignment_operator) '-' reduce using rule 81 (assignment_operator) '~' reduce using rule 81 (assignment_operator) '!' reduce using rule 81 (assignment_operator)
82 assignment_operator → LEFT_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 82 (assignment_operator) I_CONSTANT reduce using rule 82 (assignment_operator) F_CONSTANT reduce using rule 82 (assignment_operator) STRING_LITERAL reduce using rule 82 (assignment_operator) FUNC_NAME reduce using rule 82 (assignment_operator) SIZEOF reduce using rule 82 (assignment_operator) INC_OP reduce using rule 82 (assignment_operator) DEC_OP reduce using rule 82 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 82 (assignment_operator) ALIGNOF reduce using rule 82 (assignment_operator) GENERIC reduce using rule 82 (assignment_operator) '(' reduce using rule 82 (assignment_operator) '&' reduce using rule 82 (assignment_operator) '*' reduce using rule 82 (assignment_operator) '+' reduce using rule 82 (assignment_operator) '-' reduce using rule 82 (assignment_operator) '~' reduce using rule 82 (assignment_operator) '!' reduce using rule 82 (assignment_operator)
83 assignment_operator → RIGHT_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 83 (assignment_operator) I_CONSTANT reduce using rule 83 (assignment_operator) F_CONSTANT reduce using rule 83 (assignment_operator) STRING_LITERAL reduce using rule 83 (assignment_operator) FUNC_NAME reduce using rule 83 (assignment_operator) SIZEOF reduce using rule 83 (assignment_operator) INC_OP reduce using rule 83 (assignment_operator) DEC_OP reduce using rule 83 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 83 (assignment_operator) ALIGNOF reduce using rule 83 (assignment_operator) GENERIC reduce using rule 83 (assignment_operator) '(' reduce using rule 83 (assignment_operator) '&' reduce using rule 83 (assignment_operator) '*' reduce using rule 83 (assignment_operator) '+' reduce using rule 83 (assignment_operator) '-' reduce using rule 83 (assignment_operator) '~' reduce using rule 83 (assignment_operator) '!' reduce using rule 83 (assignment_operator)
84 assignment_operator → AND_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 84 (assignment_operator) I_CONSTANT reduce using rule 84 (assignment_operator) F_CONSTANT reduce using rule 84 (assignment_operator) STRING_LITERAL reduce using rule 84 (assignment_operator) FUNC_NAME reduce using rule 84 (assignment_operator) SIZEOF reduce using rule 84 (assignment_operator) INC_OP reduce using rule 84 (assignment_operator) DEC_OP reduce using rule 84 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 84 (assignment_operator) ALIGNOF reduce using rule 84 (assignment_operator) GENERIC reduce using rule 84 (assignment_operator) '(' reduce using rule 84 (assignment_operator) '&' reduce using rule 84 (assignment_operator) '*' reduce using rule 84 (assignment_operator) '+' reduce using rule 84 (assignment_operator) '-' reduce using rule 84 (assignment_operator) '~' reduce using rule 84 (assignment_operator) '!' reduce using rule 84 (assignment_operator)
85 assignment_operator → XOR_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 85 (assignment_operator) I_CONSTANT reduce using rule 85 (assignment_operator) F_CONSTANT reduce using rule 85 (assignment_operator) STRING_LITERAL reduce using rule 85 (assignment_operator) FUNC_NAME reduce using rule 85 (assignment_operator) SIZEOF reduce using rule 85 (assignment_operator) INC_OP reduce using rule 85 (assignment_operator) DEC_OP reduce using rule 85 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 85 (assignment_operator) ALIGNOF reduce using rule 85 (assignment_operator) GENERIC reduce using rule 85 (assignment_operator) '(' reduce using rule 85 (assignment_operator) '&' reduce using rule 85 (assignment_operator) '*' reduce using rule 85 (assignment_operator) '+' reduce using rule 85 (assignment_operator) '-' reduce using rule 85 (assignment_operator) '~' reduce using rule 85 (assignment_operator) '!' reduce using rule 85 (assignment_operator)
86 assignment_operator → OR_ASSIGN • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 86 (assignment_operator) I_CONSTANT reduce using rule 86 (assignment_operator) F_CONSTANT reduce using rule 86 (assignment_operator) STRING_LITERAL reduce using rule 86 (assignment_operator) FUNC_NAME reduce using rule 86 (assignment_operator) SIZEOF reduce using rule 86 (assignment_operator) INC_OP reduce using rule 86 (assignment_operator) DEC_OP reduce using rule 86 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 86 (assignment_operator) ALIGNOF reduce using rule 86 (assignment_operator) GENERIC reduce using rule 86 (assignment_operator) '(' reduce using rule 86 (assignment_operator) '&' reduce using rule 86 (assignment_operator) '*' reduce using rule 86 (assignment_operator) '+' reduce using rule 86 (assignment_operator) '-' reduce using rule 86 (assignment_operator) '~' reduce using rule 86 (assignment_operator) '!' reduce using rule 86 (assignment_operator)
76 assignment_operator → '=' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 76 (assignment_operator) I_CONSTANT reduce using rule 76 (assignment_operator) F_CONSTANT reduce using rule 76 (assignment_operator) STRING_LITERAL reduce using rule 76 (assignment_operator) FUNC_NAME reduce using rule 76 (assignment_operator) SIZEOF reduce using rule 76 (assignment_operator) INC_OP reduce using rule 76 (assignment_operator) DEC_OP reduce using rule 76 (assignment_operator) ENUMERATION_CONSTANT reduce using rule 76 (assignment_operator) ALIGNOF reduce using rule 76 (assignment_operator) GENERIC reduce using rule 76 (assignment_operator) '(' reduce using rule 76 (assignment_operator) '&' reduce using rule 76 (assignment_operator) '*' reduce using rule 76 (assignment_operator) '+' reduce using rule 76 (assignment_operator) '-' reduce using rule 76 (assignment_operator) '~' reduce using rule 76 (assignment_operator) '!' reduce using rule 76 (assignment_operator)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 75 | unary_expression assignment_operator • assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 357
4 primary_expression → '(' expression ')' • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 4 (primary_expression) INC_OP reduce using rule 4 (primary_expression) DEC_OP reduce using rule 4 (primary_expression) LEFT_OP reduce using rule 4 (primary_expression) RIGHT_OP reduce using rule 4 (primary_expression) LE_OP reduce using rule 4 (primary_expression) GE_OP reduce using rule 4 (primary_expression) EQ_OP reduce using rule 4 (primary_expression) NE_OP reduce using rule 4 (primary_expression) AND_OP reduce using rule 4 (primary_expression) OR_OP reduce using rule 4 (primary_expression) MUL_ASSIGN reduce using rule 4 (primary_expression) DIV_ASSIGN reduce using rule 4 (primary_expression) MOD_ASSIGN reduce using rule 4 (primary_expression) ADD_ASSIGN reduce using rule 4 (primary_expression) SUB_ASSIGN reduce using rule 4 (primary_expression) LEFT_ASSIGN reduce using rule 4 (primary_expression) RIGHT_ASSIGN reduce using rule 4 (primary_expression) AND_ASSIGN reduce using rule 4 (primary_expression) XOR_ASSIGN reduce using rule 4 (primary_expression) OR_ASSIGN reduce using rule 4 (primary_expression) '(' reduce using rule 4 (primary_expression) ')' reduce using rule 4 (primary_expression) ',' reduce using rule 4 (primary_expression) ':' reduce using rule 4 (primary_expression) '[' reduce using rule 4 (primary_expression) ']' reduce using rule 4 (primary_expression) '.' reduce using rule 4 (primary_expression) '}' reduce using rule 4 (primary_expression) '&' reduce using rule 4 (primary_expression) '*' reduce using rule 4 (primary_expression) '+' reduce using rule 4 (primary_expression) '-' reduce using rule 4 (primary_expression) '/' reduce using rule 4 (primary_expression) '%' reduce using rule 4 (primary_expression) '<' reduce using rule 4 (primary_expression) '>' reduce using rule 4 (primary_expression) '^' reduce using rule 4 (primary_expression) '|' reduce using rule 4 (primary_expression) '?' reduce using rule 4 (primary_expression) '=' reduce using rule 4 (primary_expression) ';' reduce using rule 4 (primary_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 88 expression → expression ',' • assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 358
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 25 | '(' type_name ')' • '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 26 | '(' type_name ')' • '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 43 | '(' type_name ')' • cast_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 359 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 360
22 postfix_expression → postfix_expression PTR_OP IDENTIFIER • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 22 (postfix_expression) INC_OP reduce using rule 22 (postfix_expression) DEC_OP reduce using rule 22 (postfix_expression) LEFT_OP reduce using rule 22 (postfix_expression) RIGHT_OP reduce using rule 22 (postfix_expression) LE_OP reduce using rule 22 (postfix_expression) GE_OP reduce using rule 22 (postfix_expression) EQ_OP reduce using rule 22 (postfix_expression) NE_OP reduce using rule 22 (postfix_expression) AND_OP reduce using rule 22 (postfix_expression) OR_OP reduce using rule 22 (postfix_expression) MUL_ASSIGN reduce using rule 22 (postfix_expression) DIV_ASSIGN reduce using rule 22 (postfix_expression) MOD_ASSIGN reduce using rule 22 (postfix_expression) ADD_ASSIGN reduce using rule 22 (postfix_expression) SUB_ASSIGN reduce using rule 22 (postfix_expression) LEFT_ASSIGN reduce using rule 22 (postfix_expression) RIGHT_ASSIGN reduce using rule 22 (postfix_expression) AND_ASSIGN reduce using rule 22 (postfix_expression) XOR_ASSIGN reduce using rule 22 (postfix_expression) OR_ASSIGN reduce using rule 22 (postfix_expression) '(' reduce using rule 22 (postfix_expression) ')' reduce using rule 22 (postfix_expression) ',' reduce using rule 22 (postfix_expression) ':' reduce using rule 22 (postfix_expression) '[' reduce using rule 22 (postfix_expression) ']' reduce using rule 22 (postfix_expression) '.' reduce using rule 22 (postfix_expression) '}' reduce using rule 22 (postfix_expression) '&' reduce using rule 22 (postfix_expression) '*' reduce using rule 22 (postfix_expression) '+' reduce using rule 22 (postfix_expression) '-' reduce using rule 22 (postfix_expression) '/' reduce using rule 22 (postfix_expression) '%' reduce using rule 22 (postfix_expression) '<' reduce using rule 22 (postfix_expression) '>' reduce using rule 22 (postfix_expression) '^' reduce using rule 22 (postfix_expression) '|' reduce using rule 22 (postfix_expression) '?' reduce using rule 22 (postfix_expression) '=' reduce using rule 22 (postfix_expression) ';' reduce using rule 22 (postfix_expression)
19 postfix_expression → postfix_expression '(' ')' • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 19 (postfix_expression) INC_OP reduce using rule 19 (postfix_expression) DEC_OP reduce using rule 19 (postfix_expression) LEFT_OP reduce using rule 19 (postfix_expression) RIGHT_OP reduce using rule 19 (postfix_expression) LE_OP reduce using rule 19 (postfix_expression) GE_OP reduce using rule 19 (postfix_expression) EQ_OP reduce using rule 19 (postfix_expression) NE_OP reduce using rule 19 (postfix_expression) AND_OP reduce using rule 19 (postfix_expression) OR_OP reduce using rule 19 (postfix_expression) MUL_ASSIGN reduce using rule 19 (postfix_expression) DIV_ASSIGN reduce using rule 19 (postfix_expression) MOD_ASSIGN reduce using rule 19 (postfix_expression) ADD_ASSIGN reduce using rule 19 (postfix_expression) SUB_ASSIGN reduce using rule 19 (postfix_expression) LEFT_ASSIGN reduce using rule 19 (postfix_expression) RIGHT_ASSIGN reduce using rule 19 (postfix_expression) AND_ASSIGN reduce using rule 19 (postfix_expression) XOR_ASSIGN reduce using rule 19 (postfix_expression) OR_ASSIGN reduce using rule 19 (postfix_expression) '(' reduce using rule 19 (postfix_expression) ')' reduce using rule 19 (postfix_expression) ',' reduce using rule 19 (postfix_expression) ':' reduce using rule 19 (postfix_expression) '[' reduce using rule 19 (postfix_expression) ']' reduce using rule 19 (postfix_expression) '.' reduce using rule 19 (postfix_expression) '}' reduce using rule 19 (postfix_expression) '&' reduce using rule 19 (postfix_expression) '*' reduce using rule 19 (postfix_expression) '+' reduce using rule 19 (postfix_expression) '-' reduce using rule 19 (postfix_expression) '/' reduce using rule 19 (postfix_expression) '%' reduce using rule 19 (postfix_expression) '<' reduce using rule 19 (postfix_expression) '>' reduce using rule 19 (postfix_expression) '^' reduce using rule 19 (postfix_expression) '|' reduce using rule 19 (postfix_expression) '?' reduce using rule 19 (postfix_expression) '=' reduce using rule 19 (postfix_expression) ';' reduce using rule 19 (postfix_expression)
20 postfix_expression → postfix_expression '(' argument_expression_list • ')' 28 argument_expression_list → argument_expression_list • ',' assignment_expression ')' shift, and go to state 361 ',' shift, and go to state 362
27 argument_expression_list → assignment_expression • [')', ','] ')' reduce using rule 27 (argument_expression_list) ',' reduce using rule 27 (argument_expression_list)
18 postfix_expression → postfix_expression '[' expression • ']' 88 expression → expression • ',' assignment_expression ',' shift, and go to state 269 ']' shift, and go to state 363
21 postfix_expression → postfix_expression '.' IDENTIFIER • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 21 (postfix_expression) INC_OP reduce using rule 21 (postfix_expression) DEC_OP reduce using rule 21 (postfix_expression) LEFT_OP reduce using rule 21 (postfix_expression) RIGHT_OP reduce using rule 21 (postfix_expression) LE_OP reduce using rule 21 (postfix_expression) GE_OP reduce using rule 21 (postfix_expression) EQ_OP reduce using rule 21 (postfix_expression) NE_OP reduce using rule 21 (postfix_expression) AND_OP reduce using rule 21 (postfix_expression) OR_OP reduce using rule 21 (postfix_expression) MUL_ASSIGN reduce using rule 21 (postfix_expression) DIV_ASSIGN reduce using rule 21 (postfix_expression) MOD_ASSIGN reduce using rule 21 (postfix_expression) ADD_ASSIGN reduce using rule 21 (postfix_expression) SUB_ASSIGN reduce using rule 21 (postfix_expression) LEFT_ASSIGN reduce using rule 21 (postfix_expression) RIGHT_ASSIGN reduce using rule 21 (postfix_expression) AND_ASSIGN reduce using rule 21 (postfix_expression) XOR_ASSIGN reduce using rule 21 (postfix_expression) OR_ASSIGN reduce using rule 21 (postfix_expression) '(' reduce using rule 21 (postfix_expression) ')' reduce using rule 21 (postfix_expression) ',' reduce using rule 21 (postfix_expression) ':' reduce using rule 21 (postfix_expression) '[' reduce using rule 21 (postfix_expression) ']' reduce using rule 21 (postfix_expression) '.' reduce using rule 21 (postfix_expression) '}' reduce using rule 21 (postfix_expression) '&' reduce using rule 21 (postfix_expression) '*' reduce using rule 21 (postfix_expression) '+' reduce using rule 21 (postfix_expression) '-' reduce using rule 21 (postfix_expression) '/' reduce using rule 21 (postfix_expression) '%' reduce using rule 21 (postfix_expression) '<' reduce using rule 21 (postfix_expression) '>' reduce using rule 21 (postfix_expression) '^' reduce using rule 21 (postfix_expression) '|' reduce using rule 21 (postfix_expression) '?' reduce using rule 21 (postfix_expression) '=' reduce using rule 21 (postfix_expression) ';' reduce using rule 21 (postfix_expression)
45 multiplicative_expression → multiplicative_expression '*' cast_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', ';'] LEFT_OP reduce using rule 45 (multiplicative_expression) RIGHT_OP reduce using rule 45 (multiplicative_expression) LE_OP reduce using rule 45 (multiplicative_expression) GE_OP reduce using rule 45 (multiplicative_expression) EQ_OP reduce using rule 45 (multiplicative_expression) NE_OP reduce using rule 45 (multiplicative_expression) AND_OP reduce using rule 45 (multiplicative_expression) OR_OP reduce using rule 45 (multiplicative_expression) ')' reduce using rule 45 (multiplicative_expression) ',' reduce using rule 45 (multiplicative_expression) ':' reduce using rule 45 (multiplicative_expression) ']' reduce using rule 45 (multiplicative_expression) '}' reduce using rule 45 (multiplicative_expression) '&' reduce using rule 45 (multiplicative_expression) '*' reduce using rule 45 (multiplicative_expression) '+' reduce using rule 45 (multiplicative_expression) '-' reduce using rule 45 (multiplicative_expression) '/' reduce using rule 45 (multiplicative_expression) '%' reduce using rule 45 (multiplicative_expression) '<' reduce using rule 45 (multiplicative_expression) '>' reduce using rule 45 (multiplicative_expression) '^' reduce using rule 45 (multiplicative_expression) '|' reduce using rule 45 (multiplicative_expression) '?' reduce using rule 45 (multiplicative_expression) ';' reduce using rule 45 (multiplicative_expression)
46 multiplicative_expression → multiplicative_expression '/' cast_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', ';'] LEFT_OP reduce using rule 46 (multiplicative_expression) RIGHT_OP reduce using rule 46 (multiplicative_expression) LE_OP reduce using rule 46 (multiplicative_expression) GE_OP reduce using rule 46 (multiplicative_expression) EQ_OP reduce using rule 46 (multiplicative_expression) NE_OP reduce using rule 46 (multiplicative_expression) AND_OP reduce using rule 46 (multiplicative_expression) OR_OP reduce using rule 46 (multiplicative_expression) ')' reduce using rule 46 (multiplicative_expression) ',' reduce using rule 46 (multiplicative_expression) ':' reduce using rule 46 (multiplicative_expression) ']' reduce using rule 46 (multiplicative_expression) '}' reduce using rule 46 (multiplicative_expression) '&' reduce using rule 46 (multiplicative_expression) '*' reduce using rule 46 (multiplicative_expression) '+' reduce using rule 46 (multiplicative_expression) '-' reduce using rule 46 (multiplicative_expression) '/' reduce using rule 46 (multiplicative_expression) '%' reduce using rule 46 (multiplicative_expression) '<' reduce using rule 46 (multiplicative_expression) '>' reduce using rule 46 (multiplicative_expression) '^' reduce using rule 46 (multiplicative_expression) '|' reduce using rule 46 (multiplicative_expression) '?' reduce using rule 46 (multiplicative_expression) ';' reduce using rule 46 (multiplicative_expression)
47 multiplicative_expression → multiplicative_expression '%' cast_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', ';'] LEFT_OP reduce using rule 47 (multiplicative_expression) RIGHT_OP reduce using rule 47 (multiplicative_expression) LE_OP reduce using rule 47 (multiplicative_expression) GE_OP reduce using rule 47 (multiplicative_expression) EQ_OP reduce using rule 47 (multiplicative_expression) NE_OP reduce using rule 47 (multiplicative_expression) AND_OP reduce using rule 47 (multiplicative_expression) OR_OP reduce using rule 47 (multiplicative_expression) ')' reduce using rule 47 (multiplicative_expression) ',' reduce using rule 47 (multiplicative_expression) ':' reduce using rule 47 (multiplicative_expression) ']' reduce using rule 47 (multiplicative_expression) '}' reduce using rule 47 (multiplicative_expression) '&' reduce using rule 47 (multiplicative_expression) '*' reduce using rule 47 (multiplicative_expression) '+' reduce using rule 47 (multiplicative_expression) '-' reduce using rule 47 (multiplicative_expression) '/' reduce using rule 47 (multiplicative_expression) '%' reduce using rule 47 (multiplicative_expression) '<' reduce using rule 47 (multiplicative_expression) '>' reduce using rule 47 (multiplicative_expression) '^' reduce using rule 47 (multiplicative_expression) '|' reduce using rule 47 (multiplicative_expression) '?' reduce using rule 47 (multiplicative_expression) ';' reduce using rule 47 (multiplicative_expression)
45 multiplicative_expression → multiplicative_expression • '*' cast_expression 46 | multiplicative_expression • '/' cast_expression 47 | multiplicative_expression • '%' cast_expression 49 additive_expression → additive_expression '+' multiplicative_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '+', '-', '<', '>', '^', '|', '?', ';'] '*' shift, and go to state 162 '/' shift, and go to state 163 '%' shift, and go to state 164 LEFT_OP reduce using rule 49 (additive_expression) RIGHT_OP reduce using rule 49 (additive_expression) LE_OP reduce using rule 49 (additive_expression) GE_OP reduce using rule 49 (additive_expression) EQ_OP reduce using rule 49 (additive_expression) NE_OP reduce using rule 49 (additive_expression) AND_OP reduce using rule 49 (additive_expression) OR_OP reduce using rule 49 (additive_expression) ')' reduce using rule 49 (additive_expression) ',' reduce using rule 49 (additive_expression) ':' reduce using rule 49 (additive_expression) ']' reduce using rule 49 (additive_expression) '}' reduce using rule 49 (additive_expression) '&' reduce using rule 49 (additive_expression) '+' reduce using rule 49 (additive_expression) '-' reduce using rule 49 (additive_expression) '<' reduce using rule 49 (additive_expression) '>' reduce using rule 49 (additive_expression) '^' reduce using rule 49 (additive_expression) '|' reduce using rule 49 (additive_expression) '?' reduce using rule 49 (additive_expression) ';' reduce using rule 49 (additive_expression)
45 multiplicative_expression → multiplicative_expression • '*' cast_expression 46 | multiplicative_expression • '/' cast_expression 47 | multiplicative_expression • '%' cast_expression 50 additive_expression → additive_expression '-' multiplicative_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '+', '-', '<', '>', '^', '|', '?', ';'] '*' shift, and go to state 162 '/' shift, and go to state 163 '%' shift, and go to state 164 LEFT_OP reduce using rule 50 (additive_expression) RIGHT_OP reduce using rule 50 (additive_expression) LE_OP reduce using rule 50 (additive_expression) GE_OP reduce using rule 50 (additive_expression) EQ_OP reduce using rule 50 (additive_expression) NE_OP reduce using rule 50 (additive_expression) AND_OP reduce using rule 50 (additive_expression) OR_OP reduce using rule 50 (additive_expression) ')' reduce using rule 50 (additive_expression) ',' reduce using rule 50 (additive_expression) ':' reduce using rule 50 (additive_expression) ']' reduce using rule 50 (additive_expression) '}' reduce using rule 50 (additive_expression) '&' reduce using rule 50 (additive_expression) '+' reduce using rule 50 (additive_expression) '-' reduce using rule 50 (additive_expression) '<' reduce using rule 50 (additive_expression) '>' reduce using rule 50 (additive_expression) '^' reduce using rule 50 (additive_expression) '|' reduce using rule 50 (additive_expression) '?' reduce using rule 50 (additive_expression) ';' reduce using rule 50 (additive_expression)
49 additive_expression → additive_expression • '+' multiplicative_expression 50 | additive_expression • '-' multiplicative_expression 52 shift_expression → shift_expression LEFT_OP additive_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] '+' shift, and go to state 165 '-' shift, and go to state 166 LEFT_OP reduce using rule 52 (shift_expression) RIGHT_OP reduce using rule 52 (shift_expression) LE_OP reduce using rule 52 (shift_expression) GE_OP reduce using rule 52 (shift_expression) EQ_OP reduce using rule 52 (shift_expression) NE_OP reduce using rule 52 (shift_expression) AND_OP reduce using rule 52 (shift_expression) OR_OP reduce using rule 52 (shift_expression) ')' reduce using rule 52 (shift_expression) ',' reduce using rule 52 (shift_expression) ':' reduce using rule 52 (shift_expression) ']' reduce using rule 52 (shift_expression) '}' reduce using rule 52 (shift_expression) '&' reduce using rule 52 (shift_expression) '<' reduce using rule 52 (shift_expression) '>' reduce using rule 52 (shift_expression) '^' reduce using rule 52 (shift_expression) '|' reduce using rule 52 (shift_expression) '?' reduce using rule 52 (shift_expression) ';' reduce using rule 52 (shift_expression)
49 additive_expression → additive_expression • '+' multiplicative_expression 50 | additive_expression • '-' multiplicative_expression 53 shift_expression → shift_expression RIGHT_OP additive_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] '+' shift, and go to state 165 '-' shift, and go to state 166 LEFT_OP reduce using rule 53 (shift_expression) RIGHT_OP reduce using rule 53 (shift_expression) LE_OP reduce using rule 53 (shift_expression) GE_OP reduce using rule 53 (shift_expression) EQ_OP reduce using rule 53 (shift_expression) NE_OP reduce using rule 53 (shift_expression) AND_OP reduce using rule 53 (shift_expression) OR_OP reduce using rule 53 (shift_expression) ')' reduce using rule 53 (shift_expression) ',' reduce using rule 53 (shift_expression) ':' reduce using rule 53 (shift_expression) ']' reduce using rule 53 (shift_expression) '}' reduce using rule 53 (shift_expression) '&' reduce using rule 53 (shift_expression) '<' reduce using rule 53 (shift_expression) '>' reduce using rule 53 (shift_expression) '^' reduce using rule 53 (shift_expression) '|' reduce using rule 53 (shift_expression) '?' reduce using rule 53 (shift_expression) ';' reduce using rule 53 (shift_expression)
52 shift_expression → shift_expression • LEFT_OP additive_expression 53 | shift_expression • RIGHT_OP additive_expression 57 relational_expression → relational_expression LE_OP shift_expression • [LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] LEFT_OP shift, and go to state 167 RIGHT_OP shift, and go to state 168 LE_OP reduce using rule 57 (relational_expression) GE_OP reduce using rule 57 (relational_expression) EQ_OP reduce using rule 57 (relational_expression) NE_OP reduce using rule 57 (relational_expression) AND_OP reduce using rule 57 (relational_expression) OR_OP reduce using rule 57 (relational_expression) ')' reduce using rule 57 (relational_expression) ',' reduce using rule 57 (relational_expression) ':' reduce using rule 57 (relational_expression) ']' reduce using rule 57 (relational_expression) '}' reduce using rule 57 (relational_expression) '&' reduce using rule 57 (relational_expression) '<' reduce using rule 57 (relational_expression) '>' reduce using rule 57 (relational_expression) '^' reduce using rule 57 (relational_expression) '|' reduce using rule 57 (relational_expression) '?' reduce using rule 57 (relational_expression) ';' reduce using rule 57 (relational_expression)
52 shift_expression → shift_expression • LEFT_OP additive_expression 53 | shift_expression • RIGHT_OP additive_expression 58 relational_expression → relational_expression GE_OP shift_expression • [LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] LEFT_OP shift, and go to state 167 RIGHT_OP shift, and go to state 168 LE_OP reduce using rule 58 (relational_expression) GE_OP reduce using rule 58 (relational_expression) EQ_OP reduce using rule 58 (relational_expression) NE_OP reduce using rule 58 (relational_expression) AND_OP reduce using rule 58 (relational_expression) OR_OP reduce using rule 58 (relational_expression) ')' reduce using rule 58 (relational_expression) ',' reduce using rule 58 (relational_expression) ':' reduce using rule 58 (relational_expression) ']' reduce using rule 58 (relational_expression) '}' reduce using rule 58 (relational_expression) '&' reduce using rule 58 (relational_expression) '<' reduce using rule 58 (relational_expression) '>' reduce using rule 58 (relational_expression) '^' reduce using rule 58 (relational_expression) '|' reduce using rule 58 (relational_expression) '?' reduce using rule 58 (relational_expression) ';' reduce using rule 58 (relational_expression)
52 shift_expression → shift_expression • LEFT_OP additive_expression 53 | shift_expression • RIGHT_OP additive_expression 55 relational_expression → relational_expression '<' shift_expression • [LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] LEFT_OP shift, and go to state 167 RIGHT_OP shift, and go to state 168 LE_OP reduce using rule 55 (relational_expression) GE_OP reduce using rule 55 (relational_expression) EQ_OP reduce using rule 55 (relational_expression) NE_OP reduce using rule 55 (relational_expression) AND_OP reduce using rule 55 (relational_expression) OR_OP reduce using rule 55 (relational_expression) ')' reduce using rule 55 (relational_expression) ',' reduce using rule 55 (relational_expression) ':' reduce using rule 55 (relational_expression) ']' reduce using rule 55 (relational_expression) '}' reduce using rule 55 (relational_expression) '&' reduce using rule 55 (relational_expression) '<' reduce using rule 55 (relational_expression) '>' reduce using rule 55 (relational_expression) '^' reduce using rule 55 (relational_expression) '|' reduce using rule 55 (relational_expression) '?' reduce using rule 55 (relational_expression) ';' reduce using rule 55 (relational_expression)
52 shift_expression → shift_expression • LEFT_OP additive_expression 53 | shift_expression • RIGHT_OP additive_expression 56 relational_expression → relational_expression '>' shift_expression • [LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '<', '>', '^', '|', '?', ';'] LEFT_OP shift, and go to state 167 RIGHT_OP shift, and go to state 168 LE_OP reduce using rule 56 (relational_expression) GE_OP reduce using rule 56 (relational_expression) EQ_OP reduce using rule 56 (relational_expression) NE_OP reduce using rule 56 (relational_expression) AND_OP reduce using rule 56 (relational_expression) OR_OP reduce using rule 56 (relational_expression) ')' reduce using rule 56 (relational_expression) ',' reduce using rule 56 (relational_expression) ':' reduce using rule 56 (relational_expression) ']' reduce using rule 56 (relational_expression) '}' reduce using rule 56 (relational_expression) '&' reduce using rule 56 (relational_expression) '<' reduce using rule 56 (relational_expression) '>' reduce using rule 56 (relational_expression) '^' reduce using rule 56 (relational_expression) '|' reduce using rule 56 (relational_expression) '?' reduce using rule 56 (relational_expression) ';' reduce using rule 56 (relational_expression)
55 relational_expression → relational_expression • '<' shift_expression 56 | relational_expression • '>' shift_expression 57 | relational_expression • LE_OP shift_expression 58 | relational_expression • GE_OP shift_expression 60 equality_expression → equality_expression EQ_OP relational_expression • [EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '^', '|', '?', ';'] LE_OP shift, and go to state 169 GE_OP shift, and go to state 170 '<' shift, and go to state 171 '>' shift, and go to state 172 EQ_OP reduce using rule 60 (equality_expression) NE_OP reduce using rule 60 (equality_expression) AND_OP reduce using rule 60 (equality_expression) OR_OP reduce using rule 60 (equality_expression) ')' reduce using rule 60 (equality_expression) ',' reduce using rule 60 (equality_expression) ':' reduce using rule 60 (equality_expression) ']' reduce using rule 60 (equality_expression) '}' reduce using rule 60 (equality_expression) '&' reduce using rule 60 (equality_expression) '^' reduce using rule 60 (equality_expression) '|' reduce using rule 60 (equality_expression) '?' reduce using rule 60 (equality_expression) ';' reduce using rule 60 (equality_expression)
55 relational_expression → relational_expression • '<' shift_expression 56 | relational_expression • '>' shift_expression 57 | relational_expression • LE_OP shift_expression 58 | relational_expression • GE_OP shift_expression 61 equality_expression → equality_expression NE_OP relational_expression • [EQ_OP, NE_OP, AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '^', '|', '?', ';'] LE_OP shift, and go to state 169 GE_OP shift, and go to state 170 '<' shift, and go to state 171 '>' shift, and go to state 172 EQ_OP reduce using rule 61 (equality_expression) NE_OP reduce using rule 61 (equality_expression) AND_OP reduce using rule 61 (equality_expression) OR_OP reduce using rule 61 (equality_expression) ')' reduce using rule 61 (equality_expression) ',' reduce using rule 61 (equality_expression) ':' reduce using rule 61 (equality_expression) ']' reduce using rule 61 (equality_expression) '}' reduce using rule 61 (equality_expression) '&' reduce using rule 61 (equality_expression) '^' reduce using rule 61 (equality_expression) '|' reduce using rule 61 (equality_expression) '?' reduce using rule 61 (equality_expression) ';' reduce using rule 61 (equality_expression)
60 equality_expression → equality_expression • EQ_OP relational_expression 61 | equality_expression • NE_OP relational_expression 63 and_expression → and_expression '&' equality_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '&', '^', '|', '?', ';'] EQ_OP shift, and go to state 173 NE_OP shift, and go to state 174 AND_OP reduce using rule 63 (and_expression) OR_OP reduce using rule 63 (and_expression) ')' reduce using rule 63 (and_expression) ',' reduce using rule 63 (and_expression) ':' reduce using rule 63 (and_expression) ']' reduce using rule 63 (and_expression) '}' reduce using rule 63 (and_expression) '&' reduce using rule 63 (and_expression) '^' reduce using rule 63 (and_expression) '|' reduce using rule 63 (and_expression) '?' reduce using rule 63 (and_expression) ';' reduce using rule 63 (and_expression)
63 and_expression → and_expression • '&' equality_expression 65 exclusive_or_expression → exclusive_or_expression '^' and_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '^', '|', '?', ';'] '&' shift, and go to state 175 AND_OP reduce using rule 65 (exclusive_or_expression) OR_OP reduce using rule 65 (exclusive_or_expression) ')' reduce using rule 65 (exclusive_or_expression) ',' reduce using rule 65 (exclusive_or_expression) ':' reduce using rule 65 (exclusive_or_expression) ']' reduce using rule 65 (exclusive_or_expression) '}' reduce using rule 65 (exclusive_or_expression) '^' reduce using rule 65 (exclusive_or_expression) '|' reduce using rule 65 (exclusive_or_expression) '?' reduce using rule 65 (exclusive_or_expression) ';' reduce using rule 65 (exclusive_or_expression)
65 exclusive_or_expression → exclusive_or_expression • '^' and_expression 67 inclusive_or_expression → inclusive_or_expression '|' exclusive_or_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '|', '?', ';'] '^' shift, and go to state 176 AND_OP reduce using rule 67 (inclusive_or_expression) OR_OP reduce using rule 67 (inclusive_or_expression) ')' reduce using rule 67 (inclusive_or_expression) ',' reduce using rule 67 (inclusive_or_expression) ':' reduce using rule 67 (inclusive_or_expression) ']' reduce using rule 67 (inclusive_or_expression) '}' reduce using rule 67 (inclusive_or_expression) '|' reduce using rule 67 (inclusive_or_expression) '?' reduce using rule 67 (inclusive_or_expression) ';' reduce using rule 67 (inclusive_or_expression)
67 inclusive_or_expression → inclusive_or_expression • '|' exclusive_or_expression 69 logical_and_expression → logical_and_expression AND_OP inclusive_or_expression • [AND_OP, OR_OP, ')', ',', ':', ']', '}', '?', ';'] '|' shift, and go to state 177 AND_OP reduce using rule 69 (logical_and_expression) OR_OP reduce using rule 69 (logical_and_expression) ')' reduce using rule 69 (logical_and_expression) ',' reduce using rule 69 (logical_and_expression) ':' reduce using rule 69 (logical_and_expression) ']' reduce using rule 69 (logical_and_expression) '}' reduce using rule 69 (logical_and_expression) '?' reduce using rule 69 (logical_and_expression) ';' reduce using rule 69 (logical_and_expression)
69 logical_and_expression → logical_and_expression • AND_OP inclusive_or_expression 71 logical_or_expression → logical_or_expression OR_OP logical_and_expression • [OR_OP, ')', ',', ':', ']', '}', '?', ';'] AND_OP shift, and go to state 178 OR_OP reduce using rule 71 (logical_or_expression) ')' reduce using rule 71 (logical_or_expression) ',' reduce using rule 71 (logical_or_expression) ':' reduce using rule 71 (logical_or_expression) ']' reduce using rule 71 (logical_or_expression) '}' reduce using rule 71 (logical_or_expression) '?' reduce using rule 71 (logical_or_expression) ';' reduce using rule 71 (logical_or_expression)
73 conditional_expression → logical_or_expression '?' expression • ':' conditional_expression 88 expression → expression • ',' assignment_expression ',' shift, and go to state 269 ':' shift, and go to state 364
219 direct_abstract_declarator → '(' ')' • ['(', ')', ',', ':', '['] '(' reduce using rule 219 (direct_abstract_declarator) ')' reduce using rule 219 (direct_abstract_declarator) ',' reduce using rule 219 (direct_abstract_declarator) ':' reduce using rule 219 (direct_abstract_declarator) '[' reduce using rule 219 (direct_abstract_declarator)
220 direct_abstract_declarator → '(' parameter_type_list • ')' ')' shift, and go to state 365
202 direct_abstract_declarator → '(' abstract_declarator • ')' ')' shift, and go to state 366
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 186 type_qualifier_list → • type_qualifier 187 | • type_qualifier_list type_qualifier 205 direct_abstract_declarator → '[' STATIC • type_qualifier_list assignment_expression ']' 206 | '[' STATIC • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 367 type_qualifier go to state 120 type_qualifier_list go to state 368
203 direct_abstract_declarator → '[' ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 203 (direct_abstract_declarator) ')' reduce using rule 203 (direct_abstract_declarator) ',' reduce using rule 203 (direct_abstract_declarator) ':' reduce using rule 203 (direct_abstract_declarator) '[' reduce using rule 203 (direct_abstract_declarator)
37 unary_operator → '*' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] 204 direct_abstract_declarator → '[' '*' • ']' ']' shift, and go to state 369 IDENTIFIER reduce using rule 37 (unary_operator) I_CONSTANT reduce using rule 37 (unary_operator) F_CONSTANT reduce using rule 37 (unary_operator) STRING_LITERAL reduce using rule 37 (unary_operator) FUNC_NAME reduce using rule 37 (unary_operator) SIZEOF reduce using rule 37 (unary_operator) INC_OP reduce using rule 37 (unary_operator) DEC_OP reduce using rule 37 (unary_operator) ENUMERATION_CONSTANT reduce using rule 37 (unary_operator) ALIGNOF reduce using rule 37 (unary_operator) GENERIC reduce using rule 37 (unary_operator) '(' reduce using rule 37 (unary_operator) '&' reduce using rule 37 (unary_operator) '*' reduce using rule 37 (unary_operator) '+' reduce using rule 37 (unary_operator) '-' reduce using rule 37 (unary_operator) '~' reduce using rule 37 (unary_operator) '!' reduce using rule 37 (unary_operator)
210 direct_abstract_declarator → '[' assignment_expression • ']' ']' shift, and go to state 370
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 187 type_qualifier_list → type_qualifier_list • type_qualifier 207 direct_abstract_declarator → '[' type_qualifier_list • STATIC assignment_expression ']' 208 | '[' type_qualifier_list • assignment_expression ']' 209 | '[' type_qualifier_list • ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 STATIC shift, and go to state 371 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ']' shift, and go to state 372 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 373 type_qualifier go to state 193
199 abstract_declarator → pointer direct_abstract_declarator • [')', ',', ':'] 211 direct_abstract_declarator → direct_abstract_declarator • '[' ']' 212 | direct_abstract_declarator • '[' '*' ']' 213 | direct_abstract_declarator • '[' STATIC type_qualifier_list assignment_expression ']' 214 | direct_abstract_declarator • '[' STATIC assignment_expression ']' 215 | direct_abstract_declarator • '[' type_qualifier_list assignment_expression ']' 216 | direct_abstract_declarator • '[' type_qualifier_list STATIC assignment_expression ']' 217 | direct_abstract_declarator • '[' type_qualifier_list ']' 218 | direct_abstract_declarator • '[' assignment_expression ']' 221 | direct_abstract_declarator • '(' ')' 222 | direct_abstract_declarator • '(' parameter_type_list ')' '(' shift, and go to state 305 '[' shift, and go to state 306 ')' reduce using rule 199 (abstract_declarator) ',' reduce using rule 199 (abstract_declarator) ':' reduce using rule 199 (abstract_declarator)
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 188 parameter_type_list → • parameter_list ',' ELLIPSIS 189 | • parameter_list 190 parameter_list → • parameter_declaration 191 | • parameter_list ',' parameter_declaration 192 parameter_declaration → • declaration_specifiers declarator 193 | • declaration_specifiers abstract_declarator 194 | • declaration_specifiers 221 direct_abstract_declarator → direct_abstract_declarator '(' • ')' 222 | direct_abstract_declarator '(' • parameter_type_list ')' TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 ')' shift, and go to state 374 declaration_specifiers go to state 229 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 parameter_type_list go to state 375 parameter_list go to state 231 parameter_declaration go to state 232
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 186 type_qualifier_list → • type_qualifier 187 | • type_qualifier_list type_qualifier 211 direct_abstract_declarator → direct_abstract_declarator '[' • ']' 212 | direct_abstract_declarator '[' • '*' ']' 213 | direct_abstract_declarator '[' • STATIC type_qualifier_list assignment_expression ']' 214 | direct_abstract_declarator '[' • STATIC assignment_expression ']' 215 | direct_abstract_declarator '[' • type_qualifier_list assignment_expression ']' 216 | direct_abstract_declarator '[' • type_qualifier_list STATIC assignment_expression ']' 217 | direct_abstract_declarator '[' • type_qualifier_list ']' 218 | direct_abstract_declarator '[' • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 STATIC shift, and go to state 376 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ']' shift, and go to state 377 '&' shift, and go to state 86 '*' shift, and go to state 378 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 379 type_qualifier go to state 120 type_qualifier_list go to state 380
235 static_assert_declaration → STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL • ')' ';' ')' shift, and go to state 381
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 242 | IDENTIFIER ':' • statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 382 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
243 labeled_statement → CASE constant_expression • ':' statement ':' shift, and go to state 383
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 244 | DEFAULT ':' • statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 384 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 253 selection_statement → IF '(' • expression ')' statement ELSE statement 254 | IF '(' • expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 385
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 255 selection_statement → SWITCH '(' • expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 386
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 256 iteration_statement → WHILE '(' • expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 387
257 iteration_statement → DO statement • WHILE '(' expression ')' ';' WHILE shift, and go to state 388
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 90 declaration → • declaration_specifiers ';' 91 | • declaration_specifiers init_declarator_list ';' 92 | • static_assert_declaration 93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 235 static_assert_declaration → • STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' 251 expression_statement → • ';' 252 | • expression ';' 258 iteration_statement → FOR '(' • expression_statement expression_statement ')' statement 259 | FOR '(' • expression_statement expression_statement expression ')' statement 260 | FOR '(' • declaration expression_statement ')' statement 261 | FOR '(' • declaration expression_statement expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 TYPEDEF_NAME shift, and go to state 1 ENUMERATION_CONSTANT shift, and go to state 82 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 27 GENERIC shift, and go to state 84 NORETURN shift, and go to state 28 STATIC_ASSERT shift, and go to state 29 THREAD_LOCAL shift, and go to state 30 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 declaration go to state 389 declaration_specifiers go to state 128 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 static_assert_declaration go to state 42 expression_statement go to state 390
262 jump_statement → GOTO IDENTIFIER • ';' ';' shift, and go to state 391
263 jump_statement → CONTINUE ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 263 (jump_statement) I_CONSTANT reduce using rule 263 (jump_statement) F_CONSTANT reduce using rule 263 (jump_statement) STRING_LITERAL reduce using rule 263 (jump_statement) FUNC_NAME reduce using rule 263 (jump_statement) SIZEOF reduce using rule 263 (jump_statement) INC_OP reduce using rule 263 (jump_statement) DEC_OP reduce using rule 263 (jump_statement) TYPEDEF_NAME reduce using rule 263 (jump_statement) ENUMERATION_CONSTANT reduce using rule 263 (jump_statement) TYPEDEF reduce using rule 263 (jump_statement) EXTERN reduce using rule 263 (jump_statement) STATIC reduce using rule 263 (jump_statement) AUTO reduce using rule 263 (jump_statement) REGISTER reduce using rule 263 (jump_statement) INLINE reduce using rule 263 (jump_statement) CONST reduce using rule 263 (jump_statement) RESTRICT reduce using rule 263 (jump_statement) VOLATILE reduce using rule 263 (jump_statement) BOOL reduce using rule 263 (jump_statement) CHAR reduce using rule 263 (jump_statement) SHORT reduce using rule 263 (jump_statement) INT reduce using rule 263 (jump_statement) LONG reduce using rule 263 (jump_statement) SIGNED reduce using rule 263 (jump_statement) UNSIGNED reduce using rule 263 (jump_statement) FLOAT reduce using rule 263 (jump_statement) DOUBLE reduce using rule 263 (jump_statement) VOID reduce using rule 263 (jump_statement) COMPLEX reduce using rule 263 (jump_statement) IMAGINARY reduce using rule 263 (jump_statement) STRUCT reduce using rule 263 (jump_statement) UNION reduce using rule 263 (jump_statement) ENUM reduce using rule 263 (jump_statement) CASE reduce using rule 263 (jump_statement) DEFAULT reduce using rule 263 (jump_statement) IF reduce using rule 263 (jump_statement) ELSE reduce using rule 263 (jump_statement) SWITCH reduce using rule 263 (jump_statement) WHILE reduce using rule 263 (jump_statement) DO reduce using rule 263 (jump_statement) FOR reduce using rule 263 (jump_statement) GOTO reduce using rule 263 (jump_statement) CONTINUE reduce using rule 263 (jump_statement) BREAK reduce using rule 263 (jump_statement) RETURN reduce using rule 263 (jump_statement) ALIGNAS reduce using rule 263 (jump_statement) ALIGNOF reduce using rule 263 (jump_statement) ATOMIC reduce using rule 263 (jump_statement) GENERIC reduce using rule 263 (jump_statement) NORETURN reduce using rule 263 (jump_statement) STATIC_ASSERT reduce using rule 263 (jump_statement) THREAD_LOCAL reduce using rule 263 (jump_statement) '(' reduce using rule 263 (jump_statement) '{' reduce using rule 263 (jump_statement) '}' reduce using rule 263 (jump_statement) '&' reduce using rule 263 (jump_statement) '*' reduce using rule 263 (jump_statement) '+' reduce using rule 263 (jump_statement) '-' reduce using rule 263 (jump_statement) '~' reduce using rule 263 (jump_statement) '!' reduce using rule 263 (jump_statement) ';' reduce using rule 263 (jump_statement)
264 jump_statement → BREAK ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 264 (jump_statement) I_CONSTANT reduce using rule 264 (jump_statement) F_CONSTANT reduce using rule 264 (jump_statement) STRING_LITERAL reduce using rule 264 (jump_statement) FUNC_NAME reduce using rule 264 (jump_statement) SIZEOF reduce using rule 264 (jump_statement) INC_OP reduce using rule 264 (jump_statement) DEC_OP reduce using rule 264 (jump_statement) TYPEDEF_NAME reduce using rule 264 (jump_statement) ENUMERATION_CONSTANT reduce using rule 264 (jump_statement) TYPEDEF reduce using rule 264 (jump_statement) EXTERN reduce using rule 264 (jump_statement) STATIC reduce using rule 264 (jump_statement) AUTO reduce using rule 264 (jump_statement) REGISTER reduce using rule 264 (jump_statement) INLINE reduce using rule 264 (jump_statement) CONST reduce using rule 264 (jump_statement) RESTRICT reduce using rule 264 (jump_statement) VOLATILE reduce using rule 264 (jump_statement) BOOL reduce using rule 264 (jump_statement) CHAR reduce using rule 264 (jump_statement) SHORT reduce using rule 264 (jump_statement) INT reduce using rule 264 (jump_statement) LONG reduce using rule 264 (jump_statement) SIGNED reduce using rule 264 (jump_statement) UNSIGNED reduce using rule 264 (jump_statement) FLOAT reduce using rule 264 (jump_statement) DOUBLE reduce using rule 264 (jump_statement) VOID reduce using rule 264 (jump_statement) COMPLEX reduce using rule 264 (jump_statement) IMAGINARY reduce using rule 264 (jump_statement) STRUCT reduce using rule 264 (jump_statement) UNION reduce using rule 264 (jump_statement) ENUM reduce using rule 264 (jump_statement) CASE reduce using rule 264 (jump_statement) DEFAULT reduce using rule 264 (jump_statement) IF reduce using rule 264 (jump_statement) ELSE reduce using rule 264 (jump_statement) SWITCH reduce using rule 264 (jump_statement) WHILE reduce using rule 264 (jump_statement) DO reduce using rule 264 (jump_statement) FOR reduce using rule 264 (jump_statement) GOTO reduce using rule 264 (jump_statement) CONTINUE reduce using rule 264 (jump_statement) BREAK reduce using rule 264 (jump_statement) RETURN reduce using rule 264 (jump_statement) ALIGNAS reduce using rule 264 (jump_statement) ALIGNOF reduce using rule 264 (jump_statement) ATOMIC reduce using rule 264 (jump_statement) GENERIC reduce using rule 264 (jump_statement) NORETURN reduce using rule 264 (jump_statement) STATIC_ASSERT reduce using rule 264 (jump_statement) THREAD_LOCAL reduce using rule 264 (jump_statement) '(' reduce using rule 264 (jump_statement) '{' reduce using rule 264 (jump_statement) '}' reduce using rule 264 (jump_statement) '&' reduce using rule 264 (jump_statement) '*' reduce using rule 264 (jump_statement) '+' reduce using rule 264 (jump_statement) '-' reduce using rule 264 (jump_statement) '~' reduce using rule 264 (jump_statement) '!' reduce using rule 264 (jump_statement) ';' reduce using rule 264 (jump_statement)
265 jump_statement → RETURN ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 265 (jump_statement) I_CONSTANT reduce using rule 265 (jump_statement) F_CONSTANT reduce using rule 265 (jump_statement) STRING_LITERAL reduce using rule 265 (jump_statement) FUNC_NAME reduce using rule 265 (jump_statement) SIZEOF reduce using rule 265 (jump_statement) INC_OP reduce using rule 265 (jump_statement) DEC_OP reduce using rule 265 (jump_statement) TYPEDEF_NAME reduce using rule 265 (jump_statement) ENUMERATION_CONSTANT reduce using rule 265 (jump_statement) TYPEDEF reduce using rule 265 (jump_statement) EXTERN reduce using rule 265 (jump_statement) STATIC reduce using rule 265 (jump_statement) AUTO reduce using rule 265 (jump_statement) REGISTER reduce using rule 265 (jump_statement) INLINE reduce using rule 265 (jump_statement) CONST reduce using rule 265 (jump_statement) RESTRICT reduce using rule 265 (jump_statement) VOLATILE reduce using rule 265 (jump_statement) BOOL reduce using rule 265 (jump_statement) CHAR reduce using rule 265 (jump_statement) SHORT reduce using rule 265 (jump_statement) INT reduce using rule 265 (jump_statement) LONG reduce using rule 265 (jump_statement) SIGNED reduce using rule 265 (jump_statement) UNSIGNED reduce using rule 265 (jump_statement) FLOAT reduce using rule 265 (jump_statement) DOUBLE reduce using rule 265 (jump_statement) VOID reduce using rule 265 (jump_statement) COMPLEX reduce using rule 265 (jump_statement) IMAGINARY reduce using rule 265 (jump_statement) STRUCT reduce using rule 265 (jump_statement) UNION reduce using rule 265 (jump_statement) ENUM reduce using rule 265 (jump_statement) CASE reduce using rule 265 (jump_statement) DEFAULT reduce using rule 265 (jump_statement) IF reduce using rule 265 (jump_statement) ELSE reduce using rule 265 (jump_statement) SWITCH reduce using rule 265 (jump_statement) WHILE reduce using rule 265 (jump_statement) DO reduce using rule 265 (jump_statement) FOR reduce using rule 265 (jump_statement) GOTO reduce using rule 265 (jump_statement) CONTINUE reduce using rule 265 (jump_statement) BREAK reduce using rule 265 (jump_statement) RETURN reduce using rule 265 (jump_statement) ALIGNAS reduce using rule 265 (jump_statement) ALIGNOF reduce using rule 265 (jump_statement) ATOMIC reduce using rule 265 (jump_statement) GENERIC reduce using rule 265 (jump_statement) NORETURN reduce using rule 265 (jump_statement) STATIC_ASSERT reduce using rule 265 (jump_statement) THREAD_LOCAL reduce using rule 265 (jump_statement) '(' reduce using rule 265 (jump_statement) '{' reduce using rule 265 (jump_statement) '}' reduce using rule 265 (jump_statement) '&' reduce using rule 265 (jump_statement) '*' reduce using rule 265 (jump_statement) '+' reduce using rule 265 (jump_statement) '-' reduce using rule 265 (jump_statement) '~' reduce using rule 265 (jump_statement) '!' reduce using rule 265 (jump_statement) ';' reduce using rule 265 (jump_statement)
88 expression → expression • ',' assignment_expression 266 jump_statement → RETURN expression • ';' ',' shift, and go to state 269 ';' shift, and go to state 392
252 expression_statement → expression ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 252 (expression_statement) I_CONSTANT reduce using rule 252 (expression_statement) F_CONSTANT reduce using rule 252 (expression_statement) STRING_LITERAL reduce using rule 252 (expression_statement) FUNC_NAME reduce using rule 252 (expression_statement) SIZEOF reduce using rule 252 (expression_statement) INC_OP reduce using rule 252 (expression_statement) DEC_OP reduce using rule 252 (expression_statement) TYPEDEF_NAME reduce using rule 252 (expression_statement) ENUMERATION_CONSTANT reduce using rule 252 (expression_statement) TYPEDEF reduce using rule 252 (expression_statement) EXTERN reduce using rule 252 (expression_statement) STATIC reduce using rule 252 (expression_statement) AUTO reduce using rule 252 (expression_statement) REGISTER reduce using rule 252 (expression_statement) INLINE reduce using rule 252 (expression_statement) CONST reduce using rule 252 (expression_statement) RESTRICT reduce using rule 252 (expression_statement) VOLATILE reduce using rule 252 (expression_statement) BOOL reduce using rule 252 (expression_statement) CHAR reduce using rule 252 (expression_statement) SHORT reduce using rule 252 (expression_statement) INT reduce using rule 252 (expression_statement) LONG reduce using rule 252 (expression_statement) SIGNED reduce using rule 252 (expression_statement) UNSIGNED reduce using rule 252 (expression_statement) FLOAT reduce using rule 252 (expression_statement) DOUBLE reduce using rule 252 (expression_statement) VOID reduce using rule 252 (expression_statement) COMPLEX reduce using rule 252 (expression_statement) IMAGINARY reduce using rule 252 (expression_statement) STRUCT reduce using rule 252 (expression_statement) UNION reduce using rule 252 (expression_statement) ENUM reduce using rule 252 (expression_statement) CASE reduce using rule 252 (expression_statement) DEFAULT reduce using rule 252 (expression_statement) IF reduce using rule 252 (expression_statement) ELSE reduce using rule 252 (expression_statement) SWITCH reduce using rule 252 (expression_statement) WHILE reduce using rule 252 (expression_statement) DO reduce using rule 252 (expression_statement) FOR reduce using rule 252 (expression_statement) GOTO reduce using rule 252 (expression_statement) CONTINUE reduce using rule 252 (expression_statement) BREAK reduce using rule 252 (expression_statement) RETURN reduce using rule 252 (expression_statement) ALIGNAS reduce using rule 252 (expression_statement) ALIGNOF reduce using rule 252 (expression_statement) ATOMIC reduce using rule 252 (expression_statement) GENERIC reduce using rule 252 (expression_statement) NORETURN reduce using rule 252 (expression_statement) STATIC_ASSERT reduce using rule 252 (expression_statement) THREAD_LOCAL reduce using rule 252 (expression_statement) '(' reduce using rule 252 (expression_statement) ')' reduce using rule 252 (expression_statement) '{' reduce using rule 252 (expression_statement) '}' reduce using rule 252 (expression_statement) '&' reduce using rule 252 (expression_statement) '*' reduce using rule 252 (expression_statement) '+' reduce using rule 252 (expression_statement) '-' reduce using rule 252 (expression_statement) '~' reduce using rule 252 (expression_statement) '!' reduce using rule 252 (expression_statement) ';' reduce using rule 252 (expression_statement)
246 compound_statement → '{' block_item_list '}' • [$end, IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] $end reduce using rule 246 (compound_statement) IDENTIFIER reduce using rule 246 (compound_statement) I_CONSTANT reduce using rule 246 (compound_statement) F_CONSTANT reduce using rule 246 (compound_statement) STRING_LITERAL reduce using rule 246 (compound_statement) FUNC_NAME reduce using rule 246 (compound_statement) SIZEOF reduce using rule 246 (compound_statement) INC_OP reduce using rule 246 (compound_statement) DEC_OP reduce using rule 246 (compound_statement) TYPEDEF_NAME reduce using rule 246 (compound_statement) ENUMERATION_CONSTANT reduce using rule 246 (compound_statement) TYPEDEF reduce using rule 246 (compound_statement) EXTERN reduce using rule 246 (compound_statement) STATIC reduce using rule 246 (compound_statement) AUTO reduce using rule 246 (compound_statement) REGISTER reduce using rule 246 (compound_statement) INLINE reduce using rule 246 (compound_statement) CONST reduce using rule 246 (compound_statement) RESTRICT reduce using rule 246 (compound_statement) VOLATILE reduce using rule 246 (compound_statement) BOOL reduce using rule 246 (compound_statement) CHAR reduce using rule 246 (compound_statement) SHORT reduce using rule 246 (compound_statement) INT reduce using rule 246 (compound_statement) LONG reduce using rule 246 (compound_statement) SIGNED reduce using rule 246 (compound_statement) UNSIGNED reduce using rule 246 (compound_statement) FLOAT reduce using rule 246 (compound_statement) DOUBLE reduce using rule 246 (compound_statement) VOID reduce using rule 246 (compound_statement) COMPLEX reduce using rule 246 (compound_statement) IMAGINARY reduce using rule 246 (compound_statement) STRUCT reduce using rule 246 (compound_statement) UNION reduce using rule 246 (compound_statement) ENUM reduce using rule 246 (compound_statement) CASE reduce using rule 246 (compound_statement) DEFAULT reduce using rule 246 (compound_statement) IF reduce using rule 246 (compound_statement) ELSE reduce using rule 246 (compound_statement) SWITCH reduce using rule 246 (compound_statement) WHILE reduce using rule 246 (compound_statement) DO reduce using rule 246 (compound_statement) FOR reduce using rule 246 (compound_statement) GOTO reduce using rule 246 (compound_statement) CONTINUE reduce using rule 246 (compound_statement) BREAK reduce using rule 246 (compound_statement) RETURN reduce using rule 246 (compound_statement) ALIGNAS reduce using rule 246 (compound_statement) ALIGNOF reduce using rule 246 (compound_statement) ATOMIC reduce using rule 246 (compound_statement) GENERIC reduce using rule 246 (compound_statement) NORETURN reduce using rule 246 (compound_statement) STATIC_ASSERT reduce using rule 246 (compound_statement) THREAD_LOCAL reduce using rule 246 (compound_statement) '(' reduce using rule 246 (compound_statement) '{' reduce using rule 246 (compound_statement) '}' reduce using rule 246 (compound_statement) '&' reduce using rule 246 (compound_statement) '*' reduce using rule 246 (compound_statement) '+' reduce using rule 246 (compound_statement) '-' reduce using rule 246 (compound_statement) '~' reduce using rule 246 (compound_statement) '!' reduce using rule 246 (compound_statement) ';' reduce using rule 246 (compound_statement)
248 block_item_list → block_item_list block_item • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 248 (block_item_list) I_CONSTANT reduce using rule 248 (block_item_list) F_CONSTANT reduce using rule 248 (block_item_list) STRING_LITERAL reduce using rule 248 (block_item_list) FUNC_NAME reduce using rule 248 (block_item_list) SIZEOF reduce using rule 248 (block_item_list) INC_OP reduce using rule 248 (block_item_list) DEC_OP reduce using rule 248 (block_item_list) TYPEDEF_NAME reduce using rule 248 (block_item_list) ENUMERATION_CONSTANT reduce using rule 248 (block_item_list) TYPEDEF reduce using rule 248 (block_item_list) EXTERN reduce using rule 248 (block_item_list) STATIC reduce using rule 248 (block_item_list) AUTO reduce using rule 248 (block_item_list) REGISTER reduce using rule 248 (block_item_list) INLINE reduce using rule 248 (block_item_list) CONST reduce using rule 248 (block_item_list) RESTRICT reduce using rule 248 (block_item_list) VOLATILE reduce using rule 248 (block_item_list) BOOL reduce using rule 248 (block_item_list) CHAR reduce using rule 248 (block_item_list) SHORT reduce using rule 248 (block_item_list) INT reduce using rule 248 (block_item_list) LONG reduce using rule 248 (block_item_list) SIGNED reduce using rule 248 (block_item_list) UNSIGNED reduce using rule 248 (block_item_list) FLOAT reduce using rule 248 (block_item_list) DOUBLE reduce using rule 248 (block_item_list) VOID reduce using rule 248 (block_item_list) COMPLEX reduce using rule 248 (block_item_list) IMAGINARY reduce using rule 248 (block_item_list) STRUCT reduce using rule 248 (block_item_list) UNION reduce using rule 248 (block_item_list) ENUM reduce using rule 248 (block_item_list) CASE reduce using rule 248 (block_item_list) DEFAULT reduce using rule 248 (block_item_list) IF reduce using rule 248 (block_item_list) SWITCH reduce using rule 248 (block_item_list) WHILE reduce using rule 248 (block_item_list) DO reduce using rule 248 (block_item_list) FOR reduce using rule 248 (block_item_list) GOTO reduce using rule 248 (block_item_list) CONTINUE reduce using rule 248 (block_item_list) BREAK reduce using rule 248 (block_item_list) RETURN reduce using rule 248 (block_item_list) ALIGNAS reduce using rule 248 (block_item_list) ALIGNOF reduce using rule 248 (block_item_list) ATOMIC reduce using rule 248 (block_item_list) GENERIC reduce using rule 248 (block_item_list) NORETURN reduce using rule 248 (block_item_list) STATIC_ASSERT reduce using rule 248 (block_item_list) THREAD_LOCAL reduce using rule 248 (block_item_list) '(' reduce using rule 248 (block_item_list) '{' reduce using rule 248 (block_item_list) '}' reduce using rule 248 (block_item_list) '&' reduce using rule 248 (block_item_list) '*' reduce using rule 248 (block_item_list) '+' reduce using rule 248 (block_item_list) '-' reduce using rule 248 (block_item_list) '~' reduce using rule 248 (block_item_list) '!' reduce using rule 248 (block_item_list) ';' reduce using rule 248 (block_item_list)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 89 constant_expression → • conditional_expression 233 designator → '[' • constant_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 110 constant_expression go to state 393
234 designator → '.' • IDENTIFIER IDENTIFIER shift, and go to state 394
227 initializer_list → initializer • [',', '}'] ',' reduce using rule 227 (initializer_list) '}' reduce using rule 227 (initializer_list)
223 initializer → '{' initializer_list • '}' 224 | '{' initializer_list • ',' '}' 228 initializer_list → initializer_list • ',' designation initializer 229 | initializer_list • ',' initializer ',' shift, and go to state 395 '}' shift, and go to state 396
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 223 initializer → • '{' initializer_list '}' 224 | • '{' initializer_list ',' '}' 225 | • assignment_expression 226 initializer_list → designation • initializer IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 222 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 223 initializer go to state 397
230 designation → designator_list • '=' 232 designator_list → designator_list • designator 233 designator → • '[' constant_expression ']' 234 | • '.' IDENTIFIER '[' shift, and go to state 324 '.' shift, and go to state 325 '=' shift, and go to state 398 designator go to state 399
231 designator_list → designator • ['[', '.', '='] '[' reduce using rule 231 (designator_list) '.' reduce using rule 231 (designator_list) '=' reduce using rule 231 (designator_list)
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 169 | '(' • declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' 188 parameter_type_list → • parameter_list ',' ELLIPSIS 189 | • parameter_list 190 parameter_list → • parameter_declaration 191 | • parameter_list ',' parameter_declaration 192 parameter_declaration → • declaration_specifiers declarator 193 | • declaration_specifiers abstract_declarator 194 | • declaration_specifiers 199 abstract_declarator → • pointer direct_abstract_declarator 200 | • pointer 201 | • direct_abstract_declarator 202 direct_abstract_declarator → • '(' abstract_declarator ')' 202 | '(' • abstract_declarator ')' 203 | • '[' ']' 204 | • '[' '*' ']' 205 | • '[' STATIC type_qualifier_list assignment_expression ']' 206 | • '[' STATIC assignment_expression ']' 207 | • '[' type_qualifier_list STATIC assignment_expression ']' 208 | • '[' type_qualifier_list assignment_expression ']' 209 | • '[' type_qualifier_list ']' 210 | • '[' assignment_expression ']' 211 | • direct_abstract_declarator '[' ']' 212 | • direct_abstract_declarator '[' '*' ']' 213 | • direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' 214 | • direct_abstract_declarator '[' STATIC assignment_expression ']' 215 | • direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' 216 | • direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' 217 | • direct_abstract_declarator '[' type_qualifier_list ']' 218 | • direct_abstract_declarator '[' assignment_expression ']' 219 | • '(' ')' 219 | '(' • ')' 220 | • '(' parameter_type_list ')' 220 | '(' • parameter_type_list ')' 221 | • direct_abstract_declarator '(' ')' 222 | • direct_abstract_declarator '(' parameter_type_list ')' IDENTIFIER shift, and go to state 51 TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 '(' shift, and go to state 331 ')' shift, and go to state 296 '[' shift, and go to state 184 '*' shift, and go to state 53 declaration_specifiers go to state 229 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 declarator go to state 118 direct_declarator go to state 58 pointer go to state 333 parameter_type_list go to state 297 parameter_list go to state 231 parameter_declaration go to state 232 abstract_declarator go to state 298 direct_abstract_declarator go to state 187
192 parameter_declaration → declaration_specifiers declarator • [')', ','] ')' reduce using rule 192 (parameter_declaration) ',' reduce using rule 192 (parameter_declaration)
166 declarator → pointer • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 199 abstract_declarator → pointer • direct_abstract_declarator 200 | pointer • [')', ','] 202 direct_abstract_declarator → • '(' abstract_declarator ')' 203 | • '[' ']' 204 | • '[' '*' ']' 205 | • '[' STATIC type_qualifier_list assignment_expression ']' 206 | • '[' STATIC assignment_expression ']' 207 | • '[' type_qualifier_list STATIC assignment_expression ']' 208 | • '[' type_qualifier_list assignment_expression ']' 209 | • '[' type_qualifier_list ']' 210 | • '[' assignment_expression ']' 211 | • direct_abstract_declarator '[' ']' 212 | • direct_abstract_declarator '[' '*' ']' 213 | • direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' 214 | • direct_abstract_declarator '[' STATIC assignment_expression ']' 215 | • direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' 216 | • direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' 217 | • direct_abstract_declarator '[' type_qualifier_list ']' 218 | • direct_abstract_declarator '[' assignment_expression ']' 219 | • '(' ')' 220 | • '(' parameter_type_list ')' 221 | • direct_abstract_declarator '(' ')' 222 | • direct_abstract_declarator '(' parameter_type_list ')' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 331 '[' shift, and go to state 184 ')' reduce using rule 200 (abstract_declarator) ',' reduce using rule 200 (abstract_declarator) direct_declarator go to state 133 direct_abstract_declarator go to state 304
193 parameter_declaration → declaration_specifiers abstract_declarator • [')', ','] ')' reduce using rule 193 (parameter_declaration) ',' reduce using rule 193 (parameter_declaration)
179 direct_declarator → direct_declarator '(' parameter_type_list ')' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 179 (direct_declarator) TYPEDEF reduce using rule 179 (direct_declarator) EXTERN reduce using rule 179 (direct_declarator) STATIC reduce using rule 179 (direct_declarator) AUTO reduce using rule 179 (direct_declarator) REGISTER reduce using rule 179 (direct_declarator) INLINE reduce using rule 179 (direct_declarator) CONST reduce using rule 179 (direct_declarator) RESTRICT reduce using rule 179 (direct_declarator) VOLATILE reduce using rule 179 (direct_declarator) BOOL reduce using rule 179 (direct_declarator) CHAR reduce using rule 179 (direct_declarator) SHORT reduce using rule 179 (direct_declarator) INT reduce using rule 179 (direct_declarator) LONG reduce using rule 179 (direct_declarator) SIGNED reduce using rule 179 (direct_declarator) UNSIGNED reduce using rule 179 (direct_declarator) FLOAT reduce using rule 179 (direct_declarator) DOUBLE reduce using rule 179 (direct_declarator) VOID reduce using rule 179 (direct_declarator) COMPLEX reduce using rule 179 (direct_declarator) IMAGINARY reduce using rule 179 (direct_declarator) STRUCT reduce using rule 179 (direct_declarator) UNION reduce using rule 179 (direct_declarator) ENUM reduce using rule 179 (direct_declarator) ALIGNAS reduce using rule 179 (direct_declarator) ATOMIC reduce using rule 179 (direct_declarator) NORETURN reduce using rule 179 (direct_declarator) STATIC_ASSERT reduce using rule 179 (direct_declarator) THREAD_LOCAL reduce using rule 179 (direct_declarator) '(' reduce using rule 179 (direct_declarator) ')' reduce using rule 179 (direct_declarator) ',' reduce using rule 179 (direct_declarator) ':' reduce using rule 179 (direct_declarator) '[' reduce using rule 179 (direct_declarator) '{' reduce using rule 179 (direct_declarator) '=' reduce using rule 179 (direct_declarator) ';' reduce using rule 179 (direct_declarator)
93 declaration_specifiers → • storage_class_specifier declaration_specifiers 94 | • storage_class_specifier 95 | • type_specifier declaration_specifiers 96 | • type_specifier 97 | • type_qualifier declaration_specifiers 98 | • type_qualifier 99 | • function_specifier declaration_specifiers 100 | • function_specifier 101 | • alignment_specifier declaration_specifiers 102 | • alignment_specifier 107 storage_class_specifier → • TYPEDEF 108 | • EXTERN 109 | • STATIC 110 | • THREAD_LOCAL 111 | • AUTO 112 | • REGISTER 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 162 function_specifier → • INLINE 163 | • NORETURN 164 alignment_specifier → • ALIGNAS '(' type_name ')' 165 | • ALIGNAS '(' constant_expression ')' 188 parameter_type_list → parameter_list ',' • ELLIPSIS 191 parameter_list → parameter_list ',' • parameter_declaration 192 parameter_declaration → • declaration_specifiers declarator 193 | • declaration_specifiers abstract_declarator 194 | • declaration_specifiers TYPEDEF_NAME shift, and go to state 1 TYPEDEF shift, and go to state 2 EXTERN shift, and go to state 3 STATIC shift, and go to state 4 AUTO shift, and go to state 5 REGISTER shift, and go to state 6 INLINE shift, and go to state 7 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 ELLIPSIS shift, and go to state 400 ALIGNAS shift, and go to state 26 ATOMIC shift, and go to state 27 NORETURN shift, and go to state 28 THREAD_LOCAL shift, and go to state 30 declaration_specifiers go to state 229 storage_class_specifier go to state 33 type_specifier go to state 34 struct_or_union_specifier go to state 35 struct_or_union go to state 36 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 39 function_specifier go to state 40 alignment_specifier go to state 41 parameter_declaration go to state 401
181 direct_declarator → direct_declarator '(' identifier_list ')' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 181 (direct_declarator) TYPEDEF reduce using rule 181 (direct_declarator) EXTERN reduce using rule 181 (direct_declarator) STATIC reduce using rule 181 (direct_declarator) AUTO reduce using rule 181 (direct_declarator) REGISTER reduce using rule 181 (direct_declarator) INLINE reduce using rule 181 (direct_declarator) CONST reduce using rule 181 (direct_declarator) RESTRICT reduce using rule 181 (direct_declarator) VOLATILE reduce using rule 181 (direct_declarator) BOOL reduce using rule 181 (direct_declarator) CHAR reduce using rule 181 (direct_declarator) SHORT reduce using rule 181 (direct_declarator) INT reduce using rule 181 (direct_declarator) LONG reduce using rule 181 (direct_declarator) SIGNED reduce using rule 181 (direct_declarator) UNSIGNED reduce using rule 181 (direct_declarator) FLOAT reduce using rule 181 (direct_declarator) DOUBLE reduce using rule 181 (direct_declarator) VOID reduce using rule 181 (direct_declarator) COMPLEX reduce using rule 181 (direct_declarator) IMAGINARY reduce using rule 181 (direct_declarator) STRUCT reduce using rule 181 (direct_declarator) UNION reduce using rule 181 (direct_declarator) ENUM reduce using rule 181 (direct_declarator) ALIGNAS reduce using rule 181 (direct_declarator) ATOMIC reduce using rule 181 (direct_declarator) NORETURN reduce using rule 181 (direct_declarator) STATIC_ASSERT reduce using rule 181 (direct_declarator) THREAD_LOCAL reduce using rule 181 (direct_declarator) '(' reduce using rule 181 (direct_declarator) ')' reduce using rule 181 (direct_declarator) ',' reduce using rule 181 (direct_declarator) ':' reduce using rule 181 (direct_declarator) '[' reduce using rule 181 (direct_declarator) '{' reduce using rule 181 (direct_declarator) '=' reduce using rule 181 (direct_declarator) ';' reduce using rule 181 (direct_declarator)
196 identifier_list → identifier_list ',' • IDENTIFIER IDENTIFIER shift, and go to state 402
173 direct_declarator → direct_declarator '[' STATIC assignment_expression • ']' ']' shift, and go to state 403
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 172 direct_declarator → direct_declarator '[' STATIC type_qualifier_list • assignment_expression ']' 187 type_qualifier_list → type_qualifier_list • type_qualifier IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 404 type_qualifier go to state 193
171 direct_declarator → direct_declarator '[' '*' ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 171 (direct_declarator) TYPEDEF reduce using rule 171 (direct_declarator) EXTERN reduce using rule 171 (direct_declarator) STATIC reduce using rule 171 (direct_declarator) AUTO reduce using rule 171 (direct_declarator) REGISTER reduce using rule 171 (direct_declarator) INLINE reduce using rule 171 (direct_declarator) CONST reduce using rule 171 (direct_declarator) RESTRICT reduce using rule 171 (direct_declarator) VOLATILE reduce using rule 171 (direct_declarator) BOOL reduce using rule 171 (direct_declarator) CHAR reduce using rule 171 (direct_declarator) SHORT reduce using rule 171 (direct_declarator) INT reduce using rule 171 (direct_declarator) LONG reduce using rule 171 (direct_declarator) SIGNED reduce using rule 171 (direct_declarator) UNSIGNED reduce using rule 171 (direct_declarator) FLOAT reduce using rule 171 (direct_declarator) DOUBLE reduce using rule 171 (direct_declarator) VOID reduce using rule 171 (direct_declarator) COMPLEX reduce using rule 171 (direct_declarator) IMAGINARY reduce using rule 171 (direct_declarator) STRUCT reduce using rule 171 (direct_declarator) UNION reduce using rule 171 (direct_declarator) ENUM reduce using rule 171 (direct_declarator) ALIGNAS reduce using rule 171 (direct_declarator) ATOMIC reduce using rule 171 (direct_declarator) NORETURN reduce using rule 171 (direct_declarator) STATIC_ASSERT reduce using rule 171 (direct_declarator) THREAD_LOCAL reduce using rule 171 (direct_declarator) '(' reduce using rule 171 (direct_declarator) ')' reduce using rule 171 (direct_declarator) ',' reduce using rule 171 (direct_declarator) ':' reduce using rule 171 (direct_declarator) '[' reduce using rule 171 (direct_declarator) '{' reduce using rule 171 (direct_declarator) '=' reduce using rule 171 (direct_declarator) ';' reduce using rule 171 (direct_declarator)
178 direct_declarator → direct_declarator '[' assignment_expression ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 178 (direct_declarator) TYPEDEF reduce using rule 178 (direct_declarator) EXTERN reduce using rule 178 (direct_declarator) STATIC reduce using rule 178 (direct_declarator) AUTO reduce using rule 178 (direct_declarator) REGISTER reduce using rule 178 (direct_declarator) INLINE reduce using rule 178 (direct_declarator) CONST reduce using rule 178 (direct_declarator) RESTRICT reduce using rule 178 (direct_declarator) VOLATILE reduce using rule 178 (direct_declarator) BOOL reduce using rule 178 (direct_declarator) CHAR reduce using rule 178 (direct_declarator) SHORT reduce using rule 178 (direct_declarator) INT reduce using rule 178 (direct_declarator) LONG reduce using rule 178 (direct_declarator) SIGNED reduce using rule 178 (direct_declarator) UNSIGNED reduce using rule 178 (direct_declarator) FLOAT reduce using rule 178 (direct_declarator) DOUBLE reduce using rule 178 (direct_declarator) VOID reduce using rule 178 (direct_declarator) COMPLEX reduce using rule 178 (direct_declarator) IMAGINARY reduce using rule 178 (direct_declarator) STRUCT reduce using rule 178 (direct_declarator) UNION reduce using rule 178 (direct_declarator) ENUM reduce using rule 178 (direct_declarator) ALIGNAS reduce using rule 178 (direct_declarator) ATOMIC reduce using rule 178 (direct_declarator) NORETURN reduce using rule 178 (direct_declarator) STATIC_ASSERT reduce using rule 178 (direct_declarator) THREAD_LOCAL reduce using rule 178 (direct_declarator) '(' reduce using rule 178 (direct_declarator) ')' reduce using rule 178 (direct_declarator) ',' reduce using rule 178 (direct_declarator) ':' reduce using rule 178 (direct_declarator) '[' reduce using rule 178 (direct_declarator) '{' reduce using rule 178 (direct_declarator) '=' reduce using rule 178 (direct_declarator) ';' reduce using rule 178 (direct_declarator)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 175 direct_declarator → direct_declarator '[' type_qualifier_list STATIC • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 405
177 direct_declarator → direct_declarator '[' type_qualifier_list ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 177 (direct_declarator) TYPEDEF reduce using rule 177 (direct_declarator) EXTERN reduce using rule 177 (direct_declarator) STATIC reduce using rule 177 (direct_declarator) AUTO reduce using rule 177 (direct_declarator) REGISTER reduce using rule 177 (direct_declarator) INLINE reduce using rule 177 (direct_declarator) CONST reduce using rule 177 (direct_declarator) RESTRICT reduce using rule 177 (direct_declarator) VOLATILE reduce using rule 177 (direct_declarator) BOOL reduce using rule 177 (direct_declarator) CHAR reduce using rule 177 (direct_declarator) SHORT reduce using rule 177 (direct_declarator) INT reduce using rule 177 (direct_declarator) LONG reduce using rule 177 (direct_declarator) SIGNED reduce using rule 177 (direct_declarator) UNSIGNED reduce using rule 177 (direct_declarator) FLOAT reduce using rule 177 (direct_declarator) DOUBLE reduce using rule 177 (direct_declarator) VOID reduce using rule 177 (direct_declarator) COMPLEX reduce using rule 177 (direct_declarator) IMAGINARY reduce using rule 177 (direct_declarator) STRUCT reduce using rule 177 (direct_declarator) UNION reduce using rule 177 (direct_declarator) ENUM reduce using rule 177 (direct_declarator) ALIGNAS reduce using rule 177 (direct_declarator) ATOMIC reduce using rule 177 (direct_declarator) NORETURN reduce using rule 177 (direct_declarator) STATIC_ASSERT reduce using rule 177 (direct_declarator) THREAD_LOCAL reduce using rule 177 (direct_declarator) '(' reduce using rule 177 (direct_declarator) ')' reduce using rule 177 (direct_declarator) ',' reduce using rule 177 (direct_declarator) ':' reduce using rule 177 (direct_declarator) '[' reduce using rule 177 (direct_declarator) '{' reduce using rule 177 (direct_declarator) '=' reduce using rule 177 (direct_declarator) ';' reduce using rule 177 (direct_declarator)
37 unary_operator → '*' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] 174 direct_declarator → direct_declarator '[' type_qualifier_list '*' • ']' ']' shift, and go to state 406 IDENTIFIER reduce using rule 37 (unary_operator) I_CONSTANT reduce using rule 37 (unary_operator) F_CONSTANT reduce using rule 37 (unary_operator) STRING_LITERAL reduce using rule 37 (unary_operator) FUNC_NAME reduce using rule 37 (unary_operator) SIZEOF reduce using rule 37 (unary_operator) INC_OP reduce using rule 37 (unary_operator) DEC_OP reduce using rule 37 (unary_operator) ENUMERATION_CONSTANT reduce using rule 37 (unary_operator) ALIGNOF reduce using rule 37 (unary_operator) GENERIC reduce using rule 37 (unary_operator) '(' reduce using rule 37 (unary_operator) '&' reduce using rule 37 (unary_operator) '*' reduce using rule 37 (unary_operator) '+' reduce using rule 37 (unary_operator) '-' reduce using rule 37 (unary_operator) '~' reduce using rule 37 (unary_operator) '!' reduce using rule 37 (unary_operator)
176 direct_declarator → direct_declarator '[' type_qualifier_list assignment_expression • ']' ']' shift, and go to state 407
130 struct_or_union_specifier → struct_or_union IDENTIFIER '{' struct_declaration_list '}' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 130 (struct_or_union_specifier) TYPEDEF_NAME reduce using rule 130 (struct_or_union_specifier) TYPEDEF reduce using rule 130 (struct_or_union_specifier) EXTERN reduce using rule 130 (struct_or_union_specifier) STATIC reduce using rule 130 (struct_or_union_specifier) AUTO reduce using rule 130 (struct_or_union_specifier) REGISTER reduce using rule 130 (struct_or_union_specifier) INLINE reduce using rule 130 (struct_or_union_specifier) CONST reduce using rule 130 (struct_or_union_specifier) RESTRICT reduce using rule 130 (struct_or_union_specifier) VOLATILE reduce using rule 130 (struct_or_union_specifier) BOOL reduce using rule 130 (struct_or_union_specifier) CHAR reduce using rule 130 (struct_or_union_specifier) SHORT reduce using rule 130 (struct_or_union_specifier) INT reduce using rule 130 (struct_or_union_specifier) LONG reduce using rule 130 (struct_or_union_specifier) SIGNED reduce using rule 130 (struct_or_union_specifier) UNSIGNED reduce using rule 130 (struct_or_union_specifier) FLOAT reduce using rule 130 (struct_or_union_specifier) DOUBLE reduce using rule 130 (struct_or_union_specifier) VOID reduce using rule 130 (struct_or_union_specifier) COMPLEX reduce using rule 130 (struct_or_union_specifier) IMAGINARY reduce using rule 130 (struct_or_union_specifier) STRUCT reduce using rule 130 (struct_or_union_specifier) UNION reduce using rule 130 (struct_or_union_specifier) ENUM reduce using rule 130 (struct_or_union_specifier) ALIGNAS reduce using rule 130 (struct_or_union_specifier) ATOMIC reduce using rule 130 (struct_or_union_specifier) NORETURN reduce using rule 130 (struct_or_union_specifier) THREAD_LOCAL reduce using rule 130 (struct_or_union_specifier) '(' reduce using rule 130 (struct_or_union_specifier) ')' reduce using rule 130 (struct_or_union_specifier) ',' reduce using rule 130 (struct_or_union_specifier) ':' reduce using rule 130 (struct_or_union_specifier) '[' reduce using rule 130 (struct_or_union_specifier) '*' reduce using rule 130 (struct_or_union_specifier) ';' reduce using rule 130 (struct_or_union_specifier)
145 struct_declarator → ':' constant_expression • [',', ';'] ',' reduce using rule 145 (struct_declarator) ';' reduce using rule 145 (struct_declarator)
144 struct_declarator_list → struct_declarator_list ',' • struct_declarator 145 struct_declarator → • ':' constant_expression 146 | • declarator ':' constant_expression 147 | • declarator 166 declarator → • pointer direct_declarator 167 | • direct_declarator 168 direct_declarator → • IDENTIFIER 169 | • '(' declarator ')' 170 | • direct_declarator '[' ']' 171 | • direct_declarator '[' '*' ']' 172 | • direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' 173 | • direct_declarator '[' STATIC assignment_expression ']' 174 | • direct_declarator '[' type_qualifier_list '*' ']' 175 | • direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' 176 | • direct_declarator '[' type_qualifier_list assignment_expression ']' 177 | • direct_declarator '[' type_qualifier_list ']' 178 | • direct_declarator '[' assignment_expression ']' 179 | • direct_declarator '(' parameter_type_list ')' 180 | • direct_declarator '(' ')' 181 | • direct_declarator '(' identifier_list ')' 182 pointer → • '*' type_qualifier_list pointer 183 | • '*' type_qualifier_list 184 | • '*' pointer 185 | • '*' IDENTIFIER shift, and go to state 51 '(' shift, and go to state 52 ':' shift, and go to state 242 '*' shift, and go to state 53 struct_declarator go to state 408 declarator go to state 246 direct_declarator go to state 58 pointer go to state 59
137 struct_declaration → specifier_qualifier_list struct_declarator_list ';' • [TYPEDEF_NAME, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ATOMIC, STATIC_ASSERT, '}'] TYPEDEF_NAME reduce using rule 137 (struct_declaration) CONST reduce using rule 137 (struct_declaration) RESTRICT reduce using rule 137 (struct_declaration) VOLATILE reduce using rule 137 (struct_declaration) BOOL reduce using rule 137 (struct_declaration) CHAR reduce using rule 137 (struct_declaration) SHORT reduce using rule 137 (struct_declaration) INT reduce using rule 137 (struct_declaration) LONG reduce using rule 137 (struct_declaration) SIGNED reduce using rule 137 (struct_declaration) UNSIGNED reduce using rule 137 (struct_declaration) FLOAT reduce using rule 137 (struct_declaration) DOUBLE reduce using rule 137 (struct_declaration) VOID reduce using rule 137 (struct_declaration) COMPLEX reduce using rule 137 (struct_declaration) IMAGINARY reduce using rule 137 (struct_declaration) STRUCT reduce using rule 137 (struct_declaration) UNION reduce using rule 137 (struct_declaration) ENUM reduce using rule 137 (struct_declaration) ATOMIC reduce using rule 137 (struct_declaration) STATIC_ASSERT reduce using rule 137 (struct_declaration) '}' reduce using rule 137 (struct_declaration)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 89 constant_expression → • conditional_expression 146 struct_declarator → declarator ':' • constant_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 110 constant_expression go to state 409
151 enum_specifier → ENUM IDENTIFIER '{' enumerator_list ',' '}' • [IDENTIFIER, TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, THREAD_LOCAL, '(', ')', ',', ':', '[', '*', ';'] IDENTIFIER reduce using rule 151 (enum_specifier) TYPEDEF_NAME reduce using rule 151 (enum_specifier) TYPEDEF reduce using rule 151 (enum_specifier) EXTERN reduce using rule 151 (enum_specifier) STATIC reduce using rule 151 (enum_specifier) AUTO reduce using rule 151 (enum_specifier) REGISTER reduce using rule 151 (enum_specifier) INLINE reduce using rule 151 (enum_specifier) CONST reduce using rule 151 (enum_specifier) RESTRICT reduce using rule 151 (enum_specifier) VOLATILE reduce using rule 151 (enum_specifier) BOOL reduce using rule 151 (enum_specifier) CHAR reduce using rule 151 (enum_specifier) SHORT reduce using rule 151 (enum_specifier) INT reduce using rule 151 (enum_specifier) LONG reduce using rule 151 (enum_specifier) SIGNED reduce using rule 151 (enum_specifier) UNSIGNED reduce using rule 151 (enum_specifier) FLOAT reduce using rule 151 (enum_specifier) DOUBLE reduce using rule 151 (enum_specifier) VOID reduce using rule 151 (enum_specifier) COMPLEX reduce using rule 151 (enum_specifier) IMAGINARY reduce using rule 151 (enum_specifier) STRUCT reduce using rule 151 (enum_specifier) UNION reduce using rule 151 (enum_specifier) ENUM reduce using rule 151 (enum_specifier) ALIGNAS reduce using rule 151 (enum_specifier) ATOMIC reduce using rule 151 (enum_specifier) NORETURN reduce using rule 151 (enum_specifier) THREAD_LOCAL reduce using rule 151 (enum_specifier) '(' reduce using rule 151 (enum_specifier) ')' reduce using rule 151 (enum_specifier) ',' reduce using rule 151 (enum_specifier) ':' reduce using rule 151 (enum_specifier) '[' reduce using rule 151 (enum_specifier) '*' reduce using rule 151 (enum_specifier) ';' reduce using rule 151 (enum_specifier)
25 postfix_expression → '(' type_name ')' • '{' initializer_list '}' 26 | '(' type_name ')' • '{' initializer_list ',' '}' 34 unary_expression → SIZEOF '(' type_name ')' • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] '{' shift, and go to state 359 LEFT_OP reduce using rule 34 (unary_expression) RIGHT_OP reduce using rule 34 (unary_expression) LE_OP reduce using rule 34 (unary_expression) GE_OP reduce using rule 34 (unary_expression) EQ_OP reduce using rule 34 (unary_expression) NE_OP reduce using rule 34 (unary_expression) AND_OP reduce using rule 34 (unary_expression) OR_OP reduce using rule 34 (unary_expression) MUL_ASSIGN reduce using rule 34 (unary_expression) DIV_ASSIGN reduce using rule 34 (unary_expression) MOD_ASSIGN reduce using rule 34 (unary_expression) ADD_ASSIGN reduce using rule 34 (unary_expression) SUB_ASSIGN reduce using rule 34 (unary_expression) LEFT_ASSIGN reduce using rule 34 (unary_expression) RIGHT_ASSIGN reduce using rule 34 (unary_expression) AND_ASSIGN reduce using rule 34 (unary_expression) XOR_ASSIGN reduce using rule 34 (unary_expression) OR_ASSIGN reduce using rule 34 (unary_expression) ')' reduce using rule 34 (unary_expression) ',' reduce using rule 34 (unary_expression) ':' reduce using rule 34 (unary_expression) ']' reduce using rule 34 (unary_expression) '}' reduce using rule 34 (unary_expression) '&' reduce using rule 34 (unary_expression) '*' reduce using rule 34 (unary_expression) '+' reduce using rule 34 (unary_expression) '-' reduce using rule 34 (unary_expression) '/' reduce using rule 34 (unary_expression) '%' reduce using rule 34 (unary_expression) '<' reduce using rule 34 (unary_expression) '>' reduce using rule 34 (unary_expression) '^' reduce using rule 34 (unary_expression) '|' reduce using rule 34 (unary_expression) '?' reduce using rule 34 (unary_expression) '=' reduce using rule 34 (unary_expression) ';' reduce using rule 34 (unary_expression)
25 postfix_expression → '(' type_name ')' • '{' initializer_list '}' 26 | '(' type_name ')' • '{' initializer_list ',' '}' '{' shift, and go to state 359
35 unary_expression → ALIGNOF '(' type_name ')' • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] LEFT_OP reduce using rule 35 (unary_expression) RIGHT_OP reduce using rule 35 (unary_expression) LE_OP reduce using rule 35 (unary_expression) GE_OP reduce using rule 35 (unary_expression) EQ_OP reduce using rule 35 (unary_expression) NE_OP reduce using rule 35 (unary_expression) AND_OP reduce using rule 35 (unary_expression) OR_OP reduce using rule 35 (unary_expression) MUL_ASSIGN reduce using rule 35 (unary_expression) DIV_ASSIGN reduce using rule 35 (unary_expression) MOD_ASSIGN reduce using rule 35 (unary_expression) ADD_ASSIGN reduce using rule 35 (unary_expression) SUB_ASSIGN reduce using rule 35 (unary_expression) LEFT_ASSIGN reduce using rule 35 (unary_expression) RIGHT_ASSIGN reduce using rule 35 (unary_expression) AND_ASSIGN reduce using rule 35 (unary_expression) XOR_ASSIGN reduce using rule 35 (unary_expression) OR_ASSIGN reduce using rule 35 (unary_expression) ')' reduce using rule 35 (unary_expression) ',' reduce using rule 35 (unary_expression) ':' reduce using rule 35 (unary_expression) ']' reduce using rule 35 (unary_expression) '}' reduce using rule 35 (unary_expression) '&' reduce using rule 35 (unary_expression) '*' reduce using rule 35 (unary_expression) '+' reduce using rule 35 (unary_expression) '-' reduce using rule 35 (unary_expression) '/' reduce using rule 35 (unary_expression) '%' reduce using rule 35 (unary_expression) '<' reduce using rule 35 (unary_expression) '>' reduce using rule 35 (unary_expression) '^' reduce using rule 35 (unary_expression) '|' reduce using rule 35 (unary_expression) '?' reduce using rule 35 (unary_expression) '=' reduce using rule 35 (unary_expression) ';' reduce using rule 35 (unary_expression)
12 generic_selection → GENERIC '(' assignment_expression ',' • generic_assoc_list ')' 13 generic_assoc_list → • generic_association 14 | • generic_assoc_list ',' generic_association 15 generic_association → • type_name ':' assignment_expression 16 | • DEFAULT ':' assignment_expression 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 DEFAULT shift, and go to state 410 ATOMIC shift, and go to state 27 generic_assoc_list go to state 411 generic_association go to state 412 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 413
75 assignment_expression → unary_expression assignment_operator assignment_expression • [')', ',', ':', ']', '}', ';'] ')' reduce using rule 75 (assignment_expression) ',' reduce using rule 75 (assignment_expression) ':' reduce using rule 75 (assignment_expression) ']' reduce using rule 75 (assignment_expression) '}' reduce using rule 75 (assignment_expression) ';' reduce using rule 75 (assignment_expression)
88 expression → expression ',' assignment_expression • [')', ',', ':', ']', ';'] ')' reduce using rule 88 (expression) ',' reduce using rule 88 (expression) ':' reduce using rule 88 (expression) ']' reduce using rule 88 (expression) ';' reduce using rule 88 (expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 25 | '(' type_name ')' '{' • initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 26 | '(' type_name ')' '{' • initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 223 initializer → • '{' initializer_list '}' 224 | • '{' initializer_list ',' '}' 225 | • assignment_expression 226 initializer_list → • designation initializer 227 | • initializer 228 | • initializer_list ',' designation initializer 229 | • initializer_list ',' initializer 230 designation → • designator_list '=' 231 designator_list → • designator 232 | • designator_list designator 233 designator → • '[' constant_expression ']' 234 | • '.' IDENTIFIER IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '[' shift, and go to state 324 '.' shift, and go to state 325 '{' shift, and go to state 222 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 223 initializer go to state 326 initializer_list go to state 414 designation go to state 328 designator_list go to state 329 designator go to state 330
43 cast_expression → '(' type_name ')' cast_expression • [LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, ')', ',', ':', ']', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] LEFT_OP reduce using rule 43 (cast_expression) RIGHT_OP reduce using rule 43 (cast_expression) LE_OP reduce using rule 43 (cast_expression) GE_OP reduce using rule 43 (cast_expression) EQ_OP reduce using rule 43 (cast_expression) NE_OP reduce using rule 43 (cast_expression) AND_OP reduce using rule 43 (cast_expression) OR_OP reduce using rule 43 (cast_expression) MUL_ASSIGN reduce using rule 43 (cast_expression) DIV_ASSIGN reduce using rule 43 (cast_expression) MOD_ASSIGN reduce using rule 43 (cast_expression) ADD_ASSIGN reduce using rule 43 (cast_expression) SUB_ASSIGN reduce using rule 43 (cast_expression) LEFT_ASSIGN reduce using rule 43 (cast_expression) RIGHT_ASSIGN reduce using rule 43 (cast_expression) AND_ASSIGN reduce using rule 43 (cast_expression) XOR_ASSIGN reduce using rule 43 (cast_expression) OR_ASSIGN reduce using rule 43 (cast_expression) ')' reduce using rule 43 (cast_expression) ',' reduce using rule 43 (cast_expression) ':' reduce using rule 43 (cast_expression) ']' reduce using rule 43 (cast_expression) '}' reduce using rule 43 (cast_expression) '&' reduce using rule 43 (cast_expression) '*' reduce using rule 43 (cast_expression) '+' reduce using rule 43 (cast_expression) '-' reduce using rule 43 (cast_expression) '/' reduce using rule 43 (cast_expression) '%' reduce using rule 43 (cast_expression) '<' reduce using rule 43 (cast_expression) '>' reduce using rule 43 (cast_expression) '^' reduce using rule 43 (cast_expression) '|' reduce using rule 43 (cast_expression) '?' reduce using rule 43 (cast_expression) '=' reduce using rule 43 (cast_expression) ';' reduce using rule 43 (cast_expression)
20 postfix_expression → postfix_expression '(' argument_expression_list ')' • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 20 (postfix_expression) INC_OP reduce using rule 20 (postfix_expression) DEC_OP reduce using rule 20 (postfix_expression) LEFT_OP reduce using rule 20 (postfix_expression) RIGHT_OP reduce using rule 20 (postfix_expression) LE_OP reduce using rule 20 (postfix_expression) GE_OP reduce using rule 20 (postfix_expression) EQ_OP reduce using rule 20 (postfix_expression) NE_OP reduce using rule 20 (postfix_expression) AND_OP reduce using rule 20 (postfix_expression) OR_OP reduce using rule 20 (postfix_expression) MUL_ASSIGN reduce using rule 20 (postfix_expression) DIV_ASSIGN reduce using rule 20 (postfix_expression) MOD_ASSIGN reduce using rule 20 (postfix_expression) ADD_ASSIGN reduce using rule 20 (postfix_expression) SUB_ASSIGN reduce using rule 20 (postfix_expression) LEFT_ASSIGN reduce using rule 20 (postfix_expression) RIGHT_ASSIGN reduce using rule 20 (postfix_expression) AND_ASSIGN reduce using rule 20 (postfix_expression) XOR_ASSIGN reduce using rule 20 (postfix_expression) OR_ASSIGN reduce using rule 20 (postfix_expression) '(' reduce using rule 20 (postfix_expression) ')' reduce using rule 20 (postfix_expression) ',' reduce using rule 20 (postfix_expression) ':' reduce using rule 20 (postfix_expression) '[' reduce using rule 20 (postfix_expression) ']' reduce using rule 20 (postfix_expression) '.' reduce using rule 20 (postfix_expression) '}' reduce using rule 20 (postfix_expression) '&' reduce using rule 20 (postfix_expression) '*' reduce using rule 20 (postfix_expression) '+' reduce using rule 20 (postfix_expression) '-' reduce using rule 20 (postfix_expression) '/' reduce using rule 20 (postfix_expression) '%' reduce using rule 20 (postfix_expression) '<' reduce using rule 20 (postfix_expression) '>' reduce using rule 20 (postfix_expression) '^' reduce using rule 20 (postfix_expression) '|' reduce using rule 20 (postfix_expression) '?' reduce using rule 20 (postfix_expression) '=' reduce using rule 20 (postfix_expression) ';' reduce using rule 20 (postfix_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 28 argument_expression_list → argument_expression_list ',' • assignment_expression 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 415
18 postfix_expression → postfix_expression '[' expression ']' • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 18 (postfix_expression) INC_OP reduce using rule 18 (postfix_expression) DEC_OP reduce using rule 18 (postfix_expression) LEFT_OP reduce using rule 18 (postfix_expression) RIGHT_OP reduce using rule 18 (postfix_expression) LE_OP reduce using rule 18 (postfix_expression) GE_OP reduce using rule 18 (postfix_expression) EQ_OP reduce using rule 18 (postfix_expression) NE_OP reduce using rule 18 (postfix_expression) AND_OP reduce using rule 18 (postfix_expression) OR_OP reduce using rule 18 (postfix_expression) MUL_ASSIGN reduce using rule 18 (postfix_expression) DIV_ASSIGN reduce using rule 18 (postfix_expression) MOD_ASSIGN reduce using rule 18 (postfix_expression) ADD_ASSIGN reduce using rule 18 (postfix_expression) SUB_ASSIGN reduce using rule 18 (postfix_expression) LEFT_ASSIGN reduce using rule 18 (postfix_expression) RIGHT_ASSIGN reduce using rule 18 (postfix_expression) AND_ASSIGN reduce using rule 18 (postfix_expression) XOR_ASSIGN reduce using rule 18 (postfix_expression) OR_ASSIGN reduce using rule 18 (postfix_expression) '(' reduce using rule 18 (postfix_expression) ')' reduce using rule 18 (postfix_expression) ',' reduce using rule 18 (postfix_expression) ':' reduce using rule 18 (postfix_expression) '[' reduce using rule 18 (postfix_expression) ']' reduce using rule 18 (postfix_expression) '.' reduce using rule 18 (postfix_expression) '}' reduce using rule 18 (postfix_expression) '&' reduce using rule 18 (postfix_expression) '*' reduce using rule 18 (postfix_expression) '+' reduce using rule 18 (postfix_expression) '-' reduce using rule 18 (postfix_expression) '/' reduce using rule 18 (postfix_expression) '%' reduce using rule 18 (postfix_expression) '<' reduce using rule 18 (postfix_expression) '>' reduce using rule 18 (postfix_expression) '^' reduce using rule 18 (postfix_expression) '|' reduce using rule 18 (postfix_expression) '?' reduce using rule 18 (postfix_expression) '=' reduce using rule 18 (postfix_expression) ';' reduce using rule 18 (postfix_expression)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 73 | logical_or_expression '?' expression ':' • conditional_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 97 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 416
220 direct_abstract_declarator → '(' parameter_type_list ')' • ['(', ')', ',', ':', '['] '(' reduce using rule 220 (direct_abstract_declarator) ')' reduce using rule 220 (direct_abstract_declarator) ',' reduce using rule 220 (direct_abstract_declarator) ':' reduce using rule 220 (direct_abstract_declarator) '[' reduce using rule 220 (direct_abstract_declarator)
202 direct_abstract_declarator → '(' abstract_declarator ')' • ['(', ')', ',', ':', '['] '(' reduce using rule 202 (direct_abstract_declarator) ')' reduce using rule 202 (direct_abstract_declarator) ',' reduce using rule 202 (direct_abstract_declarator) ':' reduce using rule 202 (direct_abstract_declarator) '[' reduce using rule 202 (direct_abstract_declarator)
206 direct_abstract_declarator → '[' STATIC assignment_expression • ']' ']' shift, and go to state 417
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 187 type_qualifier_list → type_qualifier_list • type_qualifier 205 direct_abstract_declarator → '[' STATIC type_qualifier_list • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 418 type_qualifier go to state 193
204 direct_abstract_declarator → '[' '*' ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 204 (direct_abstract_declarator) ')' reduce using rule 204 (direct_abstract_declarator) ',' reduce using rule 204 (direct_abstract_declarator) ':' reduce using rule 204 (direct_abstract_declarator) '[' reduce using rule 204 (direct_abstract_declarator)
210 direct_abstract_declarator → '[' assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 210 (direct_abstract_declarator) ')' reduce using rule 210 (direct_abstract_declarator) ',' reduce using rule 210 (direct_abstract_declarator) ':' reduce using rule 210 (direct_abstract_declarator) '[' reduce using rule 210 (direct_abstract_declarator)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 207 direct_abstract_declarator → '[' type_qualifier_list STATIC • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 419
209 direct_abstract_declarator → '[' type_qualifier_list ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 209 (direct_abstract_declarator) ')' reduce using rule 209 (direct_abstract_declarator) ',' reduce using rule 209 (direct_abstract_declarator) ':' reduce using rule 209 (direct_abstract_declarator) '[' reduce using rule 209 (direct_abstract_declarator)
208 direct_abstract_declarator → '[' type_qualifier_list assignment_expression • ']' ']' shift, and go to state 420
221 direct_abstract_declarator → direct_abstract_declarator '(' ')' • ['(', ')', ',', ':', '['] '(' reduce using rule 221 (direct_abstract_declarator) ')' reduce using rule 221 (direct_abstract_declarator) ',' reduce using rule 221 (direct_abstract_declarator) ':' reduce using rule 221 (direct_abstract_declarator) '[' reduce using rule 221 (direct_abstract_declarator)
222 direct_abstract_declarator → direct_abstract_declarator '(' parameter_type_list • ')' ')' shift, and go to state 421
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 186 type_qualifier_list → • type_qualifier 187 | • type_qualifier_list type_qualifier 213 direct_abstract_declarator → direct_abstract_declarator '[' STATIC • type_qualifier_list assignment_expression ']' 214 | direct_abstract_declarator '[' STATIC • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 422 type_qualifier go to state 120 type_qualifier_list go to state 423
211 direct_abstract_declarator → direct_abstract_declarator '[' ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 211 (direct_abstract_declarator) ')' reduce using rule 211 (direct_abstract_declarator) ',' reduce using rule 211 (direct_abstract_declarator) ':' reduce using rule 211 (direct_abstract_declarator) '[' reduce using rule 211 (direct_abstract_declarator)
37 unary_operator → '*' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '&', '*', '+', '-', '~', '!'] 212 direct_abstract_declarator → direct_abstract_declarator '[' '*' • ']' ']' shift, and go to state 424 IDENTIFIER reduce using rule 37 (unary_operator) I_CONSTANT reduce using rule 37 (unary_operator) F_CONSTANT reduce using rule 37 (unary_operator) STRING_LITERAL reduce using rule 37 (unary_operator) FUNC_NAME reduce using rule 37 (unary_operator) SIZEOF reduce using rule 37 (unary_operator) INC_OP reduce using rule 37 (unary_operator) DEC_OP reduce using rule 37 (unary_operator) ENUMERATION_CONSTANT reduce using rule 37 (unary_operator) ALIGNOF reduce using rule 37 (unary_operator) GENERIC reduce using rule 37 (unary_operator) '(' reduce using rule 37 (unary_operator) '&' reduce using rule 37 (unary_operator) '*' reduce using rule 37 (unary_operator) '+' reduce using rule 37 (unary_operator) '-' reduce using rule 37 (unary_operator) '~' reduce using rule 37 (unary_operator) '!' reduce using rule 37 (unary_operator)
218 direct_abstract_declarator → direct_abstract_declarator '[' assignment_expression • ']' ']' shift, and go to state 425
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 187 type_qualifier_list → type_qualifier_list • type_qualifier 215 direct_abstract_declarator → direct_abstract_declarator '[' type_qualifier_list • assignment_expression ']' 216 | direct_abstract_declarator '[' type_qualifier_list • STATIC assignment_expression ']' 217 | direct_abstract_declarator '[' type_qualifier_list • ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 STATIC shift, and go to state 426 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ']' shift, and go to state 427 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 428 type_qualifier go to state 193
235 static_assert_declaration → STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' • ';' ';' shift, and go to state 429
242 labeled_statement → IDENTIFIER ':' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 242 (labeled_statement) I_CONSTANT reduce using rule 242 (labeled_statement) F_CONSTANT reduce using rule 242 (labeled_statement) STRING_LITERAL reduce using rule 242 (labeled_statement) FUNC_NAME reduce using rule 242 (labeled_statement) SIZEOF reduce using rule 242 (labeled_statement) INC_OP reduce using rule 242 (labeled_statement) DEC_OP reduce using rule 242 (labeled_statement) TYPEDEF_NAME reduce using rule 242 (labeled_statement) ENUMERATION_CONSTANT reduce using rule 242 (labeled_statement) TYPEDEF reduce using rule 242 (labeled_statement) EXTERN reduce using rule 242 (labeled_statement) STATIC reduce using rule 242 (labeled_statement) AUTO reduce using rule 242 (labeled_statement) REGISTER reduce using rule 242 (labeled_statement) INLINE reduce using rule 242 (labeled_statement) CONST reduce using rule 242 (labeled_statement) RESTRICT reduce using rule 242 (labeled_statement) VOLATILE reduce using rule 242 (labeled_statement) BOOL reduce using rule 242 (labeled_statement) CHAR reduce using rule 242 (labeled_statement) SHORT reduce using rule 242 (labeled_statement) INT reduce using rule 242 (labeled_statement) LONG reduce using rule 242 (labeled_statement) SIGNED reduce using rule 242 (labeled_statement) UNSIGNED reduce using rule 242 (labeled_statement) FLOAT reduce using rule 242 (labeled_statement) DOUBLE reduce using rule 242 (labeled_statement) VOID reduce using rule 242 (labeled_statement) COMPLEX reduce using rule 242 (labeled_statement) IMAGINARY reduce using rule 242 (labeled_statement) STRUCT reduce using rule 242 (labeled_statement) UNION reduce using rule 242 (labeled_statement) ENUM reduce using rule 242 (labeled_statement) CASE reduce using rule 242 (labeled_statement) DEFAULT reduce using rule 242 (labeled_statement) IF reduce using rule 242 (labeled_statement) ELSE reduce using rule 242 (labeled_statement) SWITCH reduce using rule 242 (labeled_statement) WHILE reduce using rule 242 (labeled_statement) DO reduce using rule 242 (labeled_statement) FOR reduce using rule 242 (labeled_statement) GOTO reduce using rule 242 (labeled_statement) CONTINUE reduce using rule 242 (labeled_statement) BREAK reduce using rule 242 (labeled_statement) RETURN reduce using rule 242 (labeled_statement) ALIGNAS reduce using rule 242 (labeled_statement) ALIGNOF reduce using rule 242 (labeled_statement) ATOMIC reduce using rule 242 (labeled_statement) GENERIC reduce using rule 242 (labeled_statement) NORETURN reduce using rule 242 (labeled_statement) STATIC_ASSERT reduce using rule 242 (labeled_statement) THREAD_LOCAL reduce using rule 242 (labeled_statement) '(' reduce using rule 242 (labeled_statement) '{' reduce using rule 242 (labeled_statement) '}' reduce using rule 242 (labeled_statement) '&' reduce using rule 242 (labeled_statement) '*' reduce using rule 242 (labeled_statement) '+' reduce using rule 242 (labeled_statement) '-' reduce using rule 242 (labeled_statement) '~' reduce using rule 242 (labeled_statement) '!' reduce using rule 242 (labeled_statement) ';' reduce using rule 242 (labeled_statement)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 243 | CASE constant_expression ':' • statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 430 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
244 labeled_statement → DEFAULT ':' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 244 (labeled_statement) I_CONSTANT reduce using rule 244 (labeled_statement) F_CONSTANT reduce using rule 244 (labeled_statement) STRING_LITERAL reduce using rule 244 (labeled_statement) FUNC_NAME reduce using rule 244 (labeled_statement) SIZEOF reduce using rule 244 (labeled_statement) INC_OP reduce using rule 244 (labeled_statement) DEC_OP reduce using rule 244 (labeled_statement) TYPEDEF_NAME reduce using rule 244 (labeled_statement) ENUMERATION_CONSTANT reduce using rule 244 (labeled_statement) TYPEDEF reduce using rule 244 (labeled_statement) EXTERN reduce using rule 244 (labeled_statement) STATIC reduce using rule 244 (labeled_statement) AUTO reduce using rule 244 (labeled_statement) REGISTER reduce using rule 244 (labeled_statement) INLINE reduce using rule 244 (labeled_statement) CONST reduce using rule 244 (labeled_statement) RESTRICT reduce using rule 244 (labeled_statement) VOLATILE reduce using rule 244 (labeled_statement) BOOL reduce using rule 244 (labeled_statement) CHAR reduce using rule 244 (labeled_statement) SHORT reduce using rule 244 (labeled_statement) INT reduce using rule 244 (labeled_statement) LONG reduce using rule 244 (labeled_statement) SIGNED reduce using rule 244 (labeled_statement) UNSIGNED reduce using rule 244 (labeled_statement) FLOAT reduce using rule 244 (labeled_statement) DOUBLE reduce using rule 244 (labeled_statement) VOID reduce using rule 244 (labeled_statement) COMPLEX reduce using rule 244 (labeled_statement) IMAGINARY reduce using rule 244 (labeled_statement) STRUCT reduce using rule 244 (labeled_statement) UNION reduce using rule 244 (labeled_statement) ENUM reduce using rule 244 (labeled_statement) CASE reduce using rule 244 (labeled_statement) DEFAULT reduce using rule 244 (labeled_statement) IF reduce using rule 244 (labeled_statement) ELSE reduce using rule 244 (labeled_statement) SWITCH reduce using rule 244 (labeled_statement) WHILE reduce using rule 244 (labeled_statement) DO reduce using rule 244 (labeled_statement) FOR reduce using rule 244 (labeled_statement) GOTO reduce using rule 244 (labeled_statement) CONTINUE reduce using rule 244 (labeled_statement) BREAK reduce using rule 244 (labeled_statement) RETURN reduce using rule 244 (labeled_statement) ALIGNAS reduce using rule 244 (labeled_statement) ALIGNOF reduce using rule 244 (labeled_statement) ATOMIC reduce using rule 244 (labeled_statement) GENERIC reduce using rule 244 (labeled_statement) NORETURN reduce using rule 244 (labeled_statement) STATIC_ASSERT reduce using rule 244 (labeled_statement) THREAD_LOCAL reduce using rule 244 (labeled_statement) '(' reduce using rule 244 (labeled_statement) '{' reduce using rule 244 (labeled_statement) '}' reduce using rule 244 (labeled_statement) '&' reduce using rule 244 (labeled_statement) '*' reduce using rule 244 (labeled_statement) '+' reduce using rule 244 (labeled_statement) '-' reduce using rule 244 (labeled_statement) '~' reduce using rule 244 (labeled_statement) '!' reduce using rule 244 (labeled_statement) ';' reduce using rule 244 (labeled_statement)
88 expression → expression • ',' assignment_expression 253 selection_statement → IF '(' expression • ')' statement ELSE statement 254 | IF '(' expression • ')' statement ')' shift, and go to state 431 ',' shift, and go to state 269
88 expression → expression • ',' assignment_expression 255 selection_statement → SWITCH '(' expression • ')' statement ')' shift, and go to state 432 ',' shift, and go to state 269
88 expression → expression • ',' assignment_expression 256 iteration_statement → WHILE '(' expression • ')' statement ')' shift, and go to state 433 ',' shift, and go to state 269
257 iteration_statement → DO statement WHILE • '(' expression ')' ';' '(' shift, and go to state 434
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 251 expression_statement → • ';' 252 | • expression ';' 260 iteration_statement → FOR '(' declaration • expression_statement ')' statement 261 | FOR '(' declaration • expression_statement expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 expression_statement go to state 435
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 251 expression_statement → • ';' 252 | • expression ';' 258 iteration_statement → FOR '(' expression_statement • expression_statement ')' statement 259 | FOR '(' expression_statement • expression_statement expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 expression_statement go to state 436
262 jump_statement → GOTO IDENTIFIER ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 262 (jump_statement) I_CONSTANT reduce using rule 262 (jump_statement) F_CONSTANT reduce using rule 262 (jump_statement) STRING_LITERAL reduce using rule 262 (jump_statement) FUNC_NAME reduce using rule 262 (jump_statement) SIZEOF reduce using rule 262 (jump_statement) INC_OP reduce using rule 262 (jump_statement) DEC_OP reduce using rule 262 (jump_statement) TYPEDEF_NAME reduce using rule 262 (jump_statement) ENUMERATION_CONSTANT reduce using rule 262 (jump_statement) TYPEDEF reduce using rule 262 (jump_statement) EXTERN reduce using rule 262 (jump_statement) STATIC reduce using rule 262 (jump_statement) AUTO reduce using rule 262 (jump_statement) REGISTER reduce using rule 262 (jump_statement) INLINE reduce using rule 262 (jump_statement) CONST reduce using rule 262 (jump_statement) RESTRICT reduce using rule 262 (jump_statement) VOLATILE reduce using rule 262 (jump_statement) BOOL reduce using rule 262 (jump_statement) CHAR reduce using rule 262 (jump_statement) SHORT reduce using rule 262 (jump_statement) INT reduce using rule 262 (jump_statement) LONG reduce using rule 262 (jump_statement) SIGNED reduce using rule 262 (jump_statement) UNSIGNED reduce using rule 262 (jump_statement) FLOAT reduce using rule 262 (jump_statement) DOUBLE reduce using rule 262 (jump_statement) VOID reduce using rule 262 (jump_statement) COMPLEX reduce using rule 262 (jump_statement) IMAGINARY reduce using rule 262 (jump_statement) STRUCT reduce using rule 262 (jump_statement) UNION reduce using rule 262 (jump_statement) ENUM reduce using rule 262 (jump_statement) CASE reduce using rule 262 (jump_statement) DEFAULT reduce using rule 262 (jump_statement) IF reduce using rule 262 (jump_statement) ELSE reduce using rule 262 (jump_statement) SWITCH reduce using rule 262 (jump_statement) WHILE reduce using rule 262 (jump_statement) DO reduce using rule 262 (jump_statement) FOR reduce using rule 262 (jump_statement) GOTO reduce using rule 262 (jump_statement) CONTINUE reduce using rule 262 (jump_statement) BREAK reduce using rule 262 (jump_statement) RETURN reduce using rule 262 (jump_statement) ALIGNAS reduce using rule 262 (jump_statement) ALIGNOF reduce using rule 262 (jump_statement) ATOMIC reduce using rule 262 (jump_statement) GENERIC reduce using rule 262 (jump_statement) NORETURN reduce using rule 262 (jump_statement) STATIC_ASSERT reduce using rule 262 (jump_statement) THREAD_LOCAL reduce using rule 262 (jump_statement) '(' reduce using rule 262 (jump_statement) '{' reduce using rule 262 (jump_statement) '}' reduce using rule 262 (jump_statement) '&' reduce using rule 262 (jump_statement) '*' reduce using rule 262 (jump_statement) '+' reduce using rule 262 (jump_statement) '-' reduce using rule 262 (jump_statement) '~' reduce using rule 262 (jump_statement) '!' reduce using rule 262 (jump_statement) ';' reduce using rule 262 (jump_statement)
266 jump_statement → RETURN expression ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 266 (jump_statement) I_CONSTANT reduce using rule 266 (jump_statement) F_CONSTANT reduce using rule 266 (jump_statement) STRING_LITERAL reduce using rule 266 (jump_statement) FUNC_NAME reduce using rule 266 (jump_statement) SIZEOF reduce using rule 266 (jump_statement) INC_OP reduce using rule 266 (jump_statement) DEC_OP reduce using rule 266 (jump_statement) TYPEDEF_NAME reduce using rule 266 (jump_statement) ENUMERATION_CONSTANT reduce using rule 266 (jump_statement) TYPEDEF reduce using rule 266 (jump_statement) EXTERN reduce using rule 266 (jump_statement) STATIC reduce using rule 266 (jump_statement) AUTO reduce using rule 266 (jump_statement) REGISTER reduce using rule 266 (jump_statement) INLINE reduce using rule 266 (jump_statement) CONST reduce using rule 266 (jump_statement) RESTRICT reduce using rule 266 (jump_statement) VOLATILE reduce using rule 266 (jump_statement) BOOL reduce using rule 266 (jump_statement) CHAR reduce using rule 266 (jump_statement) SHORT reduce using rule 266 (jump_statement) INT reduce using rule 266 (jump_statement) LONG reduce using rule 266 (jump_statement) SIGNED reduce using rule 266 (jump_statement) UNSIGNED reduce using rule 266 (jump_statement) FLOAT reduce using rule 266 (jump_statement) DOUBLE reduce using rule 266 (jump_statement) VOID reduce using rule 266 (jump_statement) COMPLEX reduce using rule 266 (jump_statement) IMAGINARY reduce using rule 266 (jump_statement) STRUCT reduce using rule 266 (jump_statement) UNION reduce using rule 266 (jump_statement) ENUM reduce using rule 266 (jump_statement) CASE reduce using rule 266 (jump_statement) DEFAULT reduce using rule 266 (jump_statement) IF reduce using rule 266 (jump_statement) ELSE reduce using rule 266 (jump_statement) SWITCH reduce using rule 266 (jump_statement) WHILE reduce using rule 266 (jump_statement) DO reduce using rule 266 (jump_statement) FOR reduce using rule 266 (jump_statement) GOTO reduce using rule 266 (jump_statement) CONTINUE reduce using rule 266 (jump_statement) BREAK reduce using rule 266 (jump_statement) RETURN reduce using rule 266 (jump_statement) ALIGNAS reduce using rule 266 (jump_statement) ALIGNOF reduce using rule 266 (jump_statement) ATOMIC reduce using rule 266 (jump_statement) GENERIC reduce using rule 266 (jump_statement) NORETURN reduce using rule 266 (jump_statement) STATIC_ASSERT reduce using rule 266 (jump_statement) THREAD_LOCAL reduce using rule 266 (jump_statement) '(' reduce using rule 266 (jump_statement) '{' reduce using rule 266 (jump_statement) '}' reduce using rule 266 (jump_statement) '&' reduce using rule 266 (jump_statement) '*' reduce using rule 266 (jump_statement) '+' reduce using rule 266 (jump_statement) '-' reduce using rule 266 (jump_statement) '~' reduce using rule 266 (jump_statement) '!' reduce using rule 266 (jump_statement) ';' reduce using rule 266 (jump_statement)
233 designator → '[' constant_expression • ']' ']' shift, and go to state 437
234 designator → '.' IDENTIFIER • ['[', '.', '='] '[' reduce using rule 234 (designator) '.' reduce using rule 234 (designator) '=' reduce using rule 234 (designator)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 223 initializer → • '{' initializer_list '}' 224 | • '{' initializer_list ',' '}' 224 | '{' initializer_list ',' • '}' 225 | • assignment_expression 228 initializer_list → initializer_list ',' • designation initializer 229 | initializer_list ',' • initializer 230 designation → • designator_list '=' 231 designator_list → • designator 232 | • designator_list designator 233 designator → • '[' constant_expression ']' 234 | • '.' IDENTIFIER IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '[' shift, and go to state 324 '.' shift, and go to state 325 '{' shift, and go to state 222 '}' shift, and go to state 438 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 223 initializer go to state 439 designation go to state 440 designator_list go to state 329 designator go to state 330
223 initializer → '{' initializer_list '}' • [',', '}', ';'] ',' reduce using rule 223 (initializer) '}' reduce using rule 223 (initializer) ';' reduce using rule 223 (initializer)
226 initializer_list → designation initializer • [',', '}'] ',' reduce using rule 226 (initializer_list) '}' reduce using rule 226 (initializer_list)
230 designation → designator_list '=' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, ENUMERATION_CONSTANT, ALIGNOF, GENERIC, '(', '{', '&', '*', '+', '-', '~', '!'] IDENTIFIER reduce using rule 230 (designation) I_CONSTANT reduce using rule 230 (designation) F_CONSTANT reduce using rule 230 (designation) STRING_LITERAL reduce using rule 230 (designation) FUNC_NAME reduce using rule 230 (designation) SIZEOF reduce using rule 230 (designation) INC_OP reduce using rule 230 (designation) DEC_OP reduce using rule 230 (designation) ENUMERATION_CONSTANT reduce using rule 230 (designation) ALIGNOF reduce using rule 230 (designation) GENERIC reduce using rule 230 (designation) '(' reduce using rule 230 (designation) '{' reduce using rule 230 (designation) '&' reduce using rule 230 (designation) '*' reduce using rule 230 (designation) '+' reduce using rule 230 (designation) '-' reduce using rule 230 (designation) '~' reduce using rule 230 (designation) '!' reduce using rule 230 (designation)
232 designator_list → designator_list designator • ['[', '.', '='] '[' reduce using rule 232 (designator_list) '.' reduce using rule 232 (designator_list) '=' reduce using rule 232 (designator_list)
188 parameter_type_list → parameter_list ',' ELLIPSIS • [')'] ')' reduce using rule 188 (parameter_type_list)
191 parameter_list → parameter_list ',' parameter_declaration • [')', ','] ')' reduce using rule 191 (parameter_list) ',' reduce using rule 191 (parameter_list)
196 identifier_list → identifier_list ',' IDENTIFIER • [')', ','] ')' reduce using rule 196 (identifier_list) ',' reduce using rule 196 (identifier_list)
173 direct_declarator → direct_declarator '[' STATIC assignment_expression ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 173 (direct_declarator) TYPEDEF reduce using rule 173 (direct_declarator) EXTERN reduce using rule 173 (direct_declarator) STATIC reduce using rule 173 (direct_declarator) AUTO reduce using rule 173 (direct_declarator) REGISTER reduce using rule 173 (direct_declarator) INLINE reduce using rule 173 (direct_declarator) CONST reduce using rule 173 (direct_declarator) RESTRICT reduce using rule 173 (direct_declarator) VOLATILE reduce using rule 173 (direct_declarator) BOOL reduce using rule 173 (direct_declarator) CHAR reduce using rule 173 (direct_declarator) SHORT reduce using rule 173 (direct_declarator) INT reduce using rule 173 (direct_declarator) LONG reduce using rule 173 (direct_declarator) SIGNED reduce using rule 173 (direct_declarator) UNSIGNED reduce using rule 173 (direct_declarator) FLOAT reduce using rule 173 (direct_declarator) DOUBLE reduce using rule 173 (direct_declarator) VOID reduce using rule 173 (direct_declarator) COMPLEX reduce using rule 173 (direct_declarator) IMAGINARY reduce using rule 173 (direct_declarator) STRUCT reduce using rule 173 (direct_declarator) UNION reduce using rule 173 (direct_declarator) ENUM reduce using rule 173 (direct_declarator) ALIGNAS reduce using rule 173 (direct_declarator) ATOMIC reduce using rule 173 (direct_declarator) NORETURN reduce using rule 173 (direct_declarator) STATIC_ASSERT reduce using rule 173 (direct_declarator) THREAD_LOCAL reduce using rule 173 (direct_declarator) '(' reduce using rule 173 (direct_declarator) ')' reduce using rule 173 (direct_declarator) ',' reduce using rule 173 (direct_declarator) ':' reduce using rule 173 (direct_declarator) '[' reduce using rule 173 (direct_declarator) '{' reduce using rule 173 (direct_declarator) '=' reduce using rule 173 (direct_declarator) ';' reduce using rule 173 (direct_declarator)
172 direct_declarator → direct_declarator '[' STATIC type_qualifier_list assignment_expression • ']' ']' shift, and go to state 441
175 direct_declarator → direct_declarator '[' type_qualifier_list STATIC assignment_expression • ']' ']' shift, and go to state 442
174 direct_declarator → direct_declarator '[' type_qualifier_list '*' ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 174 (direct_declarator) TYPEDEF reduce using rule 174 (direct_declarator) EXTERN reduce using rule 174 (direct_declarator) STATIC reduce using rule 174 (direct_declarator) AUTO reduce using rule 174 (direct_declarator) REGISTER reduce using rule 174 (direct_declarator) INLINE reduce using rule 174 (direct_declarator) CONST reduce using rule 174 (direct_declarator) RESTRICT reduce using rule 174 (direct_declarator) VOLATILE reduce using rule 174 (direct_declarator) BOOL reduce using rule 174 (direct_declarator) CHAR reduce using rule 174 (direct_declarator) SHORT reduce using rule 174 (direct_declarator) INT reduce using rule 174 (direct_declarator) LONG reduce using rule 174 (direct_declarator) SIGNED reduce using rule 174 (direct_declarator) UNSIGNED reduce using rule 174 (direct_declarator) FLOAT reduce using rule 174 (direct_declarator) DOUBLE reduce using rule 174 (direct_declarator) VOID reduce using rule 174 (direct_declarator) COMPLEX reduce using rule 174 (direct_declarator) IMAGINARY reduce using rule 174 (direct_declarator) STRUCT reduce using rule 174 (direct_declarator) UNION reduce using rule 174 (direct_declarator) ENUM reduce using rule 174 (direct_declarator) ALIGNAS reduce using rule 174 (direct_declarator) ATOMIC reduce using rule 174 (direct_declarator) NORETURN reduce using rule 174 (direct_declarator) STATIC_ASSERT reduce using rule 174 (direct_declarator) THREAD_LOCAL reduce using rule 174 (direct_declarator) '(' reduce using rule 174 (direct_declarator) ')' reduce using rule 174 (direct_declarator) ',' reduce using rule 174 (direct_declarator) ':' reduce using rule 174 (direct_declarator) '[' reduce using rule 174 (direct_declarator) '{' reduce using rule 174 (direct_declarator) '=' reduce using rule 174 (direct_declarator) ';' reduce using rule 174 (direct_declarator)
176 direct_declarator → direct_declarator '[' type_qualifier_list assignment_expression ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 176 (direct_declarator) TYPEDEF reduce using rule 176 (direct_declarator) EXTERN reduce using rule 176 (direct_declarator) STATIC reduce using rule 176 (direct_declarator) AUTO reduce using rule 176 (direct_declarator) REGISTER reduce using rule 176 (direct_declarator) INLINE reduce using rule 176 (direct_declarator) CONST reduce using rule 176 (direct_declarator) RESTRICT reduce using rule 176 (direct_declarator) VOLATILE reduce using rule 176 (direct_declarator) BOOL reduce using rule 176 (direct_declarator) CHAR reduce using rule 176 (direct_declarator) SHORT reduce using rule 176 (direct_declarator) INT reduce using rule 176 (direct_declarator) LONG reduce using rule 176 (direct_declarator) SIGNED reduce using rule 176 (direct_declarator) UNSIGNED reduce using rule 176 (direct_declarator) FLOAT reduce using rule 176 (direct_declarator) DOUBLE reduce using rule 176 (direct_declarator) VOID reduce using rule 176 (direct_declarator) COMPLEX reduce using rule 176 (direct_declarator) IMAGINARY reduce using rule 176 (direct_declarator) STRUCT reduce using rule 176 (direct_declarator) UNION reduce using rule 176 (direct_declarator) ENUM reduce using rule 176 (direct_declarator) ALIGNAS reduce using rule 176 (direct_declarator) ATOMIC reduce using rule 176 (direct_declarator) NORETURN reduce using rule 176 (direct_declarator) STATIC_ASSERT reduce using rule 176 (direct_declarator) THREAD_LOCAL reduce using rule 176 (direct_declarator) '(' reduce using rule 176 (direct_declarator) ')' reduce using rule 176 (direct_declarator) ',' reduce using rule 176 (direct_declarator) ':' reduce using rule 176 (direct_declarator) '[' reduce using rule 176 (direct_declarator) '{' reduce using rule 176 (direct_declarator) '=' reduce using rule 176 (direct_declarator) ';' reduce using rule 176 (direct_declarator)
144 struct_declarator_list → struct_declarator_list ',' struct_declarator • [',', ';'] ',' reduce using rule 144 (struct_declarator_list) ';' reduce using rule 144 (struct_declarator_list)
146 struct_declarator → declarator ':' constant_expression • [',', ';'] ',' reduce using rule 146 (struct_declarator) ';' reduce using rule 146 (struct_declarator)
16 generic_association → DEFAULT • ':' assignment_expression ':' shift, and go to state 443
12 generic_selection → GENERIC '(' assignment_expression ',' generic_assoc_list • ')' 14 generic_assoc_list → generic_assoc_list • ',' generic_association ')' shift, and go to state 444 ',' shift, and go to state 445
13 generic_assoc_list → generic_association • [')', ','] ')' reduce using rule 13 (generic_assoc_list) ',' reduce using rule 13 (generic_assoc_list)
15 generic_association → type_name • ':' assignment_expression ':' shift, and go to state 446
25 postfix_expression → '(' type_name ')' '{' initializer_list • '}' 26 | '(' type_name ')' '{' initializer_list • ',' '}' 228 initializer_list → initializer_list • ',' designation initializer 229 | initializer_list • ',' initializer ',' shift, and go to state 447 '}' shift, and go to state 448
28 argument_expression_list → argument_expression_list ',' assignment_expression • [')', ','] ')' reduce using rule 28 (argument_expression_list) ',' reduce using rule 28 (argument_expression_list)
73 conditional_expression → logical_or_expression '?' expression ':' conditional_expression • [')', ',', ':', ']', '}', ';'] ')' reduce using rule 73 (conditional_expression) ',' reduce using rule 73 (conditional_expression) ':' reduce using rule 73 (conditional_expression) ']' reduce using rule 73 (conditional_expression) '}' reduce using rule 73 (conditional_expression) ';' reduce using rule 73 (conditional_expression)
206 direct_abstract_declarator → '[' STATIC assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 206 (direct_abstract_declarator) ')' reduce using rule 206 (direct_abstract_declarator) ',' reduce using rule 206 (direct_abstract_declarator) ':' reduce using rule 206 (direct_abstract_declarator) '[' reduce using rule 206 (direct_abstract_declarator)
205 direct_abstract_declarator → '[' STATIC type_qualifier_list assignment_expression • ']' ']' shift, and go to state 449
207 direct_abstract_declarator → '[' type_qualifier_list STATIC assignment_expression • ']' ']' shift, and go to state 450
208 direct_abstract_declarator → '[' type_qualifier_list assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 208 (direct_abstract_declarator) ')' reduce using rule 208 (direct_abstract_declarator) ',' reduce using rule 208 (direct_abstract_declarator) ':' reduce using rule 208 (direct_abstract_declarator) '[' reduce using rule 208 (direct_abstract_declarator)
222 direct_abstract_declarator → direct_abstract_declarator '(' parameter_type_list ')' • ['(', ')', ',', ':', '['] '(' reduce using rule 222 (direct_abstract_declarator) ')' reduce using rule 222 (direct_abstract_declarator) ',' reduce using rule 222 (direct_abstract_declarator) ':' reduce using rule 222 (direct_abstract_declarator) '[' reduce using rule 222 (direct_abstract_declarator)
214 direct_abstract_declarator → direct_abstract_declarator '[' STATIC assignment_expression • ']' ']' shift, and go to state 451
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 187 type_qualifier_list → type_qualifier_list • type_qualifier 213 direct_abstract_declarator → direct_abstract_declarator '[' STATIC type_qualifier_list • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 ALIGNOF shift, and go to state 83 ATOMIC shift, and go to state 119 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 452 type_qualifier go to state 193
212 direct_abstract_declarator → direct_abstract_declarator '[' '*' ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 212 (direct_abstract_declarator) ')' reduce using rule 212 (direct_abstract_declarator) ',' reduce using rule 212 (direct_abstract_declarator) ':' reduce using rule 212 (direct_abstract_declarator) '[' reduce using rule 212 (direct_abstract_declarator)
218 direct_abstract_declarator → direct_abstract_declarator '[' assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 218 (direct_abstract_declarator) ')' reduce using rule 218 (direct_abstract_declarator) ',' reduce using rule 218 (direct_abstract_declarator) ':' reduce using rule 218 (direct_abstract_declarator) '[' reduce using rule 218 (direct_abstract_declarator)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 216 direct_abstract_declarator → direct_abstract_declarator '[' type_qualifier_list STATIC • assignment_expression ']' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 453
217 direct_abstract_declarator → direct_abstract_declarator '[' type_qualifier_list ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 217 (direct_abstract_declarator) ')' reduce using rule 217 (direct_abstract_declarator) ',' reduce using rule 217 (direct_abstract_declarator) ':' reduce using rule 217 (direct_abstract_declarator) '[' reduce using rule 217 (direct_abstract_declarator)
215 direct_abstract_declarator → direct_abstract_declarator '[' type_qualifier_list assignment_expression • ']' ']' shift, and go to state 454
235 static_assert_declaration → STATIC_ASSERT '(' constant_expression ',' STRING_LITERAL ')' ';' • [$end, IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] $end reduce using rule 235 (static_assert_declaration) IDENTIFIER reduce using rule 235 (static_assert_declaration) I_CONSTANT reduce using rule 235 (static_assert_declaration) F_CONSTANT reduce using rule 235 (static_assert_declaration) STRING_LITERAL reduce using rule 235 (static_assert_declaration) FUNC_NAME reduce using rule 235 (static_assert_declaration) SIZEOF reduce using rule 235 (static_assert_declaration) INC_OP reduce using rule 235 (static_assert_declaration) DEC_OP reduce using rule 235 (static_assert_declaration) TYPEDEF_NAME reduce using rule 235 (static_assert_declaration) ENUMERATION_CONSTANT reduce using rule 235 (static_assert_declaration) TYPEDEF reduce using rule 235 (static_assert_declaration) EXTERN reduce using rule 235 (static_assert_declaration) STATIC reduce using rule 235 (static_assert_declaration) AUTO reduce using rule 235 (static_assert_declaration) REGISTER reduce using rule 235 (static_assert_declaration) INLINE reduce using rule 235 (static_assert_declaration) CONST reduce using rule 235 (static_assert_declaration) RESTRICT reduce using rule 235 (static_assert_declaration) VOLATILE reduce using rule 235 (static_assert_declaration) BOOL reduce using rule 235 (static_assert_declaration) CHAR reduce using rule 235 (static_assert_declaration) SHORT reduce using rule 235 (static_assert_declaration) INT reduce using rule 235 (static_assert_declaration) LONG reduce using rule 235 (static_assert_declaration) SIGNED reduce using rule 235 (static_assert_declaration) UNSIGNED reduce using rule 235 (static_assert_declaration) FLOAT reduce using rule 235 (static_assert_declaration) DOUBLE reduce using rule 235 (static_assert_declaration) VOID reduce using rule 235 (static_assert_declaration) COMPLEX reduce using rule 235 (static_assert_declaration) IMAGINARY reduce using rule 235 (static_assert_declaration) STRUCT reduce using rule 235 (static_assert_declaration) UNION reduce using rule 235 (static_assert_declaration) ENUM reduce using rule 235 (static_assert_declaration) CASE reduce using rule 235 (static_assert_declaration) DEFAULT reduce using rule 235 (static_assert_declaration) IF reduce using rule 235 (static_assert_declaration) SWITCH reduce using rule 235 (static_assert_declaration) WHILE reduce using rule 235 (static_assert_declaration) DO reduce using rule 235 (static_assert_declaration) FOR reduce using rule 235 (static_assert_declaration) GOTO reduce using rule 235 (static_assert_declaration) CONTINUE reduce using rule 235 (static_assert_declaration) BREAK reduce using rule 235 (static_assert_declaration) RETURN reduce using rule 235 (static_assert_declaration) ALIGNAS reduce using rule 235 (static_assert_declaration) ALIGNOF reduce using rule 235 (static_assert_declaration) ATOMIC reduce using rule 235 (static_assert_declaration) GENERIC reduce using rule 235 (static_assert_declaration) NORETURN reduce using rule 235 (static_assert_declaration) STATIC_ASSERT reduce using rule 235 (static_assert_declaration) THREAD_LOCAL reduce using rule 235 (static_assert_declaration) '(' reduce using rule 235 (static_assert_declaration) '{' reduce using rule 235 (static_assert_declaration) '}' reduce using rule 235 (static_assert_declaration) '&' reduce using rule 235 (static_assert_declaration) '*' reduce using rule 235 (static_assert_declaration) '+' reduce using rule 235 (static_assert_declaration) '-' reduce using rule 235 (static_assert_declaration) '~' reduce using rule 235 (static_assert_declaration) '!' reduce using rule 235 (static_assert_declaration) ';' reduce using rule 235 (static_assert_declaration)
243 labeled_statement → CASE constant_expression ':' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 243 (labeled_statement) I_CONSTANT reduce using rule 243 (labeled_statement) F_CONSTANT reduce using rule 243 (labeled_statement) STRING_LITERAL reduce using rule 243 (labeled_statement) FUNC_NAME reduce using rule 243 (labeled_statement) SIZEOF reduce using rule 243 (labeled_statement) INC_OP reduce using rule 243 (labeled_statement) DEC_OP reduce using rule 243 (labeled_statement) TYPEDEF_NAME reduce using rule 243 (labeled_statement) ENUMERATION_CONSTANT reduce using rule 243 (labeled_statement) TYPEDEF reduce using rule 243 (labeled_statement) EXTERN reduce using rule 243 (labeled_statement) STATIC reduce using rule 243 (labeled_statement) AUTO reduce using rule 243 (labeled_statement) REGISTER reduce using rule 243 (labeled_statement) INLINE reduce using rule 243 (labeled_statement) CONST reduce using rule 243 (labeled_statement) RESTRICT reduce using rule 243 (labeled_statement) VOLATILE reduce using rule 243 (labeled_statement) BOOL reduce using rule 243 (labeled_statement) CHAR reduce using rule 243 (labeled_statement) SHORT reduce using rule 243 (labeled_statement) INT reduce using rule 243 (labeled_statement) LONG reduce using rule 243 (labeled_statement) SIGNED reduce using rule 243 (labeled_statement) UNSIGNED reduce using rule 243 (labeled_statement) FLOAT reduce using rule 243 (labeled_statement) DOUBLE reduce using rule 243 (labeled_statement) VOID reduce using rule 243 (labeled_statement) COMPLEX reduce using rule 243 (labeled_statement) IMAGINARY reduce using rule 243 (labeled_statement) STRUCT reduce using rule 243 (labeled_statement) UNION reduce using rule 243 (labeled_statement) ENUM reduce using rule 243 (labeled_statement) CASE reduce using rule 243 (labeled_statement) DEFAULT reduce using rule 243 (labeled_statement) IF reduce using rule 243 (labeled_statement) ELSE reduce using rule 243 (labeled_statement) SWITCH reduce using rule 243 (labeled_statement) WHILE reduce using rule 243 (labeled_statement) DO reduce using rule 243 (labeled_statement) FOR reduce using rule 243 (labeled_statement) GOTO reduce using rule 243 (labeled_statement) CONTINUE reduce using rule 243 (labeled_statement) BREAK reduce using rule 243 (labeled_statement) RETURN reduce using rule 243 (labeled_statement) ALIGNAS reduce using rule 243 (labeled_statement) ALIGNOF reduce using rule 243 (labeled_statement) ATOMIC reduce using rule 243 (labeled_statement) GENERIC reduce using rule 243 (labeled_statement) NORETURN reduce using rule 243 (labeled_statement) STATIC_ASSERT reduce using rule 243 (labeled_statement) THREAD_LOCAL reduce using rule 243 (labeled_statement) '(' reduce using rule 243 (labeled_statement) '{' reduce using rule 243 (labeled_statement) '}' reduce using rule 243 (labeled_statement) '&' reduce using rule 243 (labeled_statement) '*' reduce using rule 243 (labeled_statement) '+' reduce using rule 243 (labeled_statement) '-' reduce using rule 243 (labeled_statement) '~' reduce using rule 243 (labeled_statement) '!' reduce using rule 243 (labeled_statement) ';' reduce using rule 243 (labeled_statement)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 253 | IF '(' expression ')' • statement ELSE statement 254 | • IF '(' expression ')' statement 254 | IF '(' expression ')' • statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 455 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 255 | SWITCH '(' expression ')' • statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 456 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 256 | WHILE '(' expression ')' • statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 457 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 257 iteration_statement → DO statement WHILE '(' • expression ')' ';' IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 458
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 260 iteration_statement → FOR '(' declaration expression_statement • ')' statement 261 | FOR '(' declaration expression_statement • expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ')' shift, and go to state 459 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 460
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 258 iteration_statement → FOR '(' expression_statement expression_statement • ')' statement 259 | FOR '(' expression_statement expression_statement • expression ')' statement IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 ')' shift, and go to state 461 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 462
233 designator → '[' constant_expression ']' • ['[', '.', '='] '[' reduce using rule 233 (designator) '.' reduce using rule 233 (designator) '=' reduce using rule 233 (designator)
224 initializer → '{' initializer_list ',' '}' • [',', '}', ';'] ',' reduce using rule 224 (initializer) '}' reduce using rule 224 (initializer) ';' reduce using rule 224 (initializer)
229 initializer_list → initializer_list ',' initializer • [',', '}'] ',' reduce using rule 229 (initializer_list) '}' reduce using rule 229 (initializer_list)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 223 initializer → • '{' initializer_list '}' 224 | • '{' initializer_list ',' '}' 225 | • assignment_expression 228 initializer_list → initializer_list ',' designation • initializer IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 222 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 223 initializer go to state 463
172 direct_declarator → direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 172 (direct_declarator) TYPEDEF reduce using rule 172 (direct_declarator) EXTERN reduce using rule 172 (direct_declarator) STATIC reduce using rule 172 (direct_declarator) AUTO reduce using rule 172 (direct_declarator) REGISTER reduce using rule 172 (direct_declarator) INLINE reduce using rule 172 (direct_declarator) CONST reduce using rule 172 (direct_declarator) RESTRICT reduce using rule 172 (direct_declarator) VOLATILE reduce using rule 172 (direct_declarator) BOOL reduce using rule 172 (direct_declarator) CHAR reduce using rule 172 (direct_declarator) SHORT reduce using rule 172 (direct_declarator) INT reduce using rule 172 (direct_declarator) LONG reduce using rule 172 (direct_declarator) SIGNED reduce using rule 172 (direct_declarator) UNSIGNED reduce using rule 172 (direct_declarator) FLOAT reduce using rule 172 (direct_declarator) DOUBLE reduce using rule 172 (direct_declarator) VOID reduce using rule 172 (direct_declarator) COMPLEX reduce using rule 172 (direct_declarator) IMAGINARY reduce using rule 172 (direct_declarator) STRUCT reduce using rule 172 (direct_declarator) UNION reduce using rule 172 (direct_declarator) ENUM reduce using rule 172 (direct_declarator) ALIGNAS reduce using rule 172 (direct_declarator) ATOMIC reduce using rule 172 (direct_declarator) NORETURN reduce using rule 172 (direct_declarator) STATIC_ASSERT reduce using rule 172 (direct_declarator) THREAD_LOCAL reduce using rule 172 (direct_declarator) '(' reduce using rule 172 (direct_declarator) ')' reduce using rule 172 (direct_declarator) ',' reduce using rule 172 (direct_declarator) ':' reduce using rule 172 (direct_declarator) '[' reduce using rule 172 (direct_declarator) '{' reduce using rule 172 (direct_declarator) '=' reduce using rule 172 (direct_declarator) ';' reduce using rule 172 (direct_declarator)
175 direct_declarator → direct_declarator '[' type_qualifier_list STATIC assignment_expression ']' • [TYPEDEF_NAME, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, ALIGNAS, ATOMIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', ')', ',', ':', '[', '{', '=', ';'] TYPEDEF_NAME reduce using rule 175 (direct_declarator) TYPEDEF reduce using rule 175 (direct_declarator) EXTERN reduce using rule 175 (direct_declarator) STATIC reduce using rule 175 (direct_declarator) AUTO reduce using rule 175 (direct_declarator) REGISTER reduce using rule 175 (direct_declarator) INLINE reduce using rule 175 (direct_declarator) CONST reduce using rule 175 (direct_declarator) RESTRICT reduce using rule 175 (direct_declarator) VOLATILE reduce using rule 175 (direct_declarator) BOOL reduce using rule 175 (direct_declarator) CHAR reduce using rule 175 (direct_declarator) SHORT reduce using rule 175 (direct_declarator) INT reduce using rule 175 (direct_declarator) LONG reduce using rule 175 (direct_declarator) SIGNED reduce using rule 175 (direct_declarator) UNSIGNED reduce using rule 175 (direct_declarator) FLOAT reduce using rule 175 (direct_declarator) DOUBLE reduce using rule 175 (direct_declarator) VOID reduce using rule 175 (direct_declarator) COMPLEX reduce using rule 175 (direct_declarator) IMAGINARY reduce using rule 175 (direct_declarator) STRUCT reduce using rule 175 (direct_declarator) UNION reduce using rule 175 (direct_declarator) ENUM reduce using rule 175 (direct_declarator) ALIGNAS reduce using rule 175 (direct_declarator) ATOMIC reduce using rule 175 (direct_declarator) NORETURN reduce using rule 175 (direct_declarator) STATIC_ASSERT reduce using rule 175 (direct_declarator) THREAD_LOCAL reduce using rule 175 (direct_declarator) '(' reduce using rule 175 (direct_declarator) ')' reduce using rule 175 (direct_declarator) ',' reduce using rule 175 (direct_declarator) ':' reduce using rule 175 (direct_declarator) '[' reduce using rule 175 (direct_declarator) '{' reduce using rule 175 (direct_declarator) '=' reduce using rule 175 (direct_declarator) ';' reduce using rule 175 (direct_declarator)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 16 generic_association → DEFAULT ':' • assignment_expression 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 464
12 generic_selection → GENERIC '(' assignment_expression ',' generic_assoc_list ')' • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 12 (generic_selection) INC_OP reduce using rule 12 (generic_selection) DEC_OP reduce using rule 12 (generic_selection) LEFT_OP reduce using rule 12 (generic_selection) RIGHT_OP reduce using rule 12 (generic_selection) LE_OP reduce using rule 12 (generic_selection) GE_OP reduce using rule 12 (generic_selection) EQ_OP reduce using rule 12 (generic_selection) NE_OP reduce using rule 12 (generic_selection) AND_OP reduce using rule 12 (generic_selection) OR_OP reduce using rule 12 (generic_selection) MUL_ASSIGN reduce using rule 12 (generic_selection) DIV_ASSIGN reduce using rule 12 (generic_selection) MOD_ASSIGN reduce using rule 12 (generic_selection) ADD_ASSIGN reduce using rule 12 (generic_selection) SUB_ASSIGN reduce using rule 12 (generic_selection) LEFT_ASSIGN reduce using rule 12 (generic_selection) RIGHT_ASSIGN reduce using rule 12 (generic_selection) AND_ASSIGN reduce using rule 12 (generic_selection) XOR_ASSIGN reduce using rule 12 (generic_selection) OR_ASSIGN reduce using rule 12 (generic_selection) '(' reduce using rule 12 (generic_selection) ')' reduce using rule 12 (generic_selection) ',' reduce using rule 12 (generic_selection) ':' reduce using rule 12 (generic_selection) '[' reduce using rule 12 (generic_selection) ']' reduce using rule 12 (generic_selection) '.' reduce using rule 12 (generic_selection) '}' reduce using rule 12 (generic_selection) '&' reduce using rule 12 (generic_selection) '*' reduce using rule 12 (generic_selection) '+' reduce using rule 12 (generic_selection) '-' reduce using rule 12 (generic_selection) '/' reduce using rule 12 (generic_selection) '%' reduce using rule 12 (generic_selection) '<' reduce using rule 12 (generic_selection) '>' reduce using rule 12 (generic_selection) '^' reduce using rule 12 (generic_selection) '|' reduce using rule 12 (generic_selection) '?' reduce using rule 12 (generic_selection) '=' reduce using rule 12 (generic_selection) ';' reduce using rule 12 (generic_selection)
14 generic_assoc_list → generic_assoc_list ',' • generic_association 15 generic_association → • type_name ':' assignment_expression 16 | • DEFAULT ':' assignment_expression 113 type_specifier → • VOID 114 | • CHAR 115 | • SHORT 116 | • INT 117 | • LONG 118 | • FLOAT 119 | • DOUBLE 120 | • SIGNED 121 | • UNSIGNED 122 | • BOOL 123 | • COMPLEX 124 | • IMAGINARY 125 | • atomic_type_specifier 126 | • struct_or_union_specifier 127 | • enum_specifier 128 | • TYPEDEF_NAME 129 struct_or_union_specifier → • struct_or_union '{' struct_declaration_list '}' 130 | • struct_or_union IDENTIFIER '{' struct_declaration_list '}' 131 | • struct_or_union IDENTIFIER 132 struct_or_union → • STRUCT 133 | • UNION 139 specifier_qualifier_list → • type_specifier specifier_qualifier_list 140 | • type_specifier 141 | • type_qualifier specifier_qualifier_list 142 | • type_qualifier 148 enum_specifier → • ENUM '{' enumerator_list '}' 149 | • ENUM '{' enumerator_list ',' '}' 150 | • ENUM IDENTIFIER '{' enumerator_list '}' 151 | • ENUM IDENTIFIER '{' enumerator_list ',' '}' 152 | • ENUM IDENTIFIER 157 atomic_type_specifier → • ATOMIC '(' type_name ')' 158 type_qualifier → • CONST 159 | • RESTRICT 160 | • VOLATILE 161 | • ATOMIC 197 type_name → • specifier_qualifier_list abstract_declarator 198 | • specifier_qualifier_list TYPEDEF_NAME shift, and go to state 1 CONST shift, and go to state 8 RESTRICT shift, and go to state 9 VOLATILE shift, and go to state 10 BOOL shift, and go to state 11 CHAR shift, and go to state 12 SHORT shift, and go to state 13 INT shift, and go to state 14 LONG shift, and go to state 15 SIGNED shift, and go to state 16 UNSIGNED shift, and go to state 17 FLOAT shift, and go to state 18 DOUBLE shift, and go to state 19 VOID shift, and go to state 20 COMPLEX shift, and go to state 21 IMAGINARY shift, and go to state 22 STRUCT shift, and go to state 23 UNION shift, and go to state 24 ENUM shift, and go to state 25 DEFAULT shift, and go to state 410 ATOMIC shift, and go to state 27 generic_association go to state 465 type_specifier go to state 112 struct_or_union_specifier go to state 35 struct_or_union go to state 36 specifier_qualifier_list go to state 113 enum_specifier go to state 37 atomic_type_specifier go to state 38 type_qualifier go to state 114 type_name go to state 413
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 15 generic_association → type_name ':' • assignment_expression 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 466
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 26 | '(' type_name ')' '{' initializer_list ',' • '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 223 initializer → • '{' initializer_list '}' 224 | • '{' initializer_list ',' '}' 225 | • assignment_expression 228 initializer_list → initializer_list ',' • designation initializer 229 | initializer_list ',' • initializer 230 designation → • designator_list '=' 231 designator_list → • designator 232 | • designator_list designator 233 designator → • '[' constant_expression ']' 234 | • '.' IDENTIFIER IDENTIFIER shift, and go to state 74 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '[' shift, and go to state 324 '.' shift, and go to state 325 '{' shift, and go to state 222 '}' shift, and go to state 467 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 223 initializer go to state 439 designation go to state 440 designator_list go to state 329 designator go to state 330
25 postfix_expression → '(' type_name ')' '{' initializer_list '}' • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 25 (postfix_expression) INC_OP reduce using rule 25 (postfix_expression) DEC_OP reduce using rule 25 (postfix_expression) LEFT_OP reduce using rule 25 (postfix_expression) RIGHT_OP reduce using rule 25 (postfix_expression) LE_OP reduce using rule 25 (postfix_expression) GE_OP reduce using rule 25 (postfix_expression) EQ_OP reduce using rule 25 (postfix_expression) NE_OP reduce using rule 25 (postfix_expression) AND_OP reduce using rule 25 (postfix_expression) OR_OP reduce using rule 25 (postfix_expression) MUL_ASSIGN reduce using rule 25 (postfix_expression) DIV_ASSIGN reduce using rule 25 (postfix_expression) MOD_ASSIGN reduce using rule 25 (postfix_expression) ADD_ASSIGN reduce using rule 25 (postfix_expression) SUB_ASSIGN reduce using rule 25 (postfix_expression) LEFT_ASSIGN reduce using rule 25 (postfix_expression) RIGHT_ASSIGN reduce using rule 25 (postfix_expression) AND_ASSIGN reduce using rule 25 (postfix_expression) XOR_ASSIGN reduce using rule 25 (postfix_expression) OR_ASSIGN reduce using rule 25 (postfix_expression) '(' reduce using rule 25 (postfix_expression) ')' reduce using rule 25 (postfix_expression) ',' reduce using rule 25 (postfix_expression) ':' reduce using rule 25 (postfix_expression) '[' reduce using rule 25 (postfix_expression) ']' reduce using rule 25 (postfix_expression) '.' reduce using rule 25 (postfix_expression) '}' reduce using rule 25 (postfix_expression) '&' reduce using rule 25 (postfix_expression) '*' reduce using rule 25 (postfix_expression) '+' reduce using rule 25 (postfix_expression) '-' reduce using rule 25 (postfix_expression) '/' reduce using rule 25 (postfix_expression) '%' reduce using rule 25 (postfix_expression) '<' reduce using rule 25 (postfix_expression) '>' reduce using rule 25 (postfix_expression) '^' reduce using rule 25 (postfix_expression) '|' reduce using rule 25 (postfix_expression) '?' reduce using rule 25 (postfix_expression) '=' reduce using rule 25 (postfix_expression) ';' reduce using rule 25 (postfix_expression)
205 direct_abstract_declarator → '[' STATIC type_qualifier_list assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 205 (direct_abstract_declarator) ')' reduce using rule 205 (direct_abstract_declarator) ',' reduce using rule 205 (direct_abstract_declarator) ':' reduce using rule 205 (direct_abstract_declarator) '[' reduce using rule 205 (direct_abstract_declarator)
207 direct_abstract_declarator → '[' type_qualifier_list STATIC assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 207 (direct_abstract_declarator) ')' reduce using rule 207 (direct_abstract_declarator) ',' reduce using rule 207 (direct_abstract_declarator) ':' reduce using rule 207 (direct_abstract_declarator) '[' reduce using rule 207 (direct_abstract_declarator)
214 direct_abstract_declarator → direct_abstract_declarator '[' STATIC assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 214 (direct_abstract_declarator) ')' reduce using rule 214 (direct_abstract_declarator) ',' reduce using rule 214 (direct_abstract_declarator) ':' reduce using rule 214 (direct_abstract_declarator) '[' reduce using rule 214 (direct_abstract_declarator)
213 direct_abstract_declarator → direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression • ']' ']' shift, and go to state 468
216 direct_abstract_declarator → direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression • ']' ']' shift, and go to state 469
215 direct_abstract_declarator → direct_abstract_declarator '[' type_qualifier_list assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 215 (direct_abstract_declarator) ')' reduce using rule 215 (direct_abstract_declarator) ',' reduce using rule 215 (direct_abstract_declarator) ':' reduce using rule 215 (direct_abstract_declarator) '[' reduce using rule 215 (direct_abstract_declarator)
253 selection_statement → IF '(' expression ')' statement • ELSE statement 254 | IF '(' expression ')' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] ELSE shift, and go to state 470 IDENTIFIER reduce using rule 254 (selection_statement) I_CONSTANT reduce using rule 254 (selection_statement) F_CONSTANT reduce using rule 254 (selection_statement) STRING_LITERAL reduce using rule 254 (selection_statement) FUNC_NAME reduce using rule 254 (selection_statement) SIZEOF reduce using rule 254 (selection_statement) INC_OP reduce using rule 254 (selection_statement) DEC_OP reduce using rule 254 (selection_statement) TYPEDEF_NAME reduce using rule 254 (selection_statement) ENUMERATION_CONSTANT reduce using rule 254 (selection_statement) TYPEDEF reduce using rule 254 (selection_statement) EXTERN reduce using rule 254 (selection_statement) STATIC reduce using rule 254 (selection_statement) AUTO reduce using rule 254 (selection_statement) REGISTER reduce using rule 254 (selection_statement) INLINE reduce using rule 254 (selection_statement) CONST reduce using rule 254 (selection_statement) RESTRICT reduce using rule 254 (selection_statement) VOLATILE reduce using rule 254 (selection_statement) BOOL reduce using rule 254 (selection_statement) CHAR reduce using rule 254 (selection_statement) SHORT reduce using rule 254 (selection_statement) INT reduce using rule 254 (selection_statement) LONG reduce using rule 254 (selection_statement) SIGNED reduce using rule 254 (selection_statement) UNSIGNED reduce using rule 254 (selection_statement) FLOAT reduce using rule 254 (selection_statement) DOUBLE reduce using rule 254 (selection_statement) VOID reduce using rule 254 (selection_statement) COMPLEX reduce using rule 254 (selection_statement) IMAGINARY reduce using rule 254 (selection_statement) STRUCT reduce using rule 254 (selection_statement) UNION reduce using rule 254 (selection_statement) ENUM reduce using rule 254 (selection_statement) CASE reduce using rule 254 (selection_statement) DEFAULT reduce using rule 254 (selection_statement) IF reduce using rule 254 (selection_statement) ELSE [reduce using rule 254 (selection_statement)] SWITCH reduce using rule 254 (selection_statement) WHILE reduce using rule 254 (selection_statement) DO reduce using rule 254 (selection_statement) FOR reduce using rule 254 (selection_statement) GOTO reduce using rule 254 (selection_statement) CONTINUE reduce using rule 254 (selection_statement) BREAK reduce using rule 254 (selection_statement) RETURN reduce using rule 254 (selection_statement) ALIGNAS reduce using rule 254 (selection_statement) ALIGNOF reduce using rule 254 (selection_statement) ATOMIC reduce using rule 254 (selection_statement) GENERIC reduce using rule 254 (selection_statement) NORETURN reduce using rule 254 (selection_statement) STATIC_ASSERT reduce using rule 254 (selection_statement) THREAD_LOCAL reduce using rule 254 (selection_statement) '(' reduce using rule 254 (selection_statement) '{' reduce using rule 254 (selection_statement) '}' reduce using rule 254 (selection_statement) '&' reduce using rule 254 (selection_statement) '*' reduce using rule 254 (selection_statement) '+' reduce using rule 254 (selection_statement) '-' reduce using rule 254 (selection_statement) '~' reduce using rule 254 (selection_statement) '!' reduce using rule 254 (selection_statement) ';' reduce using rule 254 (selection_statement)
255 selection_statement → SWITCH '(' expression ')' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 255 (selection_statement) I_CONSTANT reduce using rule 255 (selection_statement) F_CONSTANT reduce using rule 255 (selection_statement) STRING_LITERAL reduce using rule 255 (selection_statement) FUNC_NAME reduce using rule 255 (selection_statement) SIZEOF reduce using rule 255 (selection_statement) INC_OP reduce using rule 255 (selection_statement) DEC_OP reduce using rule 255 (selection_statement) TYPEDEF_NAME reduce using rule 255 (selection_statement) ENUMERATION_CONSTANT reduce using rule 255 (selection_statement) TYPEDEF reduce using rule 255 (selection_statement) EXTERN reduce using rule 255 (selection_statement) STATIC reduce using rule 255 (selection_statement) AUTO reduce using rule 255 (selection_statement) REGISTER reduce using rule 255 (selection_statement) INLINE reduce using rule 255 (selection_statement) CONST reduce using rule 255 (selection_statement) RESTRICT reduce using rule 255 (selection_statement) VOLATILE reduce using rule 255 (selection_statement) BOOL reduce using rule 255 (selection_statement) CHAR reduce using rule 255 (selection_statement) SHORT reduce using rule 255 (selection_statement) INT reduce using rule 255 (selection_statement) LONG reduce using rule 255 (selection_statement) SIGNED reduce using rule 255 (selection_statement) UNSIGNED reduce using rule 255 (selection_statement) FLOAT reduce using rule 255 (selection_statement) DOUBLE reduce using rule 255 (selection_statement) VOID reduce using rule 255 (selection_statement) COMPLEX reduce using rule 255 (selection_statement) IMAGINARY reduce using rule 255 (selection_statement) STRUCT reduce using rule 255 (selection_statement) UNION reduce using rule 255 (selection_statement) ENUM reduce using rule 255 (selection_statement) CASE reduce using rule 255 (selection_statement) DEFAULT reduce using rule 255 (selection_statement) IF reduce using rule 255 (selection_statement) ELSE reduce using rule 255 (selection_statement) SWITCH reduce using rule 255 (selection_statement) WHILE reduce using rule 255 (selection_statement) DO reduce using rule 255 (selection_statement) FOR reduce using rule 255 (selection_statement) GOTO reduce using rule 255 (selection_statement) CONTINUE reduce using rule 255 (selection_statement) BREAK reduce using rule 255 (selection_statement) RETURN reduce using rule 255 (selection_statement) ALIGNAS reduce using rule 255 (selection_statement) ALIGNOF reduce using rule 255 (selection_statement) ATOMIC reduce using rule 255 (selection_statement) GENERIC reduce using rule 255 (selection_statement) NORETURN reduce using rule 255 (selection_statement) STATIC_ASSERT reduce using rule 255 (selection_statement) THREAD_LOCAL reduce using rule 255 (selection_statement) '(' reduce using rule 255 (selection_statement) '{' reduce using rule 255 (selection_statement) '}' reduce using rule 255 (selection_statement) '&' reduce using rule 255 (selection_statement) '*' reduce using rule 255 (selection_statement) '+' reduce using rule 255 (selection_statement) '-' reduce using rule 255 (selection_statement) '~' reduce using rule 255 (selection_statement) '!' reduce using rule 255 (selection_statement) ';' reduce using rule 255 (selection_statement)
256 iteration_statement → WHILE '(' expression ')' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 256 (iteration_statement) I_CONSTANT reduce using rule 256 (iteration_statement) F_CONSTANT reduce using rule 256 (iteration_statement) STRING_LITERAL reduce using rule 256 (iteration_statement) FUNC_NAME reduce using rule 256 (iteration_statement) SIZEOF reduce using rule 256 (iteration_statement) INC_OP reduce using rule 256 (iteration_statement) DEC_OP reduce using rule 256 (iteration_statement) TYPEDEF_NAME reduce using rule 256 (iteration_statement) ENUMERATION_CONSTANT reduce using rule 256 (iteration_statement) TYPEDEF reduce using rule 256 (iteration_statement) EXTERN reduce using rule 256 (iteration_statement) STATIC reduce using rule 256 (iteration_statement) AUTO reduce using rule 256 (iteration_statement) REGISTER reduce using rule 256 (iteration_statement) INLINE reduce using rule 256 (iteration_statement) CONST reduce using rule 256 (iteration_statement) RESTRICT reduce using rule 256 (iteration_statement) VOLATILE reduce using rule 256 (iteration_statement) BOOL reduce using rule 256 (iteration_statement) CHAR reduce using rule 256 (iteration_statement) SHORT reduce using rule 256 (iteration_statement) INT reduce using rule 256 (iteration_statement) LONG reduce using rule 256 (iteration_statement) SIGNED reduce using rule 256 (iteration_statement) UNSIGNED reduce using rule 256 (iteration_statement) FLOAT reduce using rule 256 (iteration_statement) DOUBLE reduce using rule 256 (iteration_statement) VOID reduce using rule 256 (iteration_statement) COMPLEX reduce using rule 256 (iteration_statement) IMAGINARY reduce using rule 256 (iteration_statement) STRUCT reduce using rule 256 (iteration_statement) UNION reduce using rule 256 (iteration_statement) ENUM reduce using rule 256 (iteration_statement) CASE reduce using rule 256 (iteration_statement) DEFAULT reduce using rule 256 (iteration_statement) IF reduce using rule 256 (iteration_statement) ELSE reduce using rule 256 (iteration_statement) SWITCH reduce using rule 256 (iteration_statement) WHILE reduce using rule 256 (iteration_statement) DO reduce using rule 256 (iteration_statement) FOR reduce using rule 256 (iteration_statement) GOTO reduce using rule 256 (iteration_statement) CONTINUE reduce using rule 256 (iteration_statement) BREAK reduce using rule 256 (iteration_statement) RETURN reduce using rule 256 (iteration_statement) ALIGNAS reduce using rule 256 (iteration_statement) ALIGNOF reduce using rule 256 (iteration_statement) ATOMIC reduce using rule 256 (iteration_statement) GENERIC reduce using rule 256 (iteration_statement) NORETURN reduce using rule 256 (iteration_statement) STATIC_ASSERT reduce using rule 256 (iteration_statement) THREAD_LOCAL reduce using rule 256 (iteration_statement) '(' reduce using rule 256 (iteration_statement) '{' reduce using rule 256 (iteration_statement) '}' reduce using rule 256 (iteration_statement) '&' reduce using rule 256 (iteration_statement) '*' reduce using rule 256 (iteration_statement) '+' reduce using rule 256 (iteration_statement) '-' reduce using rule 256 (iteration_statement) '~' reduce using rule 256 (iteration_statement) '!' reduce using rule 256 (iteration_statement) ';' reduce using rule 256 (iteration_statement)
88 expression → expression • ',' assignment_expression 257 iteration_statement → DO statement WHILE '(' expression • ')' ';' ')' shift, and go to state 471 ',' shift, and go to state 269
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 260 | FOR '(' declaration expression_statement ')' • statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 472 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
88 expression → expression • ',' assignment_expression 261 iteration_statement → FOR '(' declaration expression_statement expression • ')' statement ')' shift, and go to state 473 ',' shift, and go to state 269
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 258 | FOR '(' expression_statement expression_statement ')' • statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 474 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
88 expression → expression • ',' assignment_expression 259 iteration_statement → FOR '(' expression_statement expression_statement expression • ')' statement ')' shift, and go to state 475 ',' shift, and go to state 269
228 initializer_list → initializer_list ',' designation initializer • [',', '}'] ',' reduce using rule 228 (initializer_list) '}' reduce using rule 228 (initializer_list)
16 generic_association → DEFAULT ':' assignment_expression • [')', ','] ')' reduce using rule 16 (generic_association) ',' reduce using rule 16 (generic_association)
14 generic_assoc_list → generic_assoc_list ',' generic_association • [')', ','] ')' reduce using rule 14 (generic_assoc_list) ',' reduce using rule 14 (generic_assoc_list)
15 generic_association → type_name ':' assignment_expression • [')', ','] ')' reduce using rule 15 (generic_association) ',' reduce using rule 15 (generic_association)
26 postfix_expression → '(' type_name ')' '{' initializer_list ',' '}' • [PTR_OP, INC_OP, DEC_OP, LEFT_OP, RIGHT_OP, LE_OP, GE_OP, EQ_OP, NE_OP, AND_OP, OR_OP, MUL_ASSIGN, DIV_ASSIGN, MOD_ASSIGN, ADD_ASSIGN, SUB_ASSIGN, LEFT_ASSIGN, RIGHT_ASSIGN, AND_ASSIGN, XOR_ASSIGN, OR_ASSIGN, '(', ')', ',', ':', '[', ']', '.', '}', '&', '*', '+', '-', '/', '%', '<', '>', '^', '|', '?', '=', ';'] PTR_OP reduce using rule 26 (postfix_expression) INC_OP reduce using rule 26 (postfix_expression) DEC_OP reduce using rule 26 (postfix_expression) LEFT_OP reduce using rule 26 (postfix_expression) RIGHT_OP reduce using rule 26 (postfix_expression) LE_OP reduce using rule 26 (postfix_expression) GE_OP reduce using rule 26 (postfix_expression) EQ_OP reduce using rule 26 (postfix_expression) NE_OP reduce using rule 26 (postfix_expression) AND_OP reduce using rule 26 (postfix_expression) OR_OP reduce using rule 26 (postfix_expression) MUL_ASSIGN reduce using rule 26 (postfix_expression) DIV_ASSIGN reduce using rule 26 (postfix_expression) MOD_ASSIGN reduce using rule 26 (postfix_expression) ADD_ASSIGN reduce using rule 26 (postfix_expression) SUB_ASSIGN reduce using rule 26 (postfix_expression) LEFT_ASSIGN reduce using rule 26 (postfix_expression) RIGHT_ASSIGN reduce using rule 26 (postfix_expression) AND_ASSIGN reduce using rule 26 (postfix_expression) XOR_ASSIGN reduce using rule 26 (postfix_expression) OR_ASSIGN reduce using rule 26 (postfix_expression) '(' reduce using rule 26 (postfix_expression) ')' reduce using rule 26 (postfix_expression) ',' reduce using rule 26 (postfix_expression) ':' reduce using rule 26 (postfix_expression) '[' reduce using rule 26 (postfix_expression) ']' reduce using rule 26 (postfix_expression) '.' reduce using rule 26 (postfix_expression) '}' reduce using rule 26 (postfix_expression) '&' reduce using rule 26 (postfix_expression) '*' reduce using rule 26 (postfix_expression) '+' reduce using rule 26 (postfix_expression) '-' reduce using rule 26 (postfix_expression) '/' reduce using rule 26 (postfix_expression) '%' reduce using rule 26 (postfix_expression) '<' reduce using rule 26 (postfix_expression) '>' reduce using rule 26 (postfix_expression) '^' reduce using rule 26 (postfix_expression) '|' reduce using rule 26 (postfix_expression) '?' reduce using rule 26 (postfix_expression) '=' reduce using rule 26 (postfix_expression) ';' reduce using rule 26 (postfix_expression)
213 direct_abstract_declarator → direct_abstract_declarator '[' STATIC type_qualifier_list assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 213 (direct_abstract_declarator) ')' reduce using rule 213 (direct_abstract_declarator) ',' reduce using rule 213 (direct_abstract_declarator) ':' reduce using rule 213 (direct_abstract_declarator) '[' reduce using rule 213 (direct_abstract_declarator)
216 direct_abstract_declarator → direct_abstract_declarator '[' type_qualifier_list STATIC assignment_expression ']' • ['(', ')', ',', ':', '['] '(' reduce using rule 216 (direct_abstract_declarator) ')' reduce using rule 216 (direct_abstract_declarator) ',' reduce using rule 216 (direct_abstract_declarator) ':' reduce using rule 216 (direct_abstract_declarator) '[' reduce using rule 216 (direct_abstract_declarator)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 253 | IF '(' expression ')' statement ELSE • statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 476 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
257 iteration_statement → DO statement WHILE '(' expression ')' • ';' ';' shift, and go to state 477
260 iteration_statement → FOR '(' declaration expression_statement ')' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 260 (iteration_statement) I_CONSTANT reduce using rule 260 (iteration_statement) F_CONSTANT reduce using rule 260 (iteration_statement) STRING_LITERAL reduce using rule 260 (iteration_statement) FUNC_NAME reduce using rule 260 (iteration_statement) SIZEOF reduce using rule 260 (iteration_statement) INC_OP reduce using rule 260 (iteration_statement) DEC_OP reduce using rule 260 (iteration_statement) TYPEDEF_NAME reduce using rule 260 (iteration_statement) ENUMERATION_CONSTANT reduce using rule 260 (iteration_statement) TYPEDEF reduce using rule 260 (iteration_statement) EXTERN reduce using rule 260 (iteration_statement) STATIC reduce using rule 260 (iteration_statement) AUTO reduce using rule 260 (iteration_statement) REGISTER reduce using rule 260 (iteration_statement) INLINE reduce using rule 260 (iteration_statement) CONST reduce using rule 260 (iteration_statement) RESTRICT reduce using rule 260 (iteration_statement) VOLATILE reduce using rule 260 (iteration_statement) BOOL reduce using rule 260 (iteration_statement) CHAR reduce using rule 260 (iteration_statement) SHORT reduce using rule 260 (iteration_statement) INT reduce using rule 260 (iteration_statement) LONG reduce using rule 260 (iteration_statement) SIGNED reduce using rule 260 (iteration_statement) UNSIGNED reduce using rule 260 (iteration_statement) FLOAT reduce using rule 260 (iteration_statement) DOUBLE reduce using rule 260 (iteration_statement) VOID reduce using rule 260 (iteration_statement) COMPLEX reduce using rule 260 (iteration_statement) IMAGINARY reduce using rule 260 (iteration_statement) STRUCT reduce using rule 260 (iteration_statement) UNION reduce using rule 260 (iteration_statement) ENUM reduce using rule 260 (iteration_statement) CASE reduce using rule 260 (iteration_statement) DEFAULT reduce using rule 260 (iteration_statement) IF reduce using rule 260 (iteration_statement) ELSE reduce using rule 260 (iteration_statement) SWITCH reduce using rule 260 (iteration_statement) WHILE reduce using rule 260 (iteration_statement) DO reduce using rule 260 (iteration_statement) FOR reduce using rule 260 (iteration_statement) GOTO reduce using rule 260 (iteration_statement) CONTINUE reduce using rule 260 (iteration_statement) BREAK reduce using rule 260 (iteration_statement) RETURN reduce using rule 260 (iteration_statement) ALIGNAS reduce using rule 260 (iteration_statement) ALIGNOF reduce using rule 260 (iteration_statement) ATOMIC reduce using rule 260 (iteration_statement) GENERIC reduce using rule 260 (iteration_statement) NORETURN reduce using rule 260 (iteration_statement) STATIC_ASSERT reduce using rule 260 (iteration_statement) THREAD_LOCAL reduce using rule 260 (iteration_statement) '(' reduce using rule 260 (iteration_statement) '{' reduce using rule 260 (iteration_statement) '}' reduce using rule 260 (iteration_statement) '&' reduce using rule 260 (iteration_statement) '*' reduce using rule 260 (iteration_statement) '+' reduce using rule 260 (iteration_statement) '-' reduce using rule 260 (iteration_statement) '~' reduce using rule 260 (iteration_statement) '!' reduce using rule 260 (iteration_statement) ';' reduce using rule 260 (iteration_statement)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 261 | FOR '(' declaration expression_statement expression ')' • statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 478 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
258 iteration_statement → FOR '(' expression_statement expression_statement ')' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 258 (iteration_statement) I_CONSTANT reduce using rule 258 (iteration_statement) F_CONSTANT reduce using rule 258 (iteration_statement) STRING_LITERAL reduce using rule 258 (iteration_statement) FUNC_NAME reduce using rule 258 (iteration_statement) SIZEOF reduce using rule 258 (iteration_statement) INC_OP reduce using rule 258 (iteration_statement) DEC_OP reduce using rule 258 (iteration_statement) TYPEDEF_NAME reduce using rule 258 (iteration_statement) ENUMERATION_CONSTANT reduce using rule 258 (iteration_statement) TYPEDEF reduce using rule 258 (iteration_statement) EXTERN reduce using rule 258 (iteration_statement) STATIC reduce using rule 258 (iteration_statement) AUTO reduce using rule 258 (iteration_statement) REGISTER reduce using rule 258 (iteration_statement) INLINE reduce using rule 258 (iteration_statement) CONST reduce using rule 258 (iteration_statement) RESTRICT reduce using rule 258 (iteration_statement) VOLATILE reduce using rule 258 (iteration_statement) BOOL reduce using rule 258 (iteration_statement) CHAR reduce using rule 258 (iteration_statement) SHORT reduce using rule 258 (iteration_statement) INT reduce using rule 258 (iteration_statement) LONG reduce using rule 258 (iteration_statement) SIGNED reduce using rule 258 (iteration_statement) UNSIGNED reduce using rule 258 (iteration_statement) FLOAT reduce using rule 258 (iteration_statement) DOUBLE reduce using rule 258 (iteration_statement) VOID reduce using rule 258 (iteration_statement) COMPLEX reduce using rule 258 (iteration_statement) IMAGINARY reduce using rule 258 (iteration_statement) STRUCT reduce using rule 258 (iteration_statement) UNION reduce using rule 258 (iteration_statement) ENUM reduce using rule 258 (iteration_statement) CASE reduce using rule 258 (iteration_statement) DEFAULT reduce using rule 258 (iteration_statement) IF reduce using rule 258 (iteration_statement) ELSE reduce using rule 258 (iteration_statement) SWITCH reduce using rule 258 (iteration_statement) WHILE reduce using rule 258 (iteration_statement) DO reduce using rule 258 (iteration_statement) FOR reduce using rule 258 (iteration_statement) GOTO reduce using rule 258 (iteration_statement) CONTINUE reduce using rule 258 (iteration_statement) BREAK reduce using rule 258 (iteration_statement) RETURN reduce using rule 258 (iteration_statement) ALIGNAS reduce using rule 258 (iteration_statement) ALIGNOF reduce using rule 258 (iteration_statement) ATOMIC reduce using rule 258 (iteration_statement) GENERIC reduce using rule 258 (iteration_statement) NORETURN reduce using rule 258 (iteration_statement) STATIC_ASSERT reduce using rule 258 (iteration_statement) THREAD_LOCAL reduce using rule 258 (iteration_statement) '(' reduce using rule 258 (iteration_statement) '{' reduce using rule 258 (iteration_statement) '}' reduce using rule 258 (iteration_statement) '&' reduce using rule 258 (iteration_statement) '*' reduce using rule 258 (iteration_statement) '+' reduce using rule 258 (iteration_statement) '-' reduce using rule 258 (iteration_statement) '~' reduce using rule 258 (iteration_statement) '!' reduce using rule 258 (iteration_statement) ';' reduce using rule 258 (iteration_statement)
1 primary_expression → • IDENTIFIER 2 | • constant 3 | • string 4 | • '(' expression ')' 5 | • generic_selection 6 constant → • I_CONSTANT 7 | • F_CONSTANT 8 | • ENUMERATION_CONSTANT 10 string → • STRING_LITERAL 11 | • FUNC_NAME 12 generic_selection → • GENERIC '(' assignment_expression ',' generic_assoc_list ')' 17 postfix_expression → • primary_expression 18 | • postfix_expression '[' expression ']' 19 | • postfix_expression '(' ')' 20 | • postfix_expression '(' argument_expression_list ')' 21 | • postfix_expression '.' IDENTIFIER 22 | • postfix_expression PTR_OP IDENTIFIER 23 | • postfix_expression INC_OP 24 | • postfix_expression DEC_OP 25 | • '(' type_name ')' '{' initializer_list '}' 26 | • '(' type_name ')' '{' initializer_list ',' '}' 29 unary_expression → • postfix_expression 30 | • INC_OP unary_expression 31 | • DEC_OP unary_expression 32 | • unary_operator cast_expression 33 | • SIZEOF unary_expression 34 | • SIZEOF '(' type_name ')' 35 | • ALIGNOF '(' type_name ')' 36 unary_operator → • '&' 37 | • '*' 38 | • '+' 39 | • '-' 40 | • '~' 41 | • '!' 42 cast_expression → • unary_expression 43 | • '(' type_name ')' cast_expression 44 multiplicative_expression → • cast_expression 45 | • multiplicative_expression '*' cast_expression 46 | • multiplicative_expression '/' cast_expression 47 | • multiplicative_expression '%' cast_expression 48 additive_expression → • multiplicative_expression 49 | • additive_expression '+' multiplicative_expression 50 | • additive_expression '-' multiplicative_expression 51 shift_expression → • additive_expression 52 | • shift_expression LEFT_OP additive_expression 53 | • shift_expression RIGHT_OP additive_expression 54 relational_expression → • shift_expression 55 | • relational_expression '<' shift_expression 56 | • relational_expression '>' shift_expression 57 | • relational_expression LE_OP shift_expression 58 | • relational_expression GE_OP shift_expression 59 equality_expression → • relational_expression 60 | • equality_expression EQ_OP relational_expression 61 | • equality_expression NE_OP relational_expression 62 and_expression → • equality_expression 63 | • and_expression '&' equality_expression 64 exclusive_or_expression → • and_expression 65 | • exclusive_or_expression '^' and_expression 66 inclusive_or_expression → • exclusive_or_expression 67 | • inclusive_or_expression '|' exclusive_or_expression 68 logical_and_expression → • inclusive_or_expression 69 | • logical_and_expression AND_OP inclusive_or_expression 70 logical_or_expression → • logical_and_expression 71 | • logical_or_expression OR_OP logical_and_expression 72 conditional_expression → • logical_or_expression 73 | • logical_or_expression '?' expression ':' conditional_expression 74 assignment_expression → • conditional_expression 75 | • unary_expression assignment_operator assignment_expression 87 expression → • assignment_expression 88 | • expression ',' assignment_expression 236 statement → • labeled_statement 237 | • compound_statement 238 | • expression_statement 239 | • selection_statement 240 | • iteration_statement 241 | • jump_statement 242 labeled_statement → • IDENTIFIER ':' statement 243 | • CASE constant_expression ':' statement 244 | • DEFAULT ':' statement 245 compound_statement → • '{' '}' 246 | • '{' block_item_list '}' 251 expression_statement → • ';' 252 | • expression ';' 253 selection_statement → • IF '(' expression ')' statement ELSE statement 254 | • IF '(' expression ')' statement 255 | • SWITCH '(' expression ')' statement 256 iteration_statement → • WHILE '(' expression ')' statement 257 | • DO statement WHILE '(' expression ')' ';' 258 | • FOR '(' expression_statement expression_statement ')' statement 259 | • FOR '(' expression_statement expression_statement expression ')' statement 259 | FOR '(' expression_statement expression_statement expression ')' • statement 260 | • FOR '(' declaration expression_statement ')' statement 261 | • FOR '(' declaration expression_statement expression ')' statement 262 jump_statement → • GOTO IDENTIFIER ';' 263 | • CONTINUE ';' 264 | • BREAK ';' 265 | • RETURN ';' 266 | • RETURN expression ';' IDENTIFIER shift, and go to state 197 I_CONSTANT shift, and go to state 75 F_CONSTANT shift, and go to state 76 STRING_LITERAL shift, and go to state 77 FUNC_NAME shift, and go to state 78 SIZEOF shift, and go to state 79 INC_OP shift, and go to state 80 DEC_OP shift, and go to state 81 ENUMERATION_CONSTANT shift, and go to state 82 CASE shift, and go to state 198 DEFAULT shift, and go to state 199 IF shift, and go to state 200 SWITCH shift, and go to state 201 WHILE shift, and go to state 202 DO shift, and go to state 203 FOR shift, and go to state 204 GOTO shift, and go to state 205 CONTINUE shift, and go to state 206 BREAK shift, and go to state 207 RETURN shift, and go to state 208 ALIGNOF shift, and go to state 83 GENERIC shift, and go to state 84 '(' shift, and go to state 85 '{' shift, and go to state 125 '&' shift, and go to state 86 '*' shift, and go to state 87 '+' shift, and go to state 88 '-' shift, and go to state 89 '~' shift, and go to state 90 '!' shift, and go to state 91 ';' shift, and go to state 210 primary_expression go to state 92 constant go to state 93 string go to state 94 generic_selection go to state 95 postfix_expression go to state 96 unary_expression go to state 150 unary_operator go to state 98 cast_expression go to state 99 multiplicative_expression go to state 100 additive_expression go to state 101 shift_expression go to state 102 relational_expression go to state 103 equality_expression go to state 104 and_expression go to state 105 exclusive_or_expression go to state 106 inclusive_or_expression go to state 107 logical_and_expression go to state 108 logical_or_expression go to state 109 conditional_expression go to state 151 assignment_expression go to state 152 expression go to state 211 statement go to state 479 labeled_statement go to state 214 compound_statement go to state 215 expression_statement go to state 218 selection_statement go to state 219 iteration_statement go to state 220 jump_statement go to state 221
253 selection_statement → IF '(' expression ')' statement ELSE statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 253 (selection_statement) I_CONSTANT reduce using rule 253 (selection_statement) F_CONSTANT reduce using rule 253 (selection_statement) STRING_LITERAL reduce using rule 253 (selection_statement) FUNC_NAME reduce using rule 253 (selection_statement) SIZEOF reduce using rule 253 (selection_statement) INC_OP reduce using rule 253 (selection_statement) DEC_OP reduce using rule 253 (selection_statement) TYPEDEF_NAME reduce using rule 253 (selection_statement) ENUMERATION_CONSTANT reduce using rule 253 (selection_statement) TYPEDEF reduce using rule 253 (selection_statement) EXTERN reduce using rule 253 (selection_statement) STATIC reduce using rule 253 (selection_statement) AUTO reduce using rule 253 (selection_statement) REGISTER reduce using rule 253 (selection_statement) INLINE reduce using rule 253 (selection_statement) CONST reduce using rule 253 (selection_statement) RESTRICT reduce using rule 253 (selection_statement) VOLATILE reduce using rule 253 (selection_statement) BOOL reduce using rule 253 (selection_statement) CHAR reduce using rule 253 (selection_statement) SHORT reduce using rule 253 (selection_statement) INT reduce using rule 253 (selection_statement) LONG reduce using rule 253 (selection_statement) SIGNED reduce using rule 253 (selection_statement) UNSIGNED reduce using rule 253 (selection_statement) FLOAT reduce using rule 253 (selection_statement) DOUBLE reduce using rule 253 (selection_statement) VOID reduce using rule 253 (selection_statement) COMPLEX reduce using rule 253 (selection_statement) IMAGINARY reduce using rule 253 (selection_statement) STRUCT reduce using rule 253 (selection_statement) UNION reduce using rule 253 (selection_statement) ENUM reduce using rule 253 (selection_statement) CASE reduce using rule 253 (selection_statement) DEFAULT reduce using rule 253 (selection_statement) IF reduce using rule 253 (selection_statement) ELSE reduce using rule 253 (selection_statement) SWITCH reduce using rule 253 (selection_statement) WHILE reduce using rule 253 (selection_statement) DO reduce using rule 253 (selection_statement) FOR reduce using rule 253 (selection_statement) GOTO reduce using rule 253 (selection_statement) CONTINUE reduce using rule 253 (selection_statement) BREAK reduce using rule 253 (selection_statement) RETURN reduce using rule 253 (selection_statement) ALIGNAS reduce using rule 253 (selection_statement) ALIGNOF reduce using rule 253 (selection_statement) ATOMIC reduce using rule 253 (selection_statement) GENERIC reduce using rule 253 (selection_statement) NORETURN reduce using rule 253 (selection_statement) STATIC_ASSERT reduce using rule 253 (selection_statement) THREAD_LOCAL reduce using rule 253 (selection_statement) '(' reduce using rule 253 (selection_statement) '{' reduce using rule 253 (selection_statement) '}' reduce using rule 253 (selection_statement) '&' reduce using rule 253 (selection_statement) '*' reduce using rule 253 (selection_statement) '+' reduce using rule 253 (selection_statement) '-' reduce using rule 253 (selection_statement) '~' reduce using rule 253 (selection_statement) '!' reduce using rule 253 (selection_statement) ';' reduce using rule 253 (selection_statement)
257 iteration_statement → DO statement WHILE '(' expression ')' ';' • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 257 (iteration_statement) I_CONSTANT reduce using rule 257 (iteration_statement) F_CONSTANT reduce using rule 257 (iteration_statement) STRING_LITERAL reduce using rule 257 (iteration_statement) FUNC_NAME reduce using rule 257 (iteration_statement) SIZEOF reduce using rule 257 (iteration_statement) INC_OP reduce using rule 257 (iteration_statement) DEC_OP reduce using rule 257 (iteration_statement) TYPEDEF_NAME reduce using rule 257 (iteration_statement) ENUMERATION_CONSTANT reduce using rule 257 (iteration_statement) TYPEDEF reduce using rule 257 (iteration_statement) EXTERN reduce using rule 257 (iteration_statement) STATIC reduce using rule 257 (iteration_statement) AUTO reduce using rule 257 (iteration_statement) REGISTER reduce using rule 257 (iteration_statement) INLINE reduce using rule 257 (iteration_statement) CONST reduce using rule 257 (iteration_statement) RESTRICT reduce using rule 257 (iteration_statement) VOLATILE reduce using rule 257 (iteration_statement) BOOL reduce using rule 257 (iteration_statement) CHAR reduce using rule 257 (iteration_statement) SHORT reduce using rule 257 (iteration_statement) INT reduce using rule 257 (iteration_statement) LONG reduce using rule 257 (iteration_statement) SIGNED reduce using rule 257 (iteration_statement) UNSIGNED reduce using rule 257 (iteration_statement) FLOAT reduce using rule 257 (iteration_statement) DOUBLE reduce using rule 257 (iteration_statement) VOID reduce using rule 257 (iteration_statement) COMPLEX reduce using rule 257 (iteration_statement) IMAGINARY reduce using rule 257 (iteration_statement) STRUCT reduce using rule 257 (iteration_statement) UNION reduce using rule 257 (iteration_statement) ENUM reduce using rule 257 (iteration_statement) CASE reduce using rule 257 (iteration_statement) DEFAULT reduce using rule 257 (iteration_statement) IF reduce using rule 257 (iteration_statement) ELSE reduce using rule 257 (iteration_statement) SWITCH reduce using rule 257 (iteration_statement) WHILE reduce using rule 257 (iteration_statement) DO reduce using rule 257 (iteration_statement) FOR reduce using rule 257 (iteration_statement) GOTO reduce using rule 257 (iteration_statement) CONTINUE reduce using rule 257 (iteration_statement) BREAK reduce using rule 257 (iteration_statement) RETURN reduce using rule 257 (iteration_statement) ALIGNAS reduce using rule 257 (iteration_statement) ALIGNOF reduce using rule 257 (iteration_statement) ATOMIC reduce using rule 257 (iteration_statement) GENERIC reduce using rule 257 (iteration_statement) NORETURN reduce using rule 257 (iteration_statement) STATIC_ASSERT reduce using rule 257 (iteration_statement) THREAD_LOCAL reduce using rule 257 (iteration_statement) '(' reduce using rule 257 (iteration_statement) '{' reduce using rule 257 (iteration_statement) '}' reduce using rule 257 (iteration_statement) '&' reduce using rule 257 (iteration_statement) '*' reduce using rule 257 (iteration_statement) '+' reduce using rule 257 (iteration_statement) '-' reduce using rule 257 (iteration_statement) '~' reduce using rule 257 (iteration_statement) '!' reduce using rule 257 (iteration_statement) ';' reduce using rule 257 (iteration_statement)
261 iteration_statement → FOR '(' declaration expression_statement expression ')' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 261 (iteration_statement) I_CONSTANT reduce using rule 261 (iteration_statement) F_CONSTANT reduce using rule 261 (iteration_statement) STRING_LITERAL reduce using rule 261 (iteration_statement) FUNC_NAME reduce using rule 261 (iteration_statement) SIZEOF reduce using rule 261 (iteration_statement) INC_OP reduce using rule 261 (iteration_statement) DEC_OP reduce using rule 261 (iteration_statement) TYPEDEF_NAME reduce using rule 261 (iteration_statement) ENUMERATION_CONSTANT reduce using rule 261 (iteration_statement) TYPEDEF reduce using rule 261 (iteration_statement) EXTERN reduce using rule 261 (iteration_statement) STATIC reduce using rule 261 (iteration_statement) AUTO reduce using rule 261 (iteration_statement) REGISTER reduce using rule 261 (iteration_statement) INLINE reduce using rule 261 (iteration_statement) CONST reduce using rule 261 (iteration_statement) RESTRICT reduce using rule 261 (iteration_statement) VOLATILE reduce using rule 261 (iteration_statement) BOOL reduce using rule 261 (iteration_statement) CHAR reduce using rule 261 (iteration_statement) SHORT reduce using rule 261 (iteration_statement) INT reduce using rule 261 (iteration_statement) LONG reduce using rule 261 (iteration_statement) SIGNED reduce using rule 261 (iteration_statement) UNSIGNED reduce using rule 261 (iteration_statement) FLOAT reduce using rule 261 (iteration_statement) DOUBLE reduce using rule 261 (iteration_statement) VOID reduce using rule 261 (iteration_statement) COMPLEX reduce using rule 261 (iteration_statement) IMAGINARY reduce using rule 261 (iteration_statement) STRUCT reduce using rule 261 (iteration_statement) UNION reduce using rule 261 (iteration_statement) ENUM reduce using rule 261 (iteration_statement) CASE reduce using rule 261 (iteration_statement) DEFAULT reduce using rule 261 (iteration_statement) IF reduce using rule 261 (iteration_statement) ELSE reduce using rule 261 (iteration_statement) SWITCH reduce using rule 261 (iteration_statement) WHILE reduce using rule 261 (iteration_statement) DO reduce using rule 261 (iteration_statement) FOR reduce using rule 261 (iteration_statement) GOTO reduce using rule 261 (iteration_statement) CONTINUE reduce using rule 261 (iteration_statement) BREAK reduce using rule 261 (iteration_statement) RETURN reduce using rule 261 (iteration_statement) ALIGNAS reduce using rule 261 (iteration_statement) ALIGNOF reduce using rule 261 (iteration_statement) ATOMIC reduce using rule 261 (iteration_statement) GENERIC reduce using rule 261 (iteration_statement) NORETURN reduce using rule 261 (iteration_statement) STATIC_ASSERT reduce using rule 261 (iteration_statement) THREAD_LOCAL reduce using rule 261 (iteration_statement) '(' reduce using rule 261 (iteration_statement) '{' reduce using rule 261 (iteration_statement) '}' reduce using rule 261 (iteration_statement) '&' reduce using rule 261 (iteration_statement) '*' reduce using rule 261 (iteration_statement) '+' reduce using rule 261 (iteration_statement) '-' reduce using rule 261 (iteration_statement) '~' reduce using rule 261 (iteration_statement) '!' reduce using rule 261 (iteration_statement) ';' reduce using rule 261 (iteration_statement)
259 iteration_statement → FOR '(' expression_statement expression_statement expression ')' statement • [IDENTIFIER, I_CONSTANT, F_CONSTANT, STRING_LITERAL, FUNC_NAME, SIZEOF, INC_OP, DEC_OP, TYPEDEF_NAME, ENUMERATION_CONSTANT, TYPEDEF, EXTERN, STATIC, AUTO, REGISTER, INLINE, CONST, RESTRICT, VOLATILE, BOOL, CHAR, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, COMPLEX, IMAGINARY, STRUCT, UNION, ENUM, CASE, DEFAULT, IF, ELSE, SWITCH, WHILE, DO, FOR, GOTO, CONTINUE, BREAK, RETURN, ALIGNAS, ALIGNOF, ATOMIC, GENERIC, NORETURN, STATIC_ASSERT, THREAD_LOCAL, '(', '{', '}', '&', '*', '+', '-', '~', '!', ';'] IDENTIFIER reduce using rule 259 (iteration_statement) I_CONSTANT reduce using rule 259 (iteration_statement) F_CONSTANT reduce using rule 259 (iteration_statement) STRING_LITERAL reduce using rule 259 (iteration_statement) FUNC_NAME reduce using rule 259 (iteration_statement) SIZEOF reduce using rule 259 (iteration_statement) INC_OP reduce using rule 259 (iteration_statement) DEC_OP reduce using rule 259 (iteration_statement) TYPEDEF_NAME reduce using rule 259 (iteration_statement) ENUMERATION_CONSTANT reduce using rule 259 (iteration_statement) TYPEDEF reduce using rule 259 (iteration_statement) EXTERN reduce using rule 259 (iteration_statement) STATIC reduce using rule 259 (iteration_statement) AUTO reduce using rule 259 (iteration_statement) REGISTER reduce using rule 259 (iteration_statement) INLINE reduce using rule 259 (iteration_statement) CONST reduce using rule 259 (iteration_statement) RESTRICT reduce using rule 259 (iteration_statement) VOLATILE reduce using rule 259 (iteration_statement) BOOL reduce using rule 259 (iteration_statement) CHAR reduce using rule 259 (iteration_statement) SHORT reduce using rule 259 (iteration_statement) INT reduce using rule 259 (iteration_statement) LONG reduce using rule 259 (iteration_statement) SIGNED reduce using rule 259 (iteration_statement) UNSIGNED reduce using rule 259 (iteration_statement) FLOAT reduce using rule 259 (iteration_statement) DOUBLE reduce using rule 259 (iteration_statement) VOID reduce using rule 259 (iteration_statement) COMPLEX reduce using rule 259 (iteration_statement) IMAGINARY reduce using rule 259 (iteration_statement) STRUCT reduce using rule 259 (iteration_statement) UNION reduce using rule 259 (iteration_statement) ENUM reduce using rule 259 (iteration_statement) CASE reduce using rule 259 (iteration_statement) DEFAULT reduce using rule 259 (iteration_statement) IF reduce using rule 259 (iteration_statement) ELSE reduce using rule 259 (iteration_statement) SWITCH reduce using rule 259 (iteration_statement) WHILE reduce using rule 259 (iteration_statement) DO reduce using rule 259 (iteration_statement) FOR reduce using rule 259 (iteration_statement) GOTO reduce using rule 259 (iteration_statement) CONTINUE reduce using rule 259 (iteration_statement) BREAK reduce using rule 259 (iteration_statement) RETURN reduce using rule 259 (iteration_statement) ALIGNAS reduce using rule 259 (iteration_statement) ALIGNOF reduce using rule 259 (iteration_statement) ATOMIC reduce using rule 259 (iteration_statement) GENERIC reduce using rule 259 (iteration_statement) NORETURN reduce using rule 259 (iteration_statement) STATIC_ASSERT reduce using rule 259 (iteration_statement) THREAD_LOCAL reduce using rule 259 (iteration_statement) '(' reduce using rule 259 (iteration_statement) '{' reduce using rule 259 (iteration_statement) '}' reduce using rule 259 (iteration_statement) '&' reduce using rule 259 (iteration_statement) '*' reduce using rule 259 (iteration_statement) '+' reduce using rule 259 (iteration_statement) '-' reduce using rule 259 (iteration_statement) '~' reduce using rule 259 (iteration_statement) '!' reduce using rule 259 (iteration_statement) ';' reduce using rule 259 (iteration_statement)