]> granicus.if.org Git - flex/commitdiff
More tabels work.
authorJohn Millaway <john43@users.sourceforge.net>
Wed, 21 Aug 2002 06:54:11 +0000 (06:54 +0000)
committerJohn Millaway <john43@users.sourceforge.net>
Wed, 21 Aug 2002 06:54:11 +0000 (06:54 +0000)
gen.c
nfa.c

diff --git a/gen.c b/gen.c
index 505898b3859dc95ab301a778d571b484aaa6a9ec..01de24f0ed24608257d0ebf2644092272dbd8d7e 100644 (file)
--- a/gen.c
+++ b/gen.c
@@ -246,6 +246,49 @@ void genctbl()
        }
 
 
+/* mkecstbl - Make equivalence-class tables. */
+
+struct yytbl_data *mkecstbl (void)
+{
+       register int i, j;
+       int     numrows;
+       struct yytbl_data *tbl = 0;
+       int32_t *tdata = 0;
+
+       tbl = yytbl_data_create (YYT_ID_EC);
+       tbl->t_flags |= YYT_DATA32;
+       tbl->t_hilen = 0;
+       tbl->t_lolen = csize;
+
+       tbl->t_data = tdata = (int32_t *) calloc (tbl->t_lolen, sizeof (int32_t));
+
+       for (i = 1; i < csize; ++i) {
+               if (caseins && isupper (i))
+                       ecgroup[i] = ecgroup[tolower (i)];
+
+               ecgroup[i] = ABS (ecgroup[i]);
+               tdata[i] = ecgroup[i];
+       }
+
+       if (trace) {
+               fputs (_("\n\nEquivalence Classes:\n\n"), stderr);
+
+               numrows = csize / 8;
+
+               for (j = 0; j < numrows; ++j) {
+                       for (i = j; i < csize; i = i + numrows) {
+                               fprintf (stderr, "%4s = %-2d", readable_form (i), ecgroup[i]);
+
+                               putc (' ', stderr);
+                       }
+
+                       putc ('\n', stderr);
+               }
+       }
+
+       return tbl;
+}
+
 /* Generate equivalence-class tables. */
 
 void genecs()
diff --git a/nfa.c b/nfa.c
index 5b4573a1377e6d63c2622a4d0e4900c3ca2d0cde..1bd712c2d2073758a7d1c70eef7e3b19af44d8e3 100644 (file)
--- a/nfa.c
+++ b/nfa.c
@@ -225,9 +225,10 @@ int mach, variable_trail_rule, headcnt, trailcnt, pcont_act;
 
        sprintf( action_text, "case %d:\n", num_rules );
        add_action( action_text );
-       sprintf( action_text, "/* rule %d can match eol = %s*/\n",
-                       num_rules, rule_has_nl[num_rules]? "true":"false");
-       add_action( action_text );
+       if ( rule_has_nl[num_rules] ){
+               sprintf( action_text, "/* rule %d can match eol */\n", num_rules);
+               add_action( action_text );
+       }
 
 
        if ( variable_trail_rule )