[原始碼和文件分享]基於swift的詞法分析程式
一、編寫環境
-
OS X 10.11.6
-
Xcode7.3.1
-
Swift2.2
二、大致過程
計算正則式:
-
讀入正則表示式
-
對正則表示式處理、建圖、生成 ε-NFA
-
將 ε-NFA 去除空節點、轉化為 NFA
-
將 NFA 轉化為 DFA
-
對 DFA 圖進行遍歷每個節點,獲取到每個節點通過某個字元到達哪下一個狀態, 並找到終態、構造 DFA 表、輸出顯示
驗證字串:
-
在成功通過正則表示式構建 DFA 圖的基礎上,讀入任意字串 從字串第一個字元、DFA 圖的第一個節點開始
-
判斷是否有當前的字串的字元可以使當前的 DFA 圖節點走到下一個節點
-
若有,則走向下一個節點,重複 2 操作,若無,則返回 false
-
當字串從頭到尾監測完成後,判斷當前所在節點是否是終態節點,若是,則返 回 true,反之則返回 false
三、詳細過程
3.1 正則表示式->ε-NFA
- 字符集
參考文件和完整的文件和原始碼下載地址:
https://www.write-bug.com/article/1356.html
相關推薦
[原始碼和文件分享]基於swift的詞法分析程式
一、編寫環境 OS X 10.11.6 Xcode7.3.1 Swift2.2 二、大致過程 計算正則式: 讀入正則表示式 對正則表示式處理、建圖、生成 ε-NFA 將 ε-NFA 去除空節點、轉化為 NFA 將
[原始碼和文件分享]基於JAVA實現的基於DFA的詞法分析程式
1 實驗目的 根據自己確定的正規表示式,編寫、除錯一個詞法分析程式,對語句進行詞法分析,從而更好理解詞法分析原理。 2 內容描述 此程式用java編寫。程式讀取一個文字檔案,並對其中的內容進行詞法分析,此程式實現了對java程式簡單的詞法識別,可識別一部分保留字、識別符號、操作符,一部分
[原始碼和文件分享]基於Python實現的論壇帖子情感分析
一、課程專案 Scuinfo文字分類分析 二、專案類容 爬取川大匿名社群SCUinfo在一段時間內的帖子,對其進行情感分類分析,包括情緒分類(積極,消極),帖子內容關聯分析等。 三、個人工作完成報告 3.1 工作概述 負責資料收集、預處理以及簡單的情感分析 3.2 爬蟲方
[原始碼和文件分享]基於有限自動機的詞法分析器構造
一、目標 本次實驗的主要目的是對自定義的程式語言的詞法分析器程式構造,我從 C 語言當中選擇了部分具有代表性的子集,實現詞法分析器,主要是對編譯原理課程中學習的從正則達式轉化為 NFA,再從 NFA 轉化為 DFA 以及後續的程式碼生成的過程有更深刻的認識。同時,也希望對於在編譯原理課程中所體現
[原始碼和文件分享]基於LL1文法的語法分析
一、目標 本次實驗的目的是對編譯器進行詞法分析的過程進行模擬,我選擇了在實際中更為通用的自底向上的詞法分析器的分析過程,最終產生規約序列。對於LR(0)和LR(1)問題,我的程式對於LR(0)和LR(1)是通用的,因為只要給出合法的parsing table和上下文無關文法, 程式就能進行相應的
[原始碼和文件分享]基於Vue + Node + MongoDB的響應式藥品商城系統的分析與設計
摘要 隨著科學技術的不斷髮展,中國的傳統行業已經受到了網際網路浪潮的不斷衝擊,在將來很大一部分會被網際網路所取代。在傳統的醫藥行業,傳統的藥品銷售方式都是實體藥店銷售,不僅成本高,還會受到時間、空間的限制,加上藥店自身經營管理手段的落後,該銷售模式在將來可能退出如今的市場經濟。想要有所突破,提高
[原始碼和文件分享]基於python的B站彈幕資料分析(爬蟲+視覺化)
python—B站彈幕資料分析 1 背景 在視訊網站上,一邊看視訊一邊發彈幕已經是網友的習慣。B站就是其中一個比較出名的彈幕網站,許多年輕人都喜歡逛B站,看喜歡的動漫亦或某些UP主做的一些剪輯。本專案,就是對B站彈幕資料進行分析。選取分析的物件是B站上一部國漫《全職高手》。 2 環境的安
[原始碼和文件分享]基於Python的Pygame庫實現的仿微信遊戲中的飛機大戰小遊戲
不知大家是否還記得當時微信上風靡一時的打飛機小遊戲,通過控制我方飛機的上下左右移動,發射子彈來擊毀敵機,增加得分。這是一款簡單操作易上手又很有趣味性的遊戲,我使用python作為基本語言,利用pygame仿照微信版本完成了這款低配版飛機大戰遊戲。 我方飛機會按時的不斷髮射子彈,玩家通過上下左右的方向鍵來躲避
[原始碼和文件分享]基於WIN32彙編實現的仿Windows計算器
使用Win32程式設計設計一個功能及介面風格類似於Windows計算器的計算器程式,只要求實現標準型計算器。 主要實現的功能:包含基本的四則運算、倒數運算、平方根運算。並支援儲存區的儲存、清除、調出、累加等功能。 關鍵詞:win32,Windows計算器,彙編,四則運算,倒數運算,平方根運算
[原始碼和文件分享]基於C++的資料庫可擴容雜湊
一、專案介紹 主要涉及可擴充套件雜湊在資料庫中的應用。 讀入由 tpc-h 生成的 lineitem.tbl,以 L_ORDERKEY 屬性作為鍵值將記錄放入合適的雜湊桶內。讀入測試檔案 testinput.in 內的資料,資料中包含多個需要查詢的鍵值。將通過鍵值查詢得到的所有記錄都輸出到
[原始碼和文件分享]基於Newban的Nancyj字型Email簽名工具
一 需求分析 Newban是一個輸出mail簽名的工具,能夠在終端將字元進行“圖形化”輸出。本程式就是用所給字型檔案,在螢幕上輸出該字型的簽名,並要求實現如下功能: 能設定輸出寬度 能設定輸出對齊方式,可以設定左對齊、居中對齊、右對齊 能指定字型 基本要
[原始碼和文件分享]基於C語言實現的流星雨模擬課程設計
一、課程設計內容及要求 程式模擬一組流星飛向地面的情景。地面用多行#來表示,流星用大寫字母不表示。程式產生一組流星(比如10個),從螢幕頂部下降飛向地面。一組流星中,每個流星的字元顏色是隨機的,下降的位置是隨機的,下降的速度也是隨機的。一個流星下落只能去掉一個#號,當最後一行地面有#被去掉時,程
[原始碼和文件分享]基於C++的圖書管理系統
一、需求分析 圖書管理系統功能如下: 新增書籍 刪除書籍:當系統中存在此書時,刪除該書籍,否則提示使用者刪除失敗 借閱書籍:當系統中存在此書且未被借閱時,將書的狀態設定為“借出”,否則提示使用者借閱失敗 歸還書籍:當系統中存在未歸換的該書時,將書的狀態設
[原始碼和文件分享]基於C++的多項式計算器
一、 實驗環境 1.1 程式語言和開發工具 語言採用ANSI C++(C++11) 開發工具:vim,g++,git,Visual Stdio(用於生成exe檔案) 1.2 編碼規範 編碼規範中所有沒有涉及到的內容,參見googlestyle C++
[原始碼和文件分享]基於C++的學生選課管理系統的設計與實現
一 需求分析 系統新增課程:將一門課程加入到系統資料中。課程提交重複時給出提示資訊 系統刪除課程:以課程編號為索引刪除課程。系統無此課程時給出提示 課程新增學生:把學生的姓名、學號等資訊加入到課程中。學號重複時給出提示資訊 課程刪除學生:以學號為索引從課程中
[原始碼和文件分享]基於C++的物資管理系統的設計與實現
一 需求分析 程式需實現以下功能: 新物資資訊錄入(編號、名稱、庫存) 查詢已錄入的所有物資資訊(編號或名稱為索引) 新增物資資訊(編號或名稱為索引) 領物資並生成領料單(編號或名稱為索引) 瀏覽領料單或物資庫存清單 物資資訊儲存,建
[原始碼和文件分享]基於C++的庫存管理系統設計與實現
一 需求分析 1.1 總體要求 運用面向物件程式設計知識,利用C++語言設計和實現一個“庫存管理系統設計”,主要完成對商品的銷售、統計和簡單管理。在實現過程中,需利用面向物件程式設計理論的基礎知識,充分體現出C++語言關於類、繼承和封裝等核心概念,每一個類應包含資料成員和成員函式。 1.
[原始碼和文件分享]基於C++的平面形狀編輯器的設計與實現
一 需求分析 參考如下給出的類層次關係,實現一個平面上的形狀編輯程式序。要求如下: 按照下面類圖給出的層次關係來定義類 所有形狀支援無引數構造,有引數構造,拷貝構造,析構 所有形狀支援平移操作,需要過載 operator+ 所有形狀(除去無意義的)
[原始碼和文件分享]基於C++的民航訂票系統的設計與實現
一、需求分析 設計一個民航管理系統,使更廣大的使用者群體可以藉助這個平臺訂飛機票。 C++作為一個面向物件的語言,利用多型性和封裝性可以更好地表達出這些功能,相比 JAVA 等語言,C++具STL,可以表達更強的封裝性。 二、程式的主要功能 登入和註冊使用者,管理員的登入
[原始碼和文件分享]基於C++的簡易資料庫的開發與測試
一 開發說明 1.1 總體說明 本次專案以c++語言編寫簡易資料庫,資料庫為<key:value>的簡單形式,在本專案中,限定key為整數且不考慮溢位問題,value為字串型別,不可為空,長度最長為19(其中第20位為\0字元)。主體程式面向使用者提供四種主要操作,分別為查詢、新