xref: /netbsd-src/external/gpl3/binutils.old/dist/binutils/deflex.l (revision e992f068c547fd6e84b3f104dc2340adcc955732)
1 %option noinput nounput noyywrap
2 
3 %{/* deflex.l - Lexer for .def files */
4 
5 /* Copyright (C) 1995-2022 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@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 = xmemdup (yytext + 1, yyleng - 2, yyleng - 1);
73 		return ID;
74 		}
75 
76 "\'"[^\']*"\'" {
77 		yylval.id = xmemdup (yytext + 1, yyleng - 2, yyleng - 1);
78 		return ID;
79 		}
80 "*".* 		{ }
81 ";".* 		{ }
82 " "		{ }
83 "\t"		{ }
84 "\r"		{ }
85 "\n"	 	{ linenumber ++ ;}
86 "=="		{ return EQUAL;}
87 "=" 		{ return '=';}
88 "." 		{ return '.';}
89 "@"	 	{ return '@';}
90 ","		{ return ',';}
91 %%
92