2 /* Scan Bison Skeletons.
 
   3    Copyright (C) 2001  Free Software Foundation, Inc.
 
   5    This file is part of Bison, the GNU Compiler Compiler.
 
   7    Bison is free software; you can redistribute it and/or modify it
 
   8    under the terms of the GNU General Public License as published by
 
   9    the Free Software Foundation; either version 2, or (at your option)
 
  12    Bison is distributed in the hope that it will be useful, but
 
  13    WITHOUT ANY WARRANTY; without even the implied warranty of
 
  14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
  15    General Public License for more details.
 
  17    You should have received a copy of the GNU General Public License
 
  18    along with Bison; see the file COPYING.  If not, write to the Free
 
  19    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 
  22 %option debug nodefault noyywrap nounput
 
  23 %option prefix="skel_" outfile="lex.yy.c"
 
  29    Then we have warning: `yy_flex_realloc' defined but not used.
 
  30    Seems like a Flex bug to me: Why the heck yylineno would trigger
 
  31    the REJECT exception???  */
 
  36 #include "parse-skel.h"
 
  40 /* Each time we match a string, move the end cursor to its end. */
 
  41 #define YY_USER_ACTION  yylloc->last_column += yyleng;
 
  45   /* At each yylex invocation, mark the current position as the
 
  46      start of the next token.  */
 
  47   LOCATION_STEP (*yylloc);
 
  50 "%%{line}"          { return LINE; }
 
  51 "%%{skeleton-line}" { return SLINE; }
 
  53 "%%{yacc}"    { return YACC; }
 
  54 "%%{section}" { return SECTION; }
 
  56 "%%{guards}"   { return GUARDS; }
 
  57 "%%{actions}"  { return ACTIONS; }
 
  58 "%%{tokendef}" { return TOKENS; }
 
  61 "%%{"[a-zA-Z][0-9a-zA-Z_-]+"}" {
 
  62   yylval->string = xstrndup (yytext + 3, yyleng - 4);
 
  68   yylval->string = xstrndup (yytext + 3, yyleng - 4);
 
  74   LOCATION_LINES (*yylloc, yyleng);
 
  80   yylval->string = yytext;
 
  84   /* Plain Characters.  */
 
  86   yylval->string = yytext;
 
  90   /* Plain Character.  */
 
  92   yylval->character = *yytext;