diff options
-rw-r--r-- | nfa.py | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -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) |