青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    各位讀者們,《構造正則表達式引擎》新鮮出爐啦!

    《構造正則表達式引擎》
    這篇文章描述了純匹配正則表達式和具有高級功能(正向預查,反向預查,匿名捕獲,命名捕獲,命名檢查和貪婪循環(huán)等)的正則表達式各自用來匹配正則表達式的算法。如果大家在書寫好的正則表達式的時候出現(xiàn)了麻煩,或者在開發(fā)自己的正則表達式的時候遇到障礙,那不妨讀一讀這篇文章。不過對于沒讀過下面這篇文章的朋友,如果不是很熟悉編譯原理關于DFA和NFA的知識,那么建議首先閱讀下面這篇文章。

    《構造可配置詞法分析器》
    這篇文章描述了如何從簡單的正則表達式構造ε-NFA,并且一步一步轉換到DFA的算法,而且還提出了一種可配置詞法分析器的可能的實現(xiàn)方法。學習《編譯原理》的朋友們,如果在狀態(tài)機那里遇到什么問題的話,那么不妨讀一讀這篇文章。

    上面這兩篇文章是我在學習《編譯原理》之后開發(fā)正則表達式引擎的心得體會,在這里與大家分享,共同進步。
posted on 2008-05-21 23:06 陳梓瀚(vczh) 閱讀(109994) 評論(36)  編輯 收藏 引用 所屬分類: 作品

評論:
# re: 《構造正則表達式引擎》新鮮出爐啦! 2008-05-21 23:30 | 空明流轉
很好很強大的矬人,哇咔咔  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2008-05-22 00:15 | foxtail
果然經(jīng)典哈 最后對學習方法的見解對我很有幫助  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2008-05-22 05:16 | Gohan
向您學習嘍  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2008-07-01 00:35 | 白開水
詞法分析部分寫好了,不過擴展正則表達式部分懶的寫,想先寫語法分析器了。
用正則表達式的引擎提供了一套接口給詞法分析器。測試了下
測試的內(nèi)容如下,然后自己把一份代碼粘帖了10幾次,擴充到3MB,然后分析了下。大約44W標記每秒

AddMoreType( scanner, L"ID", L"[_a-zA-Z][a-zA-Z0-9_]*" );
AddMoreType( scanner, L"ID.IF", L"if" );
AddMoreType( scanner, L"ID.BOOL", L"true|false" );
AddMoreType( scanner, L"ID.ELSE", L"else" );
AddMoreType( scanner, L"ID.WHILE", L"while" );
AddMoreType( scanner, L"ID.DO", L"do" );
AddMoreType( scanner, L"ID.BREAK", L"break" );
AddMoreType( scanner, L"ID.CONTINUE", L"continue" );
AddMoreType( scanner, L"ID.FOR", L"for" );
AddMoreType( scanner, L"OPERATOR", L"\\+|\\-|\\*|/|%|<|>|=|<=|>=|==|!=|!|&&|\\|\\||\\^|;|\\(|\\)|\\{|\\}|,|\\[|\\]" );
AddMoreType( scanner, L"OPERATOR.NOT", L"!" );
AddMoreType( scanner, L"OPERATOR.ADDMINUS", L"\\+|\\-" );
AddMoreType( scanner, L"OPERATOR.MULDIVMOD", L"\\*|/|%" );
AddMoreType( scanner, L"OPERATOR.COMPARE", L"<|>|<=|>=|==|!=" );
AddMoreType( scanner, L"OPERATOR.ASSIGN", L"=" );
AddMoreType( scanner, L"OPERATOR.AND", L"&&" );
AddMoreType( scanner, L"OPERATOR.OR", L"\\|\\|" );
AddMoreType( scanner, L"OPERATOR.XOR", L"\\^" );
AddMoreType( scanner, L"OPERATOR.LEFT", L"\\(" );
AddMoreType( scanner, L"OPERATOR.RIGHT", L"\\)" );
AddMoreType( scanner, L"OPERATOR.BEGIN", L"\\{" );
AddMoreType( scanner, L"OPERATOR.END", L"\\}" );
AddMoreType( scanner, L"OPERATOR.SPLITER", L"," );
AddMoreType( scanner, L"OPERATOR.ARRBEGIN", L"\\[" );
AddMoreType( scanner, L"OPERATOR.ARREND", L"\\]" );
AddMoreType( scanner, L"OPERATOR.FINISH", L";" );
AddMoreType( scanner, L"NUM", L"[0-9]+" );
AddMoreType( scanner, L"REAL", L"([0-9]+\\.[0-9]*)|([0-9]*\\.[0-9]+)" );
AddMoreType( scanner, L"STRING", L"\"([^\\\\\"]|\\\\\\.)*\"" );
AddMoreType( scanner, L"COMMENT.discard", L"#[^\\n]*" );
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2008-07-01 00:53 | 白開水
日哦,我寫了N多的評論,一下就沒了。
正則表達式的引擎的擴展部分,我還是沒寫```,人懶沒辦法。過幾天最后幾門考試考完了后開始看看語法分析部分了。

寫這份代碼總出過一個大BUG,一個小BUG,大BUG是自己一邊調(diào)試一邊想別的,結果一開始調(diào)試了6個小時,后來又調(diào)試3個小時總算搞定``,出錯的地方很簡單就是使用iterator的時候,next到下一個元素的時候,數(shù)組變長用了realloc后,指針變了```。哎,我郁悶到了。后來看設計模式的書,發(fā)現(xiàn)就講了這點,刪除和重新分配必須得保證那iterator一直正確才行```,羨慕用c++的,我用C,發(fā)現(xiàn)設計模式有些地方看不懂,特別是代碼部分。

小BUG是昨天晚上出的,結果雖然都出來了,突然發(fā)現(xiàn)標記都錯了。```,花了兩個小時左右搞定。

算了不寫了```,小v的文章簡單易懂,大家該多看看。
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2008-07-01 05:10 | 陳梓瀚(vczh)
設計模式里面的類和接口都是C語言里面沒有的概念,模擬起來也比直接支持類的語言麻煩。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2008-10-03 06:14 | 免費小說
仔細拜讀,簡單易懂。多謝  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦![未登錄] 2008-12-29 09:37 | l
<b>sad</b>  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2009-03-06 10:27 | Acumon
不錯,建議跟libpcre對測一下~  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦![未登錄] 2009-04-11 01:17 | jans2002
謝謝樓主這樣的精品文章。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2009-07-23 01:14 | 林林
跟大俠請教一個問題:如果讓引擎支持unicode的話,只能用分類壓縮法。
例如如果只有一個字符單元為:a-z,
那么,內(nèi)部字符集將被分割為:
編號1、0-96,
編號2、97-122,
編號3、123-65535,
但是有一個問題是在搜索的時候,如何才能快速的得到字符到字符集編號的轉換呢?如果用您提到的一張65535個字符的大表來映射的話,也太粗魯,太耗內(nèi)存了吧?有沒有什么更好的算法呢?那些有名的引擎是怎么做的呢,翻遍了internet沒有這方面的任何資料。不知道大俠有什么好的建議?  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2009-07-25 07:28 | 陳梓瀚(vczh)
@林林
65535*2不就128k,哪里粗魯,哪里太耗內(nèi)存了?其實一個程序同時存在的正則表達式是不多的。當然這是O(1),如果你實在想減少內(nèi)存,那就沒有這么快了,傳說中有一種數(shù)據(jù)結構叫線段樹。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2009-07-25 22:28 | ooseven
線段樹! 謝謝大俠的指點!
之所以覺得耗內(nèi)存是因為,我認為自己做正則引擎主要并不是用來做單純的詞法搜索的。因為現(xiàn)在正則引擎這么多,自己去做吃力又不討好。自己做的主要目的在于做詞法分析。現(xiàn)在的詞法分析引擎還非常難用的,象flex等,生成出來的代碼,看了想吐!完全不能接受這種風格的代碼入侵到我的工程中。而詞法分析是難于避免一個程序有多個分析引擎的。所以才會覺得耗費內(nèi)存。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-01-05 03:25 | sinservice
@ooseven
如果是自己的腳本引擎,完全可以手寫一個此法分析,簡單明了。
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-02-20 01:05 | aho
樓主,我悲劇啊,我畢業(yè)兩年了還要參考你在大學時期的文檔來進行正則引擎的實現(xiàn)。。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-02-20 02:05 | 陳梓瀚(vczh)
@aho
你這個名字……  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-02-23 07:06 | aho
@陳梓瀚(vczh)
寫得真好,讓師兄很汗顏啊~~不太敢相信你是大三時候?qū)懙模貏e是貪婪匹配算法那部分,補充了龍書的不足,正為怎么較優(yōu)雅地設計正則的擴展功能而發(fā)愁呢.

話說你推薦的那本《Parsing Techniques》真的這么好嗎~~?  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-03-01 20:52 | 陳梓瀚(vczh)
@aho
嗯,真的那么好。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 08:35 | thircese
<<構造可配置詞法分析器>>(詞法分析.doc)
"在處理這種有沖突的規(guī)則的時候,既可以報錯,也可以根據(jù)指定的優(yōu)先級進行挑選。"
能否解釋下"根據(jù)指定的優(yōu)先級進行挑選"?
在這例子里,
狀態(tài)AB讀入[^a-z]則識別出if,
讀入[a-z]則繼續(xù)識別標識符.
難道這就是"根據(jù)指定的優(yōu)先級進行挑選"?

還有, 字符轉字符類,有個問題.
舉一簡單例子, 就識別標識符和十六進制數(shù)的狀態(tài)圖.
識別標識符用到的字符集: [a-z]、[A-Z]、_、[0-9]
識別十六進制數(shù)(0x????)用到的字符集: [0-9]、[a-f]、[A-F]、x
當字符轉字符類的時候, 若當前字符為a, 那么該判定它屬于字符集[a-f],
還是判定它屬于字符集[a-z]?
請問怎么處理?

讓"神"費心了, 謝謝.
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 08:41 | thircese
詞法分析.doc 中的圖用什么畫啊?

"按照規(guī)則構造出四個DFA并將它們組合起來:"
按那圖, 標識符的長度豈不是只能為2?
1不行, 3 也不行?

  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 08:44 | thircese
"這個其實跟正則表達式本身有關。至于什么正則表達式可以達到這個效果這里就不深究了。"
能否說下"什么正則表達式可以達到這個效果"?
不想深究, 只想知道什么樣正則表達式, 就可以了.
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 08:49 | thircese
"123.ABC"
識別到"A"那里, 已經(jīng)說明輸入的字符串不合法, 直接報錯說"expected digit but alpha encountered."就得, 為何還要繼續(xù)分析"BC"?  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 08:53 | thircese
"我們都要做一些額外的工作"

"我們將無從知道一個記號被識別出來的確切時間"
有何矛盾?
能否詳細說明下?
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 08:57 | thircese
"行代表字符,列代表DFA的狀態(tài)"

c代字
s代當前態(tài)
t代目標態(tài)
下述的,哪個對?
s1 s2
c1 t1 t2
c2 t3 t4
----------
c1 c2
s1 t1 t2
s2 t3 t4  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 09:03 | thircese
"吞吐速度高達46萬記號/秒","只有10%的時間花在了DFA上,90%的時間花在了處理結果的工作上"
統(tǒng)計本身沒有代價(因統(tǒng)計而增加的開銷)?
不統(tǒng)計的話, 程序應該跑得更快吧?

另:
請問用什么工具或代碼來統(tǒng)計一個程序或代碼段的各種開銷(時、空)?
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 09:11 | thircese
正則 ==> ε-NFA ==> NFA ==> DFA
貌似文章沒有講如何"(E)BNF ==> 正則"?

(E)BNF ==> 正則 ==> ε-NFA ==> NFA ==> DFA
步驟太多!
能不能少點?比如
(E)BNF ==> DFA
  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 09:14 | thircese
有些圖的結束狀態(tài)是粗邊
有些圖的結束狀態(tài)是雙邊
一樣嗎?  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 10:23 | 陳梓瀚(vczh)
@thircese
1:如果您仔細看文章就會發(fā)現(xiàn),如果[a-f]存在,那么[a-z]是不存在的,存在
的只有[g-z]。
2:ENFA到DFA的步驟只能這么多,減少的話會讓一個算法變得非常復雜。
3:只要記錄一下開始跟結束的時間就可以記錄時間了,自己寫代碼做。
4:詞法分析那一節(jié)說的是一個中介狀態(tài)可以包含舊的若干個DFA的若干個終結狀態(tài),因此會有那些結論。
5:其他問題,請自行閱讀文章。所有與開發(fā)無關的問題我一概不解釋,請利用您的智商和您的數(shù)學水平自行推導,譬如說哪個正則表達式可以用來深究的問題。BTW,我畫圖用的是微軟公司偉大的照耀我們前進方向的全銀河系唯一一個不需要看幫助就可以繪制專業(yè)圖形的visio軟件。還有,如何從狀態(tài)機反著做出正則表達式不在這篇文章的討論范圍內(nèi)。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-21 11:26 | thircese
謝謝您為我的"弱智"問題費神.
不過,
"貌似文章沒有講如何"(E)BNF ==> 正則"?"
中的"(E)BNF"是指"(擴展)巴斯克范式"
而不是指狀態(tài)機ENFA哦!  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-07-23 21:30 | 陳梓瀚(vczh)
@thircese
有一些EBNF無法被轉換為正則,所以當然不存在EBNF到正則的轉換了。倘若這是一個可以被轉換為正則的EBNF,那那些非終結符肯定沒有遞歸引用,那么你可以逐個消除他們。譬如說a=b "."; b = "+"消除b的結果就是a="+" "."。最后剩下一條,就是正則表達式了。  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2011-08-04 03:29 | 孤獨劍客
有幸拜讀閣下兩篇文章,受益匪淺,謝過!  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦![未登錄] 2013-05-25 05:42 | steven
兩個鏈接都失效了,可以重新鏈接下?  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2013-05-25 08:43 | 陳梓瀚(vczh)
@steven
估計是bug,我發(fā)郵件給cppblog了  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦![未登錄] 2013-08-18 00:01 | 無名
下不了  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2014-09-13 21:47 | SCUT 11級
師兄啊  回復  更多評論
  
# re: 《構造正則表達式引擎》新鮮出爐啦! 2014-12-29 03:45 | jackkkk
最近一直在學習python,剛好做爬蟲的時候涉及到了正則表達式這一塊?。想弱弱的問一句有沒有可能用python來實現(xiàn)這個正則表達式引擎呢? 非常謝謝你。(不是不想用c++,而是想暫時先專注于python。)  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产视频观看一区| 国产精品国产三级国产普通话三级 | 国产欧美婷婷中文| 国产精品久久久久久久浪潮网站 | 精品二区视频| 久久精品视频亚洲| 久久久精品日韩欧美| 久久久综合精品| 欧美黄网免费在线观看| 免费久久99精品国产| 欧美日本在线视频| 国产精品一区一区| 亚洲高清电影| 亚洲视频一二三| 久久国产精品72免费观看| 麻豆精品传媒视频| 亚洲美女少妇无套啪啪呻吟| 亚洲特级毛片| 久久久国产精品一区| 欧美日韩高清在线一区| 国产视频一区三区| 99精品国产在热久久| 久久精品视频在线观看| 亚洲国产精品成人久久综合一区| 亚洲大片一区二区三区| 麻豆av一区二区三区久久| 亚洲国产日韩欧美综合久久| 亚洲四色影视在线观看| 另类尿喷潮videofree| 国产精品红桃| 亚洲精品偷拍| 美女图片一区二区| 亚洲永久精品国产| 日韩视频免费大全中文字幕| 欧美在线高清视频| 欧美日韩一区二区三区视频 | 久久精品国产69国产精品亚洲| 欧美顶级艳妇交换群宴| 午夜激情亚洲| 欧美手机在线视频| 日韩视频精品在线| 欧美刺激午夜性久久久久久久| 亚洲欧美日韩一区在线| 欧美日韩一区自拍| 日韩视频亚洲视频| 欧美国产视频在线| 久久精品欧美日韩| 国产日韩av在线播放| 亚洲男人影院| 亚洲视频网站在线观看| 欧美日韩影院| 一本色道久久综合狠狠躁篇的优点| 免费久久99精品国产自| 久久精品国产99| 国产亚洲一级| 欧美一区二区精品在线| 亚洲线精品一区二区三区八戒| 欧美日韩在线看| 亚洲午夜在线视频| 99精品国产在热久久下载| 欧美精品一区三区| 99精品热视频| 欧美激情影音先锋| 久久久噜噜噜久久中文字免| 国内外成人免费激情在线视频 | 久久躁日日躁aaaaxxxx| 欧美一级理论性理论a| 国产日韩欧美另类| 久久久九九九九| 久久久综合网站| 一区视频在线播放| 欧美激情视频给我| 欧美日韩aaaaa| 亚洲一区二区精品在线| 亚洲一区二区在| 国产亚洲激情视频在线| 久久久久久有精品国产| 欧美在线观看视频一区二区| 精品不卡一区| 亚洲黄色影院| 在线视频精品一区| 午夜日本精品| 激情久久久久久久| 亚洲福利av| 国产精品捆绑调教| 毛片av中文字幕一区二区| 欧美黄色免费| 欧美在线视频一区二区三区| 久久久久久久999精品视频| 亚洲日本理论电影| 亚洲图片激情小说| 在线观看视频免费一区二区三区| 亚洲黄色在线观看| 国产精品色网| 亚洲国产成人精品久久| 国产精品视频男人的天堂| 欧美α欧美αv大片| 欧美色精品在线视频| 老司机免费视频久久| 欧美日韩大片| 玖玖国产精品视频| 欧美色大人视频| 欧美aⅴ99久久黑人专区| 欧美视频第二页| 欧美v亚洲v综合ⅴ国产v| 欧美日韩日本视频| 亚洲在线免费视频| 美日韩丰满少妇在线观看| 欧美一级理论片| 欧美精品一区二区久久婷婷| 欧美一区二区三区婷婷月色| 欧美欧美午夜aⅴ在线观看| 久久久亚洲精品一区二区三区| 欧美日韩天天操| 欧美国产在线电影| 国产在线精品成人一区二区三区| 99热精品在线| 亚洲日韩中文字幕在线播放| 欧美在线视频二区| 午夜在线观看免费一区| 欧美精品 国产精品| 美女免费视频一区| 国产亚洲精品久| 亚洲小说区图片区| 亚洲香蕉伊综合在人在线视看| 蜜臀va亚洲va欧美va天堂| 久久免费观看视频| 国产欧美一级| 性欧美暴力猛交69hd| 亚洲一区二区3| 欧美日韩国产色综合一二三四 | 欧美在线不卡| 国产精品多人| 在线视频一区二区| 中文精品99久久国产香蕉| 欧美高清在线精品一区| 欧美国产日韩在线观看| 亚洲精品乱码久久久久久| 欧美ed2k| 亚洲黄色尤物视频| 日韩亚洲欧美成人| 欧美人妖另类| 亚洲三级免费电影| 亚洲国产清纯| 欧美在线二区| 欧美日韩亚洲另类| 久久露脸国产精品| 中文欧美日韩| 欧美日韩亚洲免费| 欧美精品一区二区三区视频| 欧美成人在线免费视频| 欧美在线你懂的| 巨胸喷奶水www久久久免费动漫| 亚洲激情啪啪| 亚洲自拍都市欧美小说| 性刺激综合网| 亚洲大胆美女视频| 亚洲黄色成人久久久| 日韩性生活视频| 性欧美长视频| 欧美激情第三页| 国产视频久久| 久久久精品国产免费观看同学| 午夜欧美不卡精品aaaaa| 亚洲欧美日本另类| 午夜精品久久久久久久99黑人| 亚洲欧美日韩人成在线播放| 香蕉国产精品偷在线观看不卡| 国产乱子伦一区二区三区国色天香| 亚洲人成人一区二区在线观看| 久久精品免费观看| 亚洲午夜精品在线| 欧美日韩在线不卡一区| 亚洲欧美日韩另类| 99视频在线精品国自产拍免费观看 | 欧美国产乱视频| 韩国成人精品a∨在线观看| 亚洲一区二区三区免费观看| 久久深夜福利| 黄色一区二区在线| 久久久久久久久伊人| 老牛嫩草一区二区三区日本| 在线观看91精品国产麻豆| 久久精品综合一区| 久久精品免费电影| 亚洲高清自拍| 欧美日韩亚洲另类| 亚洲欧美日本伦理| 久久久亚洲精品一区二区三区| 国际精品欧美精品| 国产精品午夜av在线| 美女诱惑一区| 国产午夜精品视频| 欧美在线视频免费播放| 欧美激情第3页| 亚洲精品一区二区三区av| 久久全国免费视频| 国产精品自在在线| avtt综合网| 米奇777超碰欧美日韩亚洲|