%{
#include <stdio.h>
+#include <stdlib.h>
#define YYSTYPE int
static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1);
{
for (;;)
{
- int ch = getchar ();
+ int ch;
+ if (feof (stdin))
+ abort ();
+ ch = getchar ();
if (ch == EOF)
return 0;
else if (ch == 'B' || ch == 'P')
%%
-FILE *input = NULL;
+FILE *input;
int
yylex (void)
{
char buf[50];
char *s;
+ if (feof (stdin))
+ abort ();
switch (fscanf (input, " %1[a-z,]", buf)) {
case 1:
return buf[0];
%{
#include <stdio.h>
+#include <stdlib.h>
#include <stdarg.h>
static int MergeRule (int x0, int x1);
int yylex (void)
{
char inp[3];
+ if (feof (stdin))
+ abort ();
if (fscanf (input, "%2s", inp) == EOF)
return 0;
switch (inp[0])
static int
yylex (void)
{
- static char const *input = "a";
- return *input++;
+ static char const input[] = "a";
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
+ return input[toknum++];
}
int
static int
yylex (void)
{
- static char const *input = "a";
- return *input++;
+ static char const input[] = "a";
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
+ return input[toknum++];
}
static void
static int
yylex (void)
{
- static char const *input = "a";
- return *input++;
+ static char const input[] = "a";
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
+ return input[toknum++];
}
static void
lexIndex += 1;
switch (lexIndex)
{
+ default:
+ abort ();
case 1:
yylloc.first_column = 1;
yylloc.last_column = 9;
yylloc.first_column = 13;
yylloc.last_column = 17;
return T_PORT;
- default:
+ case 3:
return 0;
}
}
AT_DATA_GRAMMAR([glr-regr10.y],
[[
%{
+# include <stdlib.h>
# include <stdio.h>
static void yyerror (char const *);
static int yylex (void);
static int
yylex (void)
{
+ static int called;
+ if (called++)
+ abort ();
return 0;
}
static int
yylex (void)
{
- static char const *input = "a";
- return *input++;
+ static char const input[] = "a";
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
+ return input[toknum++];
}
int
yylex (void)
{
static int const input[] = { PARENT_RHS_AFTER, 0 };
- static const int *inputp = input;
- if (*inputp == PARENT_RHS_AFTER)
+ static size_t toknum;
+ if (! (toknum < sizeof input / sizeof *input))
+ abort ();
+ if (input[toknum] == PARENT_RHS_AFTER)
parent_rhs_after_value = 1;
- return *inputp++;
+ return input[toknum++];
}
int
static int
yylex (void)
{
- static char const *input = "ab";
- static int i = 0;
+ static char const input[] = "ab";
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
yylloc.first_line = yylloc.last_line = 1;
- yylloc.first_column = yylloc.last_column = i + 1;
- yylval.value = input[i] + 'A' - 'a';
- return input[i++];
+ yylloc.first_column = yylloc.last_column = toknum + 1;
+ yylval.value = input[toknum] + 'A' - 'a';
+ return input[toknum++];
}
static void
%union { char value; }
%{
+ #include <stdlib.h>
#include <stdio.h>
static void yyerror (char const *);
static int yylex (void);
static int
yylex (void)
{
- static char const *input = "abcdddd";
- static int i = 0;
+ static char const input[] = "abcdddd";
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
yylloc.first_line = yylloc.last_line = 1;
- yylloc.first_column = yylloc.last_column = i + 1;
- yylval.value = input[i] + 'A' - 'a';
- return input[i++];
+ yylloc.first_column = yylloc.last_column = toknum + 1;
+ yylval.value = input[toknum] + 'A' - 'a';
+ return input[toknum++];
}
static void
static int
yylex (void)
{
+ static int called;
+ if (called++)
+ abort ();
return 0;
}
static int
yylex (void)
{
- static char const *input = "ab";
- if (*input == 'b')
+ static char const input[] = "ab";
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
+ if (input[toknum] == 'b')
lookahead_value = 1;
- return *input++;
+ return input[toknum++];
}
int
yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
{
static char const input[] = "ab";
- static char const *inputp = input;
+ static size_t toknum;
+ if (! (toknum < sizeof input))
+ abort ();
lvalp->dummy = 0;
llocp->first_line = llocp->last_line = 2;
- llocp->first_column = inputp - input + 1;
+ llocp->first_column = toknum + 1;
llocp->last_column = llocp->first_column + 1;
- return *inputp++;
+ return input[toknum++];
}
int
[[%glr-parser
%{
+ #include <stdlib.h>
static void yyerror (char const *);
static int yylex ();
%}
%union {
int type1;
int type2;
+ int type3;
}
%%
sym1: sym2 %merge<merge> { $$ = $1; } ;
-sym2: %merge<merge> { $$ = 0; } ;
+sym2: sym3 %merge<merge> { $$ = $1; } ;
+sym3: %merge<merge> { $$ = 0; } ;
%type <type1> sym1;
%type <type2> sym2;
+%type <type3> sym3;
%%
static int
yylex ()
{
+ static int called;
+ if (called++)
+ abort ();
return 0;
}
}
]])
-AT_CHECK([[bison -o glr-regr18.c glr-regr18.y]], 0, [],
-[glr-regr18.y:26.13-19: warning: result type clash on merge function `merge': <type2> != <type1>
-glr-regr18.y:25.18-24: warning: first declaration
+AT_CHECK([[bison -o glr-regr18.c glr-regr18.y]], 1, [],
+[glr-regr18.y:28.18-24: result type clash on merge function `merge': <type2> != <type1>
+glr-regr18.y:27.18-24: previous declaration
+glr-regr18.y:29.13-19: result type clash on merge function `merge': <type3> != <type2>
+glr-regr18.y:28.18-24: previous declaration
])
AT_CLEANUP