-| PROLOGUE
- {
- prologue_augment (translate_code ($1, @1), @1, typed);
- }
-| "%after-header" "{...}"
- {
- /* Remove the '{', and replace the '}' with '\n'. */
- $2[strlen ($2) - 1] = '\n';
- prologue_augment (translate_code ($2+1, @2), @2, true);
- }
-| "%before-header" "{...}"
- {
- /* Remove the '{', and replace the '}' with '\n'. */
- $2[strlen ($2) - 1] = '\n';
- prologue_augment (translate_code ($2+1, @2), @2, false);
- }
-| "%debug" { debug_flag = true; }
-| "%define" string_content
- {
- static char one[] = "1";
- muscle_insert ($2, one);
- }
-| "%define" string_content string_content { muscle_insert ($2, $3); }
-| "%defines" { defines_flag = true; }
-| "%end-header" "{...}"
- {
- /* Remove the '{', and replace the '}' with '\n'. */
- $2[strlen ($2) - 1] = '\n';
- muscle_code_grow ("end_header", translate_code ($2+1, @2), @2);
- }
-| "%error-verbose" { error_verbose = true; }
-| "%expect" INT { expected_sr_conflicts = $2; }
-| "%expect-rr" INT { expected_rr_conflicts = $2; }
-| "%file-prefix" "=" string_content { spec_file_prefix = $3; }
+| "%{...%}" { prologue_augment (translate_code ($1, @1), @1, union_seen); }
+| "%after-header" braceless { prologue_augment ($2, @2, true); }
+| "%before-header" braceless { prologue_augment ($2, @2, false); }
+| "%debug" { debug_flag = true; }
+| "%define" STRING content.opt { muscle_insert ($2, $3); }
+| "%defines" { defines_flag = true; }
+| "%end-header" braceless { muscle_code_grow ("end_header", $2, @2); }
+| "%error-verbose" { error_verbose = true; }
+| "%expect" INT { expected_sr_conflicts = $2; }
+| "%expect-rr" INT { expected_rr_conflicts = $2; }
+| "%file-prefix" "=" STRING { spec_file_prefix = $3; }