Introduce macro to enforce matching enum to string for node types
[babeltrace.git] / formats / ctf / metadata / ctf-parser.y
index 188f8cd44e0c1d9cce191b9a6ccb37450ffb08f7..7e3fc40bc9e68f24e311ec238178d620737138ef 100644 (file)
@@ -77,32 +77,9 @@ struct gc_string {
 };
 
 static const char *node_type_to_str[] = {
-       [ NODE_UNKNOWN ] = "NODE_UNKNOWN",
-       [ NODE_ROOT ] = "NODE_ROOT",
-       [ NODE_EVENT ] = "NODE_EVENT",
-       [ NODE_ENV ] = "NODE_ENV",
-       [ NODE_STREAM ] = "NODE_STREAM",
-       [ NODE_TRACE ] = "NODE_TRACE",
-       [ NODE_CLOCK ] = "NODE_CLOCK",
-       [ NODE_CALLSITE ] = "NODE_CALLSITE",
-       [ NODE_CTF_EXPRESSION ] = "NODE_CTF_EXPRESSION",
-       [ NODE_UNARY_EXPRESSION ] = "NODE_UNARY_EXPRESSION",
-       [ NODE_TYPEDEF ] = "NODE_TYPEDEF",
-       [ NODE_TYPEALIAS_TARGET ] = "NODE_TYPEALIAS_TARGET",
-       [ NODE_TYPEALIAS_ALIAS ] = "NODE_TYPEALIAS_ALIAS",
-       [ NODE_TYPEALIAS ] = "NODE_TYPEALIAS",
-       [ NODE_TYPE_SPECIFIER ] = "NODE_TYPE_SPECIFIER",
-       [ NODE_TYPE_SPECIFIER_LIST ] = "NODE_TYPE_SPECIFIER_LIST",
-       [ NODE_POINTER ] = "NODE_POINTER",
-       [ NODE_TYPE_DECLARATOR ] = "NODE_TYPE_DECLARATOR",
-       [ NODE_FLOATING_POINT ] = "NODE_FLOATING_POINT",
-       [ NODE_INTEGER ] = "NODE_INTEGER",
-       [ NODE_STRING ] = "NODE_STRING",
-       [ NODE_ENUMERATOR ] = "NODE_ENUMERATOR",
-       [ NODE_ENUM ] = "NODE_ENUM",
-       [ NODE_STRUCT_OR_VARIANT_DECLARATION ] = "NODE_STRUCT_OR_VARIANT_DECLARATION",
-       [ NODE_VARIANT ] = "NODE_VARIANT",
-       [ NODE_STRUCT ] = "NODE_STRUCT",
+#define ENTRY(S)       [S] = #S,
+       FOREACH_CTF_NODES(ENTRY)
+#undef ENTRY
 };
 
 BT_HIDDEN
@@ -1225,7 +1202,13 @@ unary_expression:
                postfix_expression
                {       $$ = $1;                                }
        |       PLUS postfix_expression
-               {       $$ = $2;                                }
+               {
+                       $$ = $2;
+                       if ($$->u.unary_expression.type != UNARY_UNSIGNED_CONSTANT
+                               && $$->u.unary_expression.type != UNARY_SIGNED_CONSTANT) {
+                               reparent_error(scanner, "expecting numeric constant");
+                       }
+               }
        |       MINUS postfix_expression
                {
                        $$ = $2;
This page took 0.025372 seconds and 4 git commands to generate.