Unused static function rm_SetElement was removed.
[idzebra-moved-to-github.git] / dfa / lexer.c
index 98337d1..85fa2e5 100644 (file)
@@ -4,7 +4,24 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: lexer.c,v $
- * Revision 1.1  1994-09-26 10:16:55  adam
+ * 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.
  *
 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
@@ -44,22 +61,18 @@ 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':
@@ -73,7 +86,7 @@ static int alex_options (int argc, char **argv)
                     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,11 +114,10 @@ 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
@@ -112,32 +125,38 @@ int main (int argc, char **argv )
 #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 );
-            }
+    else while (--argc > 0)
+        if (**++argv != '-' && **argv)
+        {
+            ++no;
+            
+            i = read_file (*argv, dfa);
+            if (i)
+                return i;
+            dfa_mkstate (dfa);
+
+#ifdef MEMDEBUG
+    imemstat();
+#endif
+        }
+    dfa_delete (&dfa);
 #ifdef 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;