資源簡介
(1)正規文法轉正規式:
本程序的數據結構是string類的字符串存儲變量,首先,讀入的是3型文法,即正規文法,關于文法的檢驗這里就不再進行(因為第一個實驗里已經實現了),讀入的還有一個flag,flag為0即為左線性,為1為右線性,對讀入的文法先進行第一次歸類,即正規式左部相同的放在一起,本程序使用vector容器實現的對象放置,然后對所有的沒有外部依賴的元素進行整合,最后依據沒有外部依賴的整合后的表達式對其他的正規文法進行轉換,最終得到轉換結果。
(2)正規式NFA
本程序有很多數據結構,但最終的目的數據結構是存儲轉化好的NFA圖的單元cell,里面包含起點、終點、邊數以及邊集合。
先讀入正規式,并對正規式進行合法檢測,將正規式中填入連接符號“+”,然后將其轉化成后綴表達式,根據后綴表達式,對每一個操作符和操作數進行處理,處理的數據結構為cell類型的堆棧,處理完后,將最終棧內唯一的目的cell元素出棧,最后將其用二維數組的形式展現出來。
輸入文件樣例:
a($|((a|d)(a|d)*))
代碼片段和文件信息
- 上一篇:ListView自定義Item
- 下一篇:DFA的最小化 完整可運行代碼
評論
共有 條評論