Home | History | Annotate | Download | only in binutils
      1 %option noinput nounput
      2 
      3 %{/* deflex.l - Lexer for .def files */
      4 
      5 /* Copyright (C) 1995-2014 Free Software Foundation, Inc.
      6 
      7    This file is part of GNU Binutils.
      8 
      9    This program is free software; you can redistribute it and/or modify
     10    it under the terms of the GNU General Public License as published by
     11    the Free Software Foundation; either version 3 of the License, or
     12    (at your option) any later version.
     13 
     14    This program is distributed in the hope that it will be useful,
     15    but WITHOUT ANY WARRANTY; without even the implied warranty of
     16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17    GNU General Public License for more details.
     18 
     19    You should have received a copy of the GNU General Public License
     20    along with this program; if not, write to the Free Software
     21    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     22    MA 02110-1301, USA.  */
     23 
     24 
     25 /* Contributed by Steve Chamberlain: sac (at) cygnus.com  */
     26 
     27 #define DONTDECLARE_MALLOC
     28 #include "libiberty.h"
     29 #include "defparse.h"
     30 #include "dlltool.h"
     31 
     32 int linenumber;
     33 
     34 %}
     35 %%
     36 "NAME" 		{ return NAME;}
     37 "LIBRARY"	{ return LIBRARY;}
     38 "DESCRIPTION" 	{ return DESCRIPTION;}
     39 "STACKSIZE"	{ return STACKSIZE;}
     40 "HEAPSIZE" 	{ return HEAPSIZE;}
     41 "CODE" 		{ return CODE;}
     42 "DATA"		{ return DATA;}
     43 "SECTIONS"	{ return SECTIONS;}
     44 "EXPORTS"	{ return EXPORTS;}
     45 "IMPORTS"	{ return IMPORTS;}
     46 "VERSION"	{ return VERSIONK;}
     47 "BASE"		{ return BASE;}
     48 "CONSTANT"	{ return CONSTANT; }
     49 "NONAME"	{ return NONAME; }
     50 "PRIVATE"	{ return PRIVATE; }
     51 "READ"		{ return READ;}
     52 "WRITE"		{ return WRITE;}
     53 "EXECUTE"	{ return EXECUTE;}
     54 "SHARED"	{ return SHARED;}
     55 "NONSHARED"	{ return NONSHARED;}
     56 "SINGLE"	{ return SINGLE;}
     57 "MULTIPLE"	{ return MULTIPLE;}
     58 "INITINSTANCE"	{ return INITINSTANCE;}
     59 "INITGLOBAL"	{ return INITGLOBAL;}
     60 "TERMINSTANCE"	{ return TERMINSTANCE;}
     61 "TERMGLOBAL"	{ return TERMGLOBAL;}
     62 
     63 [0-9][x0-9A-Fa-f]* { yylval.number = strtol (yytext,0,0);
     64 		return NUMBER; }
     65 
     66 (@)?[A-Za-z$:\-\_?][A-Za-z0-9/$:\<\>\-\_@?]* {
     67 		yylval.id =  xstrdup (yytext);
     68 		return ID;
     69 		}
     70 
     71 "\""[^\"]*"\"" {
     72 		yylval.id = xstrdup (yytext+1);
     73 		yylval.id[yyleng-2] = 0;
     74 		return ID;
     75 		}
     76 
     77 "\'"[^\']*"\'" {
     78 		yylval.id = xstrdup (yytext+1);
     79 		yylval.id[yyleng-2] = 0;
     80 		return ID;
     81 		}
     82 "*".* 		{ }
     83 ";".* 		{ }
     84 " "		{ }
     85 "\t"		{ }
     86 "\r"		{ }
     87 "\n"	 	{ linenumber ++ ;}
     88 "=="		{ return EQUAL;}
     89 "=" 		{ return '=';}
     90 "." 		{ return '.';}
     91 "@"	 	{ return '@';}
     92 ","		{ return ',';}
     93 %%
     94 #ifndef yywrap
     95 /* Needed for lex, though not flex. */
     96 int yywrap(void) { return 1; }
     97 #endif
     98