* src/system.h: We don't need nor want bcopy.

Throw away MS-DOS crap: we don't need getpid.
* configure.in: We don't need strndup.  It was even causing
problems: because Flex includes the headers *before* us,
_GNU_SOURCE is not defined by config.h, and therefore strndup was
not visible.
* lib/xstrndup.c: New.
* src/scan-skel.l: Use it.
Be sure to initialize yylval.muscle member when scanning a MUSCLE.
* src/parse-skel.y: Use %directives instead of #defines.
This commit is contained in:
Akim Demaille
2001-12-30 21:06:22 +00:00
parent 1239777d4f
commit a4b36db458
7 changed files with 46 additions and 60 deletions

View File

@@ -21,6 +21,7 @@
%debug
%defines
%verbose
%error-verbose
%{
@@ -47,8 +48,8 @@ static int yyerror PARAMS ((const char* error));
%union
{
char* muscle;
char* string;
char *muscle;
char *string;
char character;
int yacc;
}

View File

@@ -20,11 +20,9 @@
02111-1307, USA. */
%{
#include "system.h"
#include "skeleton.h"
#include "parse-skel.h"
%}
%option nounput
@@ -49,31 +47,25 @@
"%%{actions}" { return ACTIONS; }
"%%{tokendef}" { return TOKENS; }
"%%{"[a-zA-Z][0-9a-zA-Z_-]+"}" { /* Muscle. */
size_t len = strlen (yytext);
yylval.string = (char*) malloc (len - 3);
strncpy (yylval.string, yytext + 3, len - 4);
yylval.string[len - 4] = 0;
/* Muscle. */
"%%{"[a-zA-Z][0-9a-zA-Z_-]+"}" {
yylval.muscle = xstrndup (yytext + 3, yyleng - 4);
return MUSCLE;
}
"%%\"".*"\"" { /* String. */
size_t len = strlen (yytext);
yylval.string = (char*) malloc (len - 3);
strncpy (yylval.string, yytext + 3, len - 4);
yylval.string[len - 4] = 0;
/* String. */
"%%\"".*"\"" {
yylval.string = xstrndup (yytext + 3, yyleng - 4);
return STRING;
}
<<EOF>> { /* End of file. */
return 0;
}
"\n" { /* End of line. */
/* End of line. */
"\n" {
return '\n';
}
. { /* Character. */
/* Plain Character. */
. {
yylval.character = *yytext;
return CHARACTER;
}

View File

@@ -26,16 +26,6 @@
#include <assert.h>
#ifdef MSDOS
# include <io.h>
#endif
#ifdef _MSC_VER
# include <stdlib.h>
# include <process.h>
# define getpid _getpid
#endif
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
@@ -62,9 +52,6 @@
# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
# include <memory.h>
# endif /* not STDC_HEADERS and HAVE_MEMORY_H */
# ifndef bcopy
# define bcopy(src, dst, num) memcpy((dst), (src), (num))
# endif
#else /* not STDC_HEADERS and not HAVE_STRING_H */
# include <strings.h>
/* memory.h and strings.h conflict on some systems. */
@@ -102,6 +89,9 @@ char *alloca ();
# include "xalloc.h"
/* From xstrndup.c. */
char *xstrndup PARAMS ((const char *s, size_t n));
/*---------------------.
| Missing prototypes. |
`---------------------*/
@@ -319,4 +309,4 @@ do { \
# include <dmalloc.h>
# endif /* WITH_DMALLOC */
#endif /* BISON_SYSTEM_H */
#endif /* ! BISON_SYSTEM_H */