作者(不是我)信息:
華南理工大學(xué)軟件學(xué)院本科07級(jí)(現(xiàn)大二)
進(jìn)入大學(xué)前玩過(guò)幾個(gè)星期pascal,高考后的暑假重新學(xué)編程
程序信息:(點(diǎn)擊這里下載)
學(xué)習(xí)C++一年后的作品。
內(nèi)含所有代碼,以及VC++工程文件。
一個(gè)程序,輸入只有匹配沒(méi)有捕獲的正則表達(dá)式,輸入被匹配的字符串,輸出字符串中符合正則表達(dá)式要求的部分。
支持括號(hào)改變優(yōu)先級(jí),[字符集]和[^字符集],少量轉(zhuǎn)義(\d等),循環(huán)(+*?),沒(méi)有捕獲
輸入輸出(紅色部分為用戶輸入的內(nèi)容):
請(qǐng)輸入正則表達(dá)式 : /\*([^\*]|\*+[^\*/])*\*+/
請(qǐng)輸入所要匹配的字符串 : a//a///*\\nab**abc**//*
a//a//【/*\\nab**abc**/】/*
算法簡(jiǎn)要:正則表達(dá)式->語(yǔ)法樹(shù)->ε-NFA->NFA->DFA->連通矩陣。
使用遞歸向下法判斷輸入的正則表達(dá)式的合法性并轉(zhuǎn)換為樹(shù)結(jié)構(gòu),其后轉(zhuǎn)成狀態(tài)機(jī)。
posted on 2008-11-08 06:44
陳梓瀚(vczh) 閱讀(4942)
評(píng)論(21) 編輯 收藏 引用 所屬分類:
其他