mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-11 05:13:04 +00:00
* 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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
18
src/system.h
18
src/system.h
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user