+2002-11-04 Akim Demaille <akim@epita.fr>
+
+ * tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
+ and yyerror.
+ Have yyerror `use' its arguments.
+ * tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
+ returns true when location & yacc & pure & parse-param.
+ (_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.
+
2002-11-04 Akim Demaille <akim@epita.fr>
* src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
]AT_YYERROR_ARG_LOC_IF([, YYLTYPE *yylloc])[
]AT_PARAM_IF([, value_t *result, int *count])[)
{
+]AT_PARAM_IF([(void) result; (void) count; ])[
]AT_YYERROR_SEES_LOC_IF([
fprintf (stderr, "%d.%d-%d.%d: ",
LOC.first_line, LOC.first_column,
m4_pushdef([AT_YYERROR_ARG_LOC_IF],
[AT_GLR_OR_PARAM_IF([AT_PURE_AND_LOC_IF([$1], [$2])],
[$2])])
-# yyerror cannot see the locations if !glr & pure.
+# yyerror cannot see the locations if !glr & pure & !param.
m4_pushdef([AT_YYERROR_SEES_LOC_IF],
[AT_LOCATION_IF([AT_GLR_IF([$1],
- [AT_PURE_IF([$2], [$1])])],
+ [AT_PURE_IF([AT_PARAM_IF([$1], [$2])],
+ [$1])])],
[$2])])
])
#define YYSTYPE int
static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1);
+int yylex (void);
+int yyerror (char const *msg);
%}
static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1)
{
+ (void) x0;
+ (void) x1;
printf ("<OR>\n");
return 0;
}
-int main()
+int
+main (void)
{
yyparse();
return 0;
}
-int yyerror(char const *msg)
+int
+yyerror (char const *msg)
{
printf("%s\n", msg);
exit(4);
}
-int yylex()
+int
+yylex (void)
{
while (1) {
int ch = fgetc(stdin);
[glr-regr1.y: warning: 1 shift/reduce conflict
])
AT_COMPILE([glr-regr1])
-AT_CHECK([[echo BPBPB | ./glr-regr1]], 0,
+AT_CHECK([[echo BPBPB | ./glr-regr1]], 0,
[[E -> 'B'
E -> 'B'
E -> E 'P' E