$$->u.unary_expression.type = UNARY_STRING;
$$->u.unary_expression.u.string = yylval.gs->s;
}
-
| DECIMAL_CONSTANT
{
$$ = make_node(scanner, NODE_UNARY_EXPRESSION);
{
$$ = 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
-enum name <int> {
+typealias integer { size = 32; align = 32; signed = true; } : int;
+typealias integer { size = 64; align = 64; signed = true; } : long;
+typealias integer { size = 64; align = 64; } : unsigned long;
+
+enum name1 <int> {
ZERO,
ONE,
TWO,
ELEVEN,
};
-enum name <long> { ONE, TWO };
+enum name2 <long> { ONE, TWO };
-enum name <unsigned long> { ONE, TWO };
+enum name3 <unsigned long> { ONE, TWO };
-enum name <unsigned long> {
+enum name4 <unsigned long> {
string = 1 ... 2,
"other string" = 3...4,
yet_another_string, /* will be assigned to end_value2 + 1 */
"some other string" = 10,
};
-enum name <long> { "int" = 1, };
+enum name5 <long> { "int" = 1, };
typealias floating_point {
exp_dig = 8; /* sizeof(float) * CHAR_BIT - FLT_MANT_DIG */
typealias integer {
size = 32;
align = 32;
- sign = false;
+ signed = false;
} : struct page *;
+trace {
+ major = 66;
+ minor = 2;
+ uuid = "1123fcea-706e-11e0-a38b-f3c28a683a3d";
+ word_size = 64;
+};
+
stream {
typealias integer { size = 64; align = 64; signed = false; } : uint64_t;
typealias integer { size = 16; align = 16; signed = false; } : uint16_t;
};
struct example {
- short a:12;
- short b:5;
+ /* TODO gcc bitfields not supported yet. */
+ /* short a:12;
+ short b:5; */
};
struct name {
typedef int rootscopetest;
-event { a.b.c.d.e = f.g.h->i->j; };
+/* parser level only: event { a.b.c.d.e = f.g.h->i->j; }; */
+
+event {
+ name = test_event;
+ id = 0;
+ stream_id = 5;
+ context := struct {};
+ payload := struct {};
+};
typealias integer { size = 32; align = 32; signed = false; } : unsigned long long *;