資源簡介
python實現正規式轉換成NFA、NFA轉換成DFA、DFA轉換成MFA算法,并實現畫出三類形圖,可以在用戶圖形界面顯示,也可以在文件夾中顯示。

代碼片段和文件信息
#-*-coding:utf-8?-*-
from?os?import?popen
import?time
class?Automata:
????“““自動機類“““
????def?__init__(self?language?=?set([‘0‘?‘1‘])):
????????#五元組:狀態集,開始狀態,結束狀態集,轉化集,語言表(默認0,1)
????????self.states?=?set()
????????self.startstate?=?None
????????self.finalstates?=?[]
????????self.transitions?=?dict()
????????self.language?=?language
????@staticmethod
????def?epsilon():
????????return?“:e:“
????def?setstartstate(self?state):
????????self.startstate?=?state
????????self.states.add(state)
????def?addfinalstates(self?state):
????????if?isinstance(state?int):
????????????state?=?[state]
????????for?s?in?state:
????????????if?s?not?in?self.finalstates:
????????????????self.finalstates.append(s)
????def?addtransition(self?fromstate?tostate?inp):
????????if?isinstance(inp?str):
????????????inp?=?set([inp])
????????self.states.add(fromstate)
????????self.states.add(tostate)
????????if?fromstate?in?self.transitions:
????????????if?tostate?in?self.transitions[fromstate]:
????????????????self.transitions[fromstate][tostate]?=?self.transitions[fromstate][tostate].union(inp)
????????????else:
????????????????self.transitions[fromstate][tostate]?=?inp
????????else:
????????????self.transitions[fromstate]?=?{tostate?:?inp}
????def?addtransition_dict(self?transitions):
????????for?fromstate?tostates?in?transitions.items():
????????????for?state?in?tostates:
????????????????self.addtransition(fromstate?state?tostates[state])
????def?gettransitions(self?state?key):
????????if?isinstance(state?int):
????????????state?=?[state]
????????trstates?=?set()
????????for?st?in?state:
????????????if?st?in?self.transitions:
????????????????for?tns?in?self.transitions[st]:
????????????????????if?key?in?self.transitions[st][tns]:
????????????????????????trstates.add(tns)
????????return?trstates
????def?getEClose(self?findstate):
????????allstates?=?set()
????????states?=?set([findstate])
????????while?len(states)!=?0:
????????????state?=?states.pop()
????????????allstates.add(state)
????????????if?state?in?self.transitions:
????????????????for?tns?in?self.transitions[state]:
????????????????????if?Automata.epsilon()?in?self.transitions[state][tns]?and?tns?not?in?allstates:
????????????????????????states.add(tns)
????????return?allstates
????def?display(self):
????????print?“states:“?self.states
????????print?“start?state:?“?self.startstate
????????print?“final?states:“?self.finalstates
????????print?“transitions:“
????????for?fromstate?tostates?in?self.transitions.items():
????????????for?state?in?tostates:
????????????????for?char?in?tostates[state]:
????????????????????print?“??“fromstate?“->“?state?“on?‘“+char+“‘“
????????????print
????def?getPrintText(self):
????????text?=?“language:?{“?+?“?“.join(self.language)?+?“}\n“
????????text?+=?“states:?{“?+?“?“.join(map(strself.states))?+?“}\n“
????????text?+=?“start?state:?“?+?str(self.startstate)?+?“\n“
????????text?+=?“final?states:?{“?+?“?“.join(map(strself.finalstates))?+?“}\n“
???????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-11-21?18:24??automata-from-regex-master\
?????目錄???????????0??2013-04-08?11:04??automata-from-regex-master\screenshots\
?????文件???????72950??2013-04-08?11:04??automata-from-regex-master\screenshots\screenshot_DFA.png
?????目錄???????????0??2017-11-26?11:19??__MACOSX\
?????目錄???????????0??2017-11-26?11:19??__MACOSX\automata-from-regex-master\
?????目錄???????????0??2017-11-26?11:19??__MACOSX\automata-from-regex-master\screenshots\
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\screenshots\._screenshot_DFA.png
?????文件???????81494??2013-04-08?11:04??automata-from-regex-master\screenshots\screenshot_NFA.png
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\screenshots\._screenshot_NFA.png
?????文件???????56031??2013-04-08?11:04??automata-from-regex-master\screenshots\screenshot_minDFA.png
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\screenshots\._screenshot_minDFA.png
?????文件???????65959??2013-04-08?11:04??automata-from-regex-master\screenshots\screenshot_mainWindow.png
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\screenshots\._screenshot_mainWindow.png
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\._screenshots
?????文件????????5977??2017-11-21?19:13??automata-from-regex-master\graphmdfa.png
?????文件???????19178??2017-11-21?20:01??automata-from-regex-master\AutomataTheory.py
?????文件?????????212??2017-11-21?20:01??__MACOSX\automata-from-regex-master\._AutomataTheory.py
?????文件???????14195??2017-11-21?19:13??automata-from-regex-master\graphdfa.png
?????文件????????2007??2013-04-08?11:04??automata-from-regex-master\README.md
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\._README.md
?????文件????????1000??2017-11-21?20:01??automata-from-regex-master\cli.py
?????文件?????????212??2017-11-21?20:01??__MACOSX\automata-from-regex-master\._cli.py
?????文件??????????12??2013-04-08?11:04??automata-from-regex-master\.gitignore
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\._.gitignore
?????文件???????33772??2017-11-21?19:13??automata-from-regex-master\graphnfa.png
?????文件???????17382??2017-11-21?18:24??automata-from-regex-master\AutomataTheory.pyc
?????目錄???????????0??2013-04-08?11:04??automata-from-regex-master\graphs\
?????文件???????18541??2013-04-08?11:04??automata-from-regex-master\graphs\graph_DFA.png
?????目錄???????????0??2017-11-26?11:19??__MACOSX\automata-from-regex-master\graphs\
?????文件?????????212??2013-04-08?11:04??__MACOSX\automata-from-regex-master\graphs\._graph_DFA.png
?????文件????????6285??2013-04-08?11:04??automata-from-regex-master\graphs\graph_minDFA.png
............此處省略9個文件信息
評論
共有 條評論