]> granicus.if.org Git - re2c/commitdiff
'--dump-adfa': fixed pretty-printing of tag commands.
authorUlya Trofimovich <skvadrik@gmail.com>
Wed, 12 Apr 2017 11:06:17 +0000 (12:06 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Wed, 12 Apr 2017 11:06:17 +0000 (12:06 +0100)
re2c/src/adfa/dump.cc
re2c/src/dfa/dump.cc
re2c/src/dfa/dump.h

index b1fbf5963a93273f96e93aaf6592ac38dbba1f5f..8a970e696b0e3c4fd7d129196c607bd24e2057a5 100644 (file)
@@ -1,26 +1,11 @@
 #include <stdio.h>
 
+#include "src/dfa/dump.h"
 #include "src/adfa/dump.h"
 
 namespace re2c
 {
 
-static void dump_adfa_tcmd(const tcmd_t *cmd)
-{
-       if (!cmd) return;
-       fprintf(stderr, "/");
-       for (const tcmd_t *p = cmd; p; p = p->next) {
-               const tagver_t l = p->lhs, r = p->rhs;
-               if (r == TAGVER_BOTTOM) {
-                       fprintf(stderr, "%d%s ", l, "&darr;");
-               } else if (r == TAGVER_CURSOR) {
-                       fprintf(stderr, "%d%s ", l, "&uarr;");
-               } else {
-                       fprintf(stderr, "%d=%d ", l, r);
-               }
-       }
-}
-
 static void dump_adfa_range(uint32_t lower, uint32_t upper)
 {
        fprintf(stderr, "%u", lower);
@@ -40,7 +25,7 @@ void dump_adfa(const DFA &dfa)
        fprintf(stderr,
                "  n [shape=point]"
                "  n -> n%p [style=dotted label=\"", (void*)dfa.head);
-       dump_adfa_tcmd(dfa.tcpool[dfa.tags0]);
+       dump_tcmd(dfa.tcpool[dfa.tags0]);
        fprintf(stderr, "\"]\n");
 
        for (const State *s = dfa.head; s; s = s->next) {
@@ -65,7 +50,7 @@ void dump_adfa(const DFA &dfa)
                                        name ? name->c_str() : "/", dfa.finvers[t]);
                        }
                }
-               dump_adfa_tcmd(dfa.tcpool[s->go.tags]);
+               dump_tcmd(dfa.tcpool[s->go.tags]);
                fprintf(stderr, "\" %s]\n", attr);
 
                if (action == Action::ACCEPT) {
@@ -73,7 +58,7 @@ void dump_adfa(const DFA &dfa)
                        for (uint32_t i = 0; i < accept.size(); ++i) {
                                fprintf(stderr, "  n%p -> n%p [label=\"",
                                        (void*)s, (void*)accept[i].first);
-                               dump_adfa_tcmd(dfa.tcpool[accept[i].second]);
+                               dump_tcmd(dfa.tcpool[accept[i].second]);
                                fprintf(stderr, "\" style=dotted]\n");
                        }
                }
@@ -95,7 +80,7 @@ void dump_adfa(const DFA &dfa)
                        }
                        fprintf(stderr, "  n%p -> n%p [label=\"", (void*)s, (void*)x->to);
                        if (eat) dump_adfa_range(lb, x->ub);
-                       dump_adfa_tcmd(dfa.tcpool[x->tags]);
+                       dump_tcmd(dfa.tcpool[x->tags]);
                        fprintf(stderr, "\" %s]\n", attr);
                }
        }
index 3e353828935043cc9ed35ae9ad459581cb78edfd..4d2fe704764322563b1a3312bc834f46b5607116 100644 (file)
@@ -6,7 +6,6 @@ namespace re2c
 {
 
 static void dump_tcmd_or_tcid(tcmd_t *const *tcmd, const tcid_t *tcid, size_t sym, const tcpool_t &tcpool);
-static void dump_tcmd(const tcmd_t *p);
 static const char *tagname(const Tag &t);
 static void dump_tags(const Tagpool &tagpool, size_t ttran, size_t tvers);
 
index b643e39880ed64b048ac00f152506b2989afe6a7..d323bb156e57f714a2e9920ea0d7ec6129b946dd 100644 (file)
@@ -28,6 +28,7 @@ struct dump_dfa_t
 };
 
 void dump_dfa(const dfa_t &dfa);
+void dump_tcmd(const tcmd_t *p);
 
 } // namespace re2c