/* Reported by S. Eken */
%{
- #define YYSTYPE char const *
+ #define YYSTYPE char *
#include <ctype.h>
#include <stdio.h>
's' var 't'
{ printf ("Variable: '%s'\n", $2); }
'v' 'x' 'q'
+ { free ($2); }
| 's' var_list 't' 'e'
- { printf ("Varlist: '%s'\n", $2); }
+ { printf ("Varlist: '%s'\n", $2); free ($2); }
| 's' var 't' var_printer 'x'
+ { free ($2); }
;
var:
{ $$ = $1; }
| var ',' var_list
{
- char *s = (char *) malloc (strlen ($1) + 1 + strlen ($3) + 1);
- strcpy (s, $1);
+ char *s = (char *) realloc ($1, strlen ($1) + 1 + strlen ($3) + 1);
strcat (s, ",");
strcat (s, $3);
+ free ($3);
$$ = s;
}
;
AT_DATA_GRAMMAR([glr-regr9.y],
[[
%{
- #include <stdio.h>
- #include <stdlib.h>
+# include <stdio.h>
+# include <stdlib.h>
static void yyerror (char const *);
static int yylex (void);
- #define YYSTACKEXPANDABLE 0
+# define YYSTACKEXPANDABLE 0
static int tokens = 0;
static int destructors = 0;
+# define USE(Var)
%}
%glr-parser
%%
start:
- ambig0 'a' { destructors += 2; }
+ ambig0 'a' { destructors += 2; USE ($2); }
| ambig1 start { destructors += 1; }
| ambig2 start { destructors += 1; }
;