$$->u.unary_expression.type = UNARY_STRING;
$$->u.unary_expression.u.string = yylval.gs->s;
}
-
| DECIMAL_CONSTANT
{
$$ = make_node(scanner, NODE_UNARY_EXPRESSION);
_cds_list_splice_tail(&($1)->u.type_specifier_list.head, &list->u.type_specifier_list.head);
_cds_list_splice_tail(&($3)->tmp_head, &($$)->u._typedef.type_declarators);
}
- | TYPEALIAS declaration_specifiers abstract_declarator_list COLON alias_declaration_specifiers alias_abstract_declarator_list SEMICOLON
+ | TYPEALIAS declaration_specifiers abstract_declarator_list TYPEASSIGN alias_declaration_specifiers alias_abstract_declarator_list SEMICOLON
{
struct ctf_node *list;
{
$$ = make_node(scanner, NODE_STRUCT);
$$->u._struct.has_body = 1;
- if (set_parent_node($2, $$))
+ if ($2 && set_parent_node($2, $$))
reparent_error(scanner, "struct reparent error");
}
| IDENTIFIER struct_declaration_begin struct_or_variant_declaration_list struct_declaration_end
$$ = make_node(scanner, NODE_STRUCT);
$$->u._struct.has_body = 1;
$$->u._struct.name = $1->s;
- if (set_parent_node($3, $$))
+ if ($3 && set_parent_node($3, $$))
reparent_error(scanner, "struct reparent error");
}
| ID_TYPE struct_declaration_begin struct_or_variant_declaration_list struct_declaration_end
$$ = make_node(scanner, NODE_STRUCT);
$$->u._struct.has_body = 1;
$$->u._struct.name = $1->s;
- if (set_parent_node($3, $$))
+ if ($3 && set_parent_node($3, $$))
reparent_error(scanner, "struct reparent error");
}
| IDENTIFIER
{
$$ = make_node(scanner, NODE_VARIANT);
$$->u.variant.has_body = 1;
- if (set_parent_node($2, $$))
+ if ($2 && set_parent_node($2, $$))
reparent_error(scanner, "variant reparent error");
}
| LT IDENTIFIER GT variant_declaration_begin struct_or_variant_declaration_list variant_declaration_end
$$ = make_node(scanner, NODE_VARIANT);
$$->u.variant.has_body = 1;
$$->u.variant.choice = $2->s;
- if (set_parent_node($5, $$))
+ if ($5 && set_parent_node($5, $$))
reparent_error(scanner, "variant reparent error");
}
| LT ID_TYPE GT variant_declaration_begin struct_or_variant_declaration_list variant_declaration_end
$$ = make_node(scanner, NODE_VARIANT);
$$->u.variant.has_body = 1;
$$->u.variant.choice = $2->s;
- if (set_parent_node($5, $$))
+ if ($5 && set_parent_node($5, $$))
reparent_error(scanner, "variant reparent error");
}
| IDENTIFIER variant_declaration_begin struct_or_variant_declaration_list variant_declaration_end
$$ = make_node(scanner, NODE_VARIANT);
$$->u.variant.has_body = 1;
$$->u.variant.name = $1->s;
- if (set_parent_node($3, $$))
+ if ($3 && set_parent_node($3, $$))
reparent_error(scanner, "variant reparent error");
}
| IDENTIFIER LT IDENTIFIER GT variant_declaration_begin struct_or_variant_declaration_list variant_declaration_end
$$->u.variant.has_body = 1;
$$->u.variant.name = $1->s;
$$->u.variant.choice = $3->s;
- if (set_parent_node($6, $$))
+ if ($6 && set_parent_node($6, $$))
reparent_error(scanner, "variant reparent error");
}
| IDENTIFIER LT IDENTIFIER GT
$$->u.variant.has_body = 1;
$$->u.variant.name = $1->s;
$$->u.variant.choice = $3->s;
- if (set_parent_node($6, $$))
+ if ($6 && set_parent_node($6, $$))
reparent_error(scanner, "variant reparent error");
}
| IDENTIFIER LT ID_TYPE GT
$$ = make_node(scanner, NODE_VARIANT);
$$->u.variant.has_body = 1;
$$->u.variant.name = $1->s;
- if (set_parent_node($3, $$))
+ if ($3 && set_parent_node($3, $$))
reparent_error(scanner, "variant reparent error");
}
| ID_TYPE LT IDENTIFIER GT variant_declaration_begin struct_or_variant_declaration_list variant_declaration_end
$$->u.variant.has_body = 1;
$$->u.variant.name = $1->s;
$$->u.variant.choice = $3->s;
- if (set_parent_node($6, $$))
+ if ($6 && set_parent_node($6, $$))
reparent_error(scanner, "variant reparent error");
}
| ID_TYPE LT IDENTIFIER GT
$$->u.variant.has_body = 1;
$$->u.variant.name = $1->s;
$$->u.variant.choice = $3->s;
- if (set_parent_node($6, $$))
+ if ($6 && set_parent_node($6, $$))
reparent_error(scanner, "variant reparent error");
}
| ID_TYPE LT ID_TYPE GT
($$)->u.struct_or_variant_declaration.type_specifier_list = list;
_cds_list_splice_tail(&($3)->tmp_head, &($$)->u._typedef.type_declarators);
}
- | TYPEALIAS declaration_specifiers abstract_declarator_list COLON alias_declaration_specifiers alias_abstract_declarator_list SEMICOLON
+ | TYPEALIAS declaration_specifiers abstract_declarator_list TYPEASSIGN alias_declaration_specifiers alias_abstract_declarator_list SEMICOLON
{
struct ctf_node *list;
($$)->u.struct_or_variant_declaration.type_specifier_list = list;
_cds_list_splice_tail(&($3)->tmp_head, &($$)->u._typedef.type_declarators);
}
- | TYPEALIAS declaration_specifiers abstract_declarator_list COLON alias_declaration_specifiers alias_abstract_declarator_list
+ | TYPEALIAS declaration_specifiers abstract_declarator_list TYPEASSIGN alias_declaration_specifiers alias_abstract_declarator_list
{
struct ctf_node *list;