diff options
author | Matthew Sotoudeh <matthew@masot.net> | 2024-03-20 14:19:03 -0700 |
---|---|---|
committer | Matthew Sotoudeh <matthew@masot.net> | 2024-03-20 14:19:03 -0700 |
commit | c0a11df4f70b4399d68ec43dd3ed6b80b6ceb03e (patch) | |
tree | 0c993163d82f157a974ebfa3f526bd2654298286 | |
parent | 90fa8c8f84ffa25b26733edc196e66ec329e7924 (diff) |
-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) |