1%{/* deflex.l - Lexer for .def files */
2
3/*  Copyright 1995, 1997, 1998, 1999, 2002, 2003, 2004, 2005
4    Free Software Foundation, Inc.
5
6    This file is part of GNU Binutils.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
21
22
23/* Contributed by Steve Chamberlain: sac@cygnus.com  */
24
25#define DONTDECLARE_MALLOC
26#include "libiberty.h"
27#include "defparse.h"
28#include "dlltool.h"
29
30#define YY_NO_UNPUT
31
32int 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 '=';}
89"." 		{ return '.';}
90"@"	 	{ return '@';}
91","		{ return ',';}
92%%
93#ifndef yywrap
94/* Needed for lex, though not flex. */
95int yywrap(void) { return 1; }
96#endif
97