X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=dfa%2Flexer.c;h=2d0fc5e417b70da58fd55417e2142ef537f59e74;hb=fd12cf9b8e16c109f3c0f7aedb0e0efd65209e16;hp=98337d10cd29c1d8a456f13b9d69f5ed04ce3c90;hpb=ead74d0c3b9d76204494553c61854812eb69bbc7;p=idzebra-moved-to-github.git diff --git a/dfa/lexer.c b/dfa/lexer.c index 98337d1..2d0fc5e 100644 --- a/dfa/lexer.c +++ b/dfa/lexer.c @@ -1,10 +1,39 @@ /* - * Copyright (C) 1994, Index Data I/S + * Copyright (C) 1994-1996, Index Data I/S * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: lexer.c,v $ - * Revision 1.1 1994-09-26 10:16:55 adam + * Revision 1.10 1996-10-29 13:57:27 adam + * Include of zebrautl.h instead of alexutil.h. + * + * Revision 1.9 1996/05/14 11:33:41 adam + * MEMDEBUG turned off by default. + * + * Revision 1.8 1995/09/28 09:18:54 adam + * Removed various preprocessor defines. + * + * Revision 1.7 1995/09/04 12:33:27 adam + * Various cleanup. YAZ util used instead. + * + * Revision 1.6 1995/01/25 11:30:51 adam + * Simple error reporting when parsing regular expressions. + * Memory usage reduced. + * + * Revision 1.5 1995/01/24 16:00:22 adam + * Added -ansi to CFLAGS. + * Some changes to the dfa module. + * + * Revision 1.4 1994/10/04 17:46:44 adam + * Function options now returns arg with error option. + * + * Revision 1.3 1994/10/03 17:22:19 adam + * Optimization of grepper. + * + * Revision 1.2 1994/09/27 16:31:20 adam + * First version of grepper: grep with error correction. + * + * Revision 1.1 1994/09/26 10:16:55 adam * First version of dfa module in alex. This version uses yacc to parse * regular expressions. This should be hand-made instead. * @@ -19,7 +48,7 @@ #include #include -#include +#include #include #include "imalloc.h" #include "lexer.h" @@ -27,53 +56,37 @@ static char *prog; -void error( const char *format, ... ) +void error (const char *format, ...) { va_list argptr; - va_start( argptr, format ); - fprintf( stderr, "%s error: ", prog ); - (void) vfprintf( stderr, format, argptr ); - putc( '\n', stderr ); - exit( 1 ); + va_start (argptr, format); + fprintf (stderr, "%s error: ", prog); + (void) vfprintf (stderr, format, argptr); + putc ('\n', stderr); + exit (1); } -#ifdef YACC -extern int yydebug; -#else -extern int alexdebug; -#endif int ccluse = 0; -static int alex_options (int argc, char **argv); - -static int alex_options (int argc, char **argv) +static int lexer_options (int argc, char **argv) { - while( --argc > 0 ) - if( **++argv == '-' ) - while( *++*argv ) + while (--argc > 0) + if (**++argv == '-') + while (*++*argv) { - switch( **argv ) + switch (**argv) { -#ifdef __STDC__ case 'V': - fprintf( stderr, "%s: %s %s\n", prog, __DATE__, __TIME__ ); + fprintf (stderr, "%s: %s %s\n", prog, __DATE__, __TIME__); continue; -#endif - case 'v': + case 's': dfa_verbose = 1; continue; - case 't': -#ifdef YACC - yydebug = 1; -#else - alexdebug = 1; -#endif - continue; case 'c': ccluse = 1; continue; case 'd': - switch( *++*argv ) + switch (*++*argv) { case 's': debug_dfa_tran = 1; @@ -92,7 +105,8 @@ static int alex_options (int argc, char **argv) } continue; default: - fprintf( stderr, "%s: unknown option `-%s'\n", prog, *argv ); + fprintf (stderr, "%s: unknown option `-%s'\n", + prog, *argv); return 1; } break; @@ -100,44 +114,44 @@ static int alex_options (int argc, char **argv) return 0; } -int main (int argc, char **argv ) +int main (int argc, char **argv) { int i, no = 0; - DFA *dfa; - DFA_states *dfas; + struct DFA *dfa; prog = *argv; -#ifdef YACC - yydebug = 0; -#else - alexdebug = 0; -#endif - i = alex_options( argc, argv ); - if( i ) + dfa = dfa_init (); + i = lexer_options (argc, argv); + if (i) return i; - if( argc < 2 ) + if (argc < 2) { - fprintf( stderr, "%s: usage %s -cVvt -d[stf]\n", prog, prog ); + fprintf (stderr, "usage\n %s [-c] [-V] [-s] [-t] [-d[stf]] file\n", + prog); return 1; } - else while( --argc > 0 ) - if( **++argv != '-' && **argv ) - { - ++no; - i = read_file( *argv, &dfa ); - if( i ) - return i; - dfas = mk_dfas( dfa, 2000 ); - rm_dfa( &dfa ); - rm_dfas( &dfas ); - } -#ifdef MEMDEBUG + else while (--argc > 0) + if (**++argv != '-' && **argv) + { + ++no; + + i = read_file (*argv, dfa); + if (i) + return i; + dfa_mkstate (dfa); + +#if MEMDEBUG + imemstat(); +#endif + } + dfa_delete (&dfa); +#if MEMDEBUG imemstat(); #endif - if( !no ) + if (!no) { - fprintf( stderr, "%s: no files specified\n", prog ); + fprintf (stderr, "%s: no files specified\n", prog); return 2; } return 0;