home *** CD-ROM | disk | FTP | other *** search
Lex Description | 1998-10-02 | 3.4 KB | 143 lines |
- %{
- /*
- # $Id: lex.l,v 1.6 1998/03/10 14:11:33 fbm Exp fbm $
- # Copyright (C) 1997,1998 Farrell McKay
- # All rights reserved.
- #
- # This file is part of the Fortify distribution, a toolkit for
- # upgrading the cryptographic strength of the Netscape Navigator
- # web browser, authored by Farrell McKay.
- #
- # This toolkit is provided to the recipient under the
- # following terms and conditions:-
- # 1. This copyright notice must not be removed or modified.
- # 2. This toolkit may not be reproduced or included in any commercial
- # media distribution, or commercial publication (for example CD-ROM,
- # disk, book, magazine, journal) without first obtaining the author's
- # express permission.
- # 3. This toolkit, or any component of this toolkit, may not be
- # commercially resold, redeveloped, rewritten, enhanced or otherwise
- # used as the basis for commercial venture, without first obtaining
- # the author's express permission.
- # 4. Subject to the above conditions being observed (1-3), this toolkit
- # may be freely reproduced or redistributed.
- # 5. This software is provided "as-is", without express or implied
- # warranty. In no event shall the author be liable for any direct,
- # indirect or consequential damages however caused.
- # 6. Subject to the above conditions being observed (1-5),
- # this toolkit may be used at no cost to the recipient.
- #
- # Farrell McKay
- # Wayfarer Systems Pty Ltd contact@fortify.net
- */
-
- #include <stdlib.h>
- #include <sys/types.h>
- #include "misc.h"
- #include "morpher.h"
- #ifdef OS2
- #include "y_tab.h"
- #else
- #include "y.tab.h"
- #endif
-
- #ifndef YYLMAX
- #define YYLMAX 1024
- #endif
-
- extern YYSTYPE yylval;
-
- static int linenum;
-
- extern int yylex();
-
- void
- lex_file_input(FILE *fp)
- {
- linenum = 1;
- yyin = fp;
- }
-
- int
- yywrap()
- {
- return 1;
- }
-
- void
- yyerror(const char *msg)
- {
- fprintf(stderr, "%s (at or before line %d)\n", msg, linenum);
- exit(2);
- }
-
- /*
- %p n Number of positions 2500
- %n n Number of states 500
- %a n Number of transitions 2000
- %e n Number of parse tree nodes 1000
- %k n Number of packed character classes 10000
- %o n Size of the output array 3000
- */
-
- %}
-
- %a 5000
- %o 10000
-
- D [0-9]
- H [0-9a-f]
- E (\\.)
- Z [^ \f\t\n\.{}\[\],;"]
-
- %%
-
- #.*\n { linenum++; }
- ;.*\n { linenum++; }
-
- init { return INIT; }
- grammar { return GRAMMAR; }
- target { return TARGET; }
- text_offset { return TEXT_OFFSET; }
- data_offset { return DATA_OFFSET; }
- rodata_offset { return RODATA_OFFSET; }
-
- segment { return SEGMENT; }
- msg { return MSG; }
- grade { return GRADE; }
- base { return BASE; }
- offset { return OFFSET; }
- old_value { return OLD; }
- new_value { return NEW; }
- context { return CONTEXT; }
-
- text { return TEXT; }
- data { return DATA; }
- rodata { return RODATA; }
-
- print { return PRINT; }
- assert { return ASSERT; }
- ptr { return PTR; }
- addr { return ADDR; }
-
- == { return EQ; }
- != { return NE; }
- \< { return LT; }
- \<= { return LE; }
- \> { return GT; }
- \>= { return GE; }
-
- \"(\\.|[^\\"\n])*\" { return STRING; }
-
- [+-]?0x{H}+ { yylval.ul = (unsigned long) strtol(yytext, (char **)0, 0); return NUM; }
- [+-]?{D}+ { yylval.ul = (unsigned long) strtol(yytext, (char **)0, 0); return NUM; }
-
- [ \f\t] ;
- \n { linenum++; }
-
- ({E}|{Z})+ { return TOKEN; }
-
- . { return yytext[0]; }
-
- %%
-