-
大小: 180KB文件類型: .doc金幣: 1下載: 0 次發(fā)布日期: 2021-06-03
- 語言: 其他
- 標(biāo)簽: 編譯原理??正規(guī)式NFA??正規(guī)文法??
資源簡介
(1)正規(guī)文法轉(zhuǎn)正規(guī)式:
本程序的數(shù)據(jù)結(jié)構(gòu)是string類的字符串存儲變量,首先,讀入的是3型文法,即正規(guī)文法,關(guān)于文法的檢驗(yàn)這里就不再進(jìn)行(因?yàn)榈谝粋€實(shí)驗(yàn)里已經(jīng)實(shí)現(xiàn)了),讀入的還有一個flag,flag為0即為左線性,為1為右線性,對讀入的文法先進(jìn)行第一次歸類,即正規(guī)式左部相同的放在一起,本程序使用vector容器實(shí)現(xiàn)的對象放置,然后對所有的沒有外部依賴的元素進(jìn)行整合,最后依據(jù)沒有外部依賴的整合后的表達(dá)式對其他的正規(guī)文法進(jìn)行轉(zhuǎn)換,最終得到轉(zhuǎn)換結(jié)果。
(2)正規(guī)式NFA
本程序有很多數(shù)據(jù)結(jié)構(gòu),但最終的目的數(shù)據(jù)結(jié)構(gòu)是存儲轉(zhuǎn)化好的NFA圖的單元cell,里面包含起點(diǎn)、終點(diǎn)、邊數(shù)以及邊集合。
先讀入正規(guī)式,并對正規(guī)式進(jìn)行合法檢測,將正規(guī)式中填入連接符號“+”,然后將其轉(zhuǎn)化成后綴表達(dá)式,根據(jù)后綴表達(dá)式,對每一個操作符和操作數(shù)進(jìn)行處理,處理的數(shù)據(jù)結(jié)構(gòu)為cell類型的堆棧,處理完后,將最終棧內(nèi)唯一的目的cell元素出棧,最后將其用二維數(shù)組的形式展現(xiàn)出來。
輸入文件樣例:
a($|((a|d)(a|d)*))
代碼片段和文件信息
- 上一篇:ListView自定義Item
- 下一篇:DFA的最小化 完整可運(yùn)行代碼
評論
共有 條評論