summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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