summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sotoudeh <matthew@masot.net>2024-03-20 14:19:03 -0700
committerMatthew Sotoudeh <matthew@masot.net>2024-03-20 14:19:03 -0700
commitc0a11df4f70b4399d68ec43dd3ed6b80b6ceb03e (patch)
tree0c993163d82f157a974ebfa3f526bd2654298286
parent90fa8c8f84ffa25b26733edc196e66ec329e7924 (diff)
fix dotviz printingHEADmaster
-rw-r--r--nfa.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/nfa.py b/nfa.py
index 8dfe6f1..af76936 100644
--- a/nfa.py
+++ b/nfa.py
@@ -216,10 +216,19 @@ class NFA:
f.write("digraph mygraph {\n")
for state, transitions in self.transitions.items():
if state in self.accepting:
- f.write(f"node [shape = doublecircle]; {rename(state)};")
+ print(state, "is accepting")
+ f.write(f"node [shape = doublecircle]; {rename(state)};\n")
else:
- f.write(f"node [shape = circle]; {rename(state)};")
+ print(state, "is NOT accepting")
+ f.write(f"node [shape = circle]; {rename(state)};\n")
+ for state, transitions in self.transitions.items():
for k, vs in transitions.items():
for v in vs:
f.write(f"{rename(state)} -> {rename(v)} [label=\"{k}\"]\n")
f.write("}\n")
+
+ def run(self, string):
+ states = self.init_set()
+ for c in string:
+ states = self.transition_set(states, c)
+ return bool(states & self.accepting)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback