/* Scan Bison Skeletons. -*- C -*-
- Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
#undef skel_wrap
#define skel_wrap() 1
-#include "system.h"
+#define FLEX_NO_OBSTACK
+#define FLEX_PREFIX(Id) skel_ ## Id
+#include "flex-scanner.h"
+#include <dirname.h>
#include <error.h>
#include <quotearg.h>
#include "files.h"
#include "scan-skel.h"
+int skel_lex (void);
+
#define QPUTS(String) \
- fputs (quotearg_style (c_quoting_style, (String)), yyout)
+ fputs (quotearg_style (c_quoting_style, String), yyout)
+
+#define BASE_QPUTS(File) \
+ QPUTS (last_component (File))
%}
%%
char const *file_name = yytext + sizeof "@output " - 1;
yytext[yyleng - 1] = '\0';
+ /* Decode special file names. They include the directory part,
+ contrary to their "free" occurrences, used for issuing #includes,
+ which must not include the directory part. */
+
if (*file_name == '@')
{
if (strcmp (file_name, "@output_header_name@") == 0)
else
fatal ("invalid token in skeleton: %s", yytext);
}
-
if (outname)
{
free (outname);
"@oline@" fprintf (yyout, "%d", lineno + 1);
"@ofile@" QPUTS (outname);
"@dir_prefix@" QPUTS (dir_prefix);
-"@output_parser_name@" QPUTS (parser_file_name);
-"@output_header_name@" QPUTS (spec_defines_file);
+"@output_parser_name@" BASE_QPUTS (parser_file_name);
+"@output_header_name@" BASE_QPUTS (spec_defines_file);
/* This pattern must not match more than the previous @ patterns. */
@[^{}@\n]* fatal ("invalid @ in skeleton: %s", yytext);