summaryrefslogtreecommitdiff
path: root/binutils/arlex.l
diff options
context:
space:
mode:
Diffstat (limited to 'binutils/arlex.l')
-rw-r--r--binutils/arlex.l94
1 files changed, 94 insertions, 0 deletions
diff --git a/binutils/arlex.l b/binutils/arlex.l
new file mode 100644
index 0000000..2cda0a2
--- /dev/null
+++ b/binutils/arlex.l
@@ -0,0 +1,94 @@
+%option noinput nounput
+
+%{
+/* arlex.l - Strange script language lexer */
+
+/* Copyright (C) 1992-2014 Free Software Foundation, Inc.
+
+ This file is part of GNU Binutils.
+
+ 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. */
+
+
+/* Contributed by Steve Chamberlain <sac@cygnus.com>. */
+
+#define DONTDECLARE_MALLOC
+#include "ansidecl.h"
+#include "libiberty.h"
+#include "arparse.h"
+
+#ifndef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#endif
+
+extern int yylex (void);
+
+int linenumber;
+%}
+
+%a 10000
+%o 25000
+
+%%
+
+"ADDLIB" { return ADDLIB; }
+"ADDMOD" { return ADDMOD; }
+"CLEAR" { return CLEAR; }
+"CREATE" { return CREATE; }
+"DELETE" { return DELETE; }
+"DIRECTORY" { return DIRECTORY; }
+"END" { return END; }
+"EXTRACT" { return EXTRACT; }
+"FULLDIR" { return FULLDIR; }
+"HELP" { return HELP; }
+"LIST" { return LIST; }
+"OPEN" { return OPEN; }
+"REPLACE" { return REPLACE; }
+"VERBOSE" { return VERBOSE; }
+"SAVE" { return SAVE; }
+"addlib" { return ADDLIB; }
+"addmod" { return ADDMOD; }
+"clear" { return CLEAR; }
+"create" { return CREATE; }
+"delete" { return DELETE; }
+"directory" { return DIRECTORY; }
+"end" { return END; }
+"extract" { return EXTRACT; }
+"fulldir" { return FULLDIR; }
+"help" { return HELP; }
+"list" { return LIST; }
+"open" { return OPEN; }
+"replace" { return REPLACE; }
+"verbose" { return VERBOSE; }
+"save" { return SAVE; }
+"+\n" { linenumber ++; }
+"(" { return '('; }
+")" { return ')'; }
+"," { return ','; }
+[A-Za-z0-9/\\$:.\-\_]+ {
+ yylval.name = xstrdup (yytext);
+ return FILENAME;
+ }
+"*".* { }
+";".* { }
+" " { }
+"\n" { linenumber ++; return NEWLINE; }
+
+%%
+#ifndef yywrap
+/* Needed for lex, though not flex. */
+int yywrap(void) { return 1; }
+#endif