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