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