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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 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 "\n" { linenumber ++ ;} 87 "=" { return '=';} 88 "." { return '.';} 89 "@" { return '@';} 90 "," { return ',';} 91 %% 92 #ifndef yywrap 93 /* Needed for lex, though not flex. */ 94 int yywrap(void) { return 1; } 95 #endif 96