* src/gram.c (rule_rhs_print): Use %empty for empty rules.
* tests/conflicts.at, tests/regression.at, tests/sets.at: Adjust.
void
rule_rhs_print (rule const *r, FILE *out)
{
- if (*r->rhs >= 0)
+ if (0 <= *r->rhs)
{
item_number *rp;
for (rp = r->rhs; *rp >= 0; rp++)
fprintf (out, " %s", symbols[*rp]->tag);
}
else
- {
- fprintf (out, " /* %s */", _("empty"));
- }
+ fputs (" %empty", out);
}
static void
2 resolved_conflict: 'a' unreachable1
4 unreachable1: 'a' unreachable2
- 5 | /* empty */
+ 5 | %empty
- 6 unreachable2: /* empty */
- 7 | /* empty */
+ 6 unreachable2: %empty
+ 7 | %empty
9 reported_conflicts: 'a'
- 10 | /* empty */
+ 10 | %empty
State 4 conflicts: 1 shift/reduce
1 start: resolved_conflict 'a' reported_conflicts 'a'
2 resolved_conflict: 'a' unreachable1
- 3 | /* empty */
+ 3 | %empty
4 unreachable1: 'a' unreachable2
- 5 | /* empty */
+ 5 | %empty
- 6 unreachable2: /* empty */
- 7 | /* empty */
+ 6 unreachable2: %empty
+ 7 | %empty
8 reported_conflicts: 'a'
9 | 'a'
- 10 | /* empty */
+ 10 | %empty
Terminals, with rules where they appear
0 $accept: expr $end
- 1 $@1: /* empty */
+ 1 $@1: %empty
2 expr: 'a' $@1 'b'
- 3 $@2: /* empty */
+ 3 $@2: %empty
4 expr: $@2 'c'
2 CONST_DEC_LIST: CONST_DEC
3 | CONST_DEC_LIST CONST_DEC
- 4 $@1: /* empty */
+ 4 $@1: %empty
5 CONST_DEC: $@1 undef_id_tok '=' const_id_tok ';'
0 e $end
e derives
1 'e'
- 2 /* empty */
+ 2 %empty
NULLABLE
$accept: no
e: yes
$accept derives
0 e $end
1 'e'
- 2 /* empty */
+ 2 %empty
e derives
1 'e'
- 2 /* empty */
+ 2 %empty
]])
AT_CLEANUP