| %option noinput nounput |
| |
| %{/* deflex.l - Lexer for .def files */ |
| |
| /* Copyright (C) 1995-2015 Free Software Foundation, Inc. |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software |
| Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
| MA 02110-1301, USA. |
| */ |
| |
| #define DONTDECLARE_MALLOC |
| #include "defparse.h" |
| #include "deflex.h" |
| |
| int linenumber; |
| |
| %} |
| %% |
| "NAME" { return NAME;} |
| "LIBRARY" { return LIBRARY;} |
| "DESCRIPTION" { return DESCRIPTION;} |
| "STACKSIZE" { return STACKSIZE;} |
| "HEAPSIZE" { return HEAPSIZE;} |
| "CODE" { return CODE;} |
| "DATA" { return DATA;} |
| "SECTIONS" { return SECTIONS;} |
| "EXPORTS" { return EXPORTS;} |
| "IMPORTS" { return IMPORTS;} |
| "VERSION" { return VERSIONK;} |
| "BASE" { return BASE;} |
| "CONSTANT" { return CONSTANT; } |
| "NONAME" { return NONAME; } |
| "PRIVATE" { return PRIVATE; } |
| "READ" { return READ;} |
| "WRITE" { return WRITE;} |
| "EXECUTE" { return EXECUTE;} |
| "SHARED" { return SHARED;} |
| "NONSHARED" { return NONSHARED;} |
| "SINGLE" { return SINGLE;} |
| "MULTIPLE" { return MULTIPLE;} |
| "INITINSTANCE" { return INITINSTANCE;} |
| "INITGLOBAL" { return INITGLOBAL;} |
| "TERMINSTANCE" { return TERMINSTANCE;} |
| "TERMGLOBAL" { return TERMGLOBAL;} |
| |
| [0-9][x0-9A-Fa-f]* { yylval.number = strtol (yytext,0,0); |
| return NUMBER; } |
| |
| (@)?[A-Za-z$:\-\_?][A-Za-z0-9/$:\<\>\-\_@?]* { |
| yylval.id = xstrdup (yytext); |
| return ID; |
| } |
| |
| "\""[^\"]*"\"" { |
| yylval.id = xstrdup (yytext+1); |
| yylval.id[yyleng-2] = 0; |
| return ID; |
| } |
| |
| "\'"[^\']*"\'" { |
| yylval.id = xstrdup (yytext+1); |
| yylval.id[yyleng-2] = 0; |
| return ID; |
| } |
| "*".* { } |
| ";".* { } |
| " " { } |
| "\t" { } |
| "\r" { } |
| "\n" { linenumber ++ ;} |
| "==" { return EQUAL;} |
| "=" { return '=';} |
| "." { return '.';} |
| "@" { return '@';} |
| "," { return ',';} |
| %% |
| #ifndef yywrap |
| /* Needed for lex, though not flex. */ |
| int yywrap(void) { return 1; } |
| #endif |