From 2b0a0f95394186acf18c453209e31b028312ecf3 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 21 Apr 2011 14:46:00 -0400 Subject: [PATCH] Remove enum < integer_constant > from grammar Signed-off-by: Mathieu Desnoyers --- formats/ctf/metadata/ctf-parser.y | 16 ++++++++-------- .../metadata/ctf-visitor-semantic-validator.c | 5 ++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/formats/ctf/metadata/ctf-parser.y b/formats/ctf/metadata/ctf-parser.y index cdcfdcdb..66e37923 100644 --- a/formats/ctf/metadata/ctf-parser.y +++ b/formats/ctf/metadata/ctf-parser.y @@ -1537,7 +1537,7 @@ enum_type_specifier: $$->u._enum.has_body = 1; _cds_list_splice_tail(&($2)->tmp_head, &($$)->u._enum.enumerator_list); } - | LT declaration_specifiers_or_integer_constant GT LBRAC enumerator_list RBRAC + | LT declaration_specifiers GT LBRAC enumerator_list RBRAC { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 1; @@ -1551,7 +1551,7 @@ enum_type_specifier: $$->u._enum.enum_id = $1->s; _cds_list_splice_tail(&($3)->tmp_head, &($$)->u._enum.enumerator_list); } - | IDENTIFIER LT declaration_specifiers_or_integer_constant GT LBRAC enumerator_list RBRAC + | IDENTIFIER LT declaration_specifiers GT LBRAC enumerator_list RBRAC { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 1; @@ -1566,7 +1566,7 @@ enum_type_specifier: $$->u._enum.enum_id = $1->s; _cds_list_splice_tail(&($3)->tmp_head, &($$)->u._enum.enumerator_list); } - | ID_TYPE LT declaration_specifiers_or_integer_constant GT LBRAC enumerator_list RBRAC + | ID_TYPE LT declaration_specifiers GT LBRAC enumerator_list RBRAC { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 1; @@ -1580,7 +1580,7 @@ enum_type_specifier: $$->u._enum.has_body = 1; _cds_list_splice_tail(&($2)->tmp_head, &($$)->u._enum.enumerator_list); } - | LT declaration_specifiers_or_integer_constant GT LBRAC enumerator_list COMMA RBRAC + | LT declaration_specifiers GT LBRAC enumerator_list COMMA RBRAC { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 1; @@ -1594,7 +1594,7 @@ enum_type_specifier: $$->u._enum.enum_id = $1->s; _cds_list_splice_tail(&($3)->tmp_head, &($$)->u._enum.enumerator_list); } - | IDENTIFIER LT declaration_specifiers_or_integer_constant GT LBRAC enumerator_list COMMA RBRAC + | IDENTIFIER LT declaration_specifiers GT LBRAC enumerator_list COMMA RBRAC { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 1; @@ -1608,7 +1608,7 @@ enum_type_specifier: $$->u._enum.has_body = 0; $$->u._enum.enum_id = $1->s; } - | IDENTIFIER LT declaration_specifiers_or_integer_constant GT + | IDENTIFIER LT declaration_specifiers GT { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 0; @@ -1622,7 +1622,7 @@ enum_type_specifier: $$->u._enum.enum_id = $1->s; _cds_list_splice_tail(&($3)->tmp_head, &($$)->u._enum.enumerator_list); } - | ID_TYPE LT declaration_specifiers_or_integer_constant GT LBRAC enumerator_list COMMA RBRAC + | ID_TYPE LT declaration_specifiers GT LBRAC enumerator_list COMMA RBRAC { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 1; @@ -1636,7 +1636,7 @@ enum_type_specifier: $$->u._enum.has_body = 0; $$->u._enum.enum_id = $1->s; } - | ID_TYPE LT declaration_specifiers_or_integer_constant GT + | ID_TYPE LT declaration_specifiers GT { $$ = make_node(scanner, NODE_ENUM); $$->u._enum.has_body = 0; diff --git a/formats/ctf/metadata/ctf-visitor-semantic-validator.c b/formats/ctf/metadata/ctf-visitor-semantic-validator.c index 6f46bfbd..8decc19e 100644 --- a/formats/ctf/metadata/ctf-visitor-semantic-validator.c +++ b/formats/ctf/metadata/ctf-visitor-semantic-validator.c @@ -65,10 +65,8 @@ int ctf_visitor_unary_expression(FILE *fd, int depth, struct ctf_node *node) /* Right child of a ctf expression can be any type of unary exp. */ break; /* OK */ case NODE_TYPE_DECLARATOR: - case NODE_ENUM: /* - * We are the length of a type declarator or the size of an enum - * container. We can only be a numeric constant. + * We are the length of a type declarator. */ switch (node->u.unary_expression.type) { case UNARY_SIGNED_CONSTANT: @@ -104,6 +102,7 @@ int ctf_visitor_unary_expression(FILE *fd, int depth, struct ctf_node *node) case NODE_FLOATING_POINT: case NODE_INTEGER: case NODE_STRING: + case NODE_ENUM: case NODE_STRUCT_OR_VARIANT_DECLARATION: case NODE_VARIANT: case NODE_STRUCT: -- 2.34.1