OP shift_expression shift_expression : additive_expression | shift_expression LEFT_OP additive_expression | shift_expression RIGHT_OP additive_expression additive_expression : multiplicative_expression | additive_expression '+' multiplicative_expression | additive_expression '-' multiplicative_expression multiplicative_expression : cast_expression | multiplicative_expression '*' cast_expression | multiplicative_expression '/' cast_expression | multiplicative_expression '%' cast_expression cast_expression : unary_expression | '(' type_name ')' cast_expression unary_expression : postfix_expression | INC_OP unary_expression | DEC_OP unary_expression | unary_operator cast_expression | SIZEOF unary_expression | SIZEOF '(' type_name ')' postfix_expressionà : primary_expression | postfix_expression '[' expression ']' | postfix_expression '(' ')' | postfix_expression '(' argument_expression_list ')' | postfix_expression '.' IDENTIFIER | postfix_expression PTR_OP IDENTIFIER | postfix_expression INC_OP | postfix_expression DEC_OP primary_expressionà IDENTIFIER | CONSTANT | STRING_LITERAL | '(' expression ')' argument_expression_list : assignment_expression | argument_expression_list ',' assignment_expression unary_operator : '&' | '*' | '+' | '-' | '~' | '!' assignment_operatorà '=' | MUL_ASSIGN | DIV_ASSIGN | MOD_ASSIGN | ADD_ASSIGN | SUB_ASSIGN | LEFT_ASSIGN | RIGHT_ASSIGN | AND_ASSIGN | XOR_ASSIGN | OR_ASSIGN storage_class_specifierà TYPEDEF | EXTERN | STATIC | AUTO | REGISTER struct_or_union_specifier : struct_or_union IDENTIFIER '{' struct_declaration_list '}' | struct_or_union '{' struct_declaration_list '}' | struct_or_union IDENTIFIER struct_or_union : STRUCT | UNION struct_declaration_list : struct_declaration | struct_declaration_list struct_declaration struct_declaration : specifier_qualifier_list struct_declarator_list ';' specifier_qualifier_listà type_specifier specifier_qualifier_list | type_specifier | type_qualifier specifier_qualifier_list | type_qualifier struct_declarator_listà struct_declarator | struct_declarator_list ',' struct_declarator struct_declaratorà : declarator | ':' constant_expression | declarator ':' constant_expression enum_specifierà ENUM '{' enumerator_list '}' | ENUM IDENTIFIER '{' enumerator_list '}' | ENUM IDENTIFIER enumerator_listà enumerator | enumerator_list ',' enumerator Enumeratorà IDENTIFIER | IDENTIFIER '=' constant_expression type_qualifierà CONST | VOLATILE type_qualifier_listà type_qualifier | type_qualifier_list type_qualifier parameter_type_listà parameter_list | parameter_list ',' ELLIPSIS parameter_listà : parameter_declaration | parameter_list ',' parameter_declaration type_nameà specifier_qualifier_list | specifier_qualifier_list abstract_declarator abstract_declaratorà pointer | direct_abstract_declarator | pointer direct_abstract_declarator |