一種狀態(tài)的制造方法
【專利摘要】本發(fā)明實施例提供一種狀態(tài)機,所述狀態(tài)機包括:規(guī)則模塊,用于預(yù)先制定待識別字符集的劃分規(guī)則,所述劃分規(guī)則包括劃分字符集所依據(jù)的特征;編輯模塊,用于按照所述劃分規(guī)則中劃分字符集所依據(jù)的特征為狀態(tài)機編輯正則表達式;預(yù)分類模塊,用于利用所述劃分規(guī)則對待識別字符集中的字符進行預(yù)分類;狀態(tài)識別模塊,用于利用所述正則表達式識別經(jīng)過劃分的待識別字符集。
【專利說明】一種狀態(tài)機
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,特別涉及一種狀態(tài)機。
【背景技術(shù)】
[0002]詞法分析(lexical analysis)是計算機語言學(xué)的基本功能之一,用于定義單詞的組成方法。進行語法分析的程序或者函數(shù)稱為詞法分析器(Lexical analyzer,簡稱Lexer),也叫掃描器(Scanner)。詞法分析器一般以函數(shù)的形式存在,供語法分析器調(diào)用。
[0003]詞法分析的第一階段為識別所處理的單詞中包含的字符集,該過程通?;跔顟B(tài)機。狀態(tài)機為描述單詞組成方法的圖形,狀態(tài)機由狀態(tài)點和轉(zhuǎn)換箭頭組成,表示在一定的輸入條件下,狀態(tài)轉(zhuǎn)換的過程。一個狀態(tài)機和一個正則表達式相對應(yīng)。
[0004]現(xiàn)有的狀態(tài)機主要有非確定性有限狀態(tài)機和確定性有限狀態(tài)機兩種;其中非確定性有限狀態(tài)機為在一定的輸入條件下,狀態(tài)轉(zhuǎn)換不唯一的狀態(tài)機;確定性有限狀態(tài)機為在一定的輸入條件下,狀態(tài)轉(zhuǎn)換唯一的狀態(tài)機。
[0005]現(xiàn)有的狀態(tài)機所包含的狀態(tài)與狀態(tài)轉(zhuǎn)換一般有上百個,由于數(shù)量大,所以使狀態(tài)機的復(fù)雜性非常高,而狀態(tài)機的高復(fù)雜性導(dǎo)致了編程語言在微系統(tǒng)上的實現(xiàn)有一定困難,并且導(dǎo)致處理字符的速度緩慢。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明的目的在于提供一種狀態(tài)機,通過對字符的預(yù)分類將多種具有相同特征的字符統(tǒng)一為一個特征值,實現(xiàn)狀態(tài)數(shù)量的減少,提高狀態(tài)機的運行速度。
[0007]為實現(xiàn)上述目的,本發(fā)明有以下技術(shù)方案:
[0008]一種狀態(tài)機,其特征在于,所述狀態(tài)機包括:
[0009]規(guī)則模塊,用于預(yù)先制定待識別字符集的劃分規(guī)則,所述劃分規(guī)則包括劃分字符集所依據(jù)的特征;
[0010]編輯模塊,用于按照所述劃分規(guī)則中劃分字符集所依據(jù)的特征為狀態(tài)機編輯正則表達式;
[0011]預(yù)分類模塊,用于利用所述劃分規(guī)則對待識別字符集中的字符進行預(yù)分類;
[0012]狀態(tài)識別模塊,用于利用所述正則表達式識別經(jīng)過劃分的待識別字符集。
[0013]所述規(guī)則模塊包括:
[0014]第一規(guī)則單元,用于以大寫字母、小寫字母、數(shù)字和下劃線作為劃分字符集所依據(jù)的特征制定待識別字符集的劃分規(guī)則。
[0015]所述規(guī)則模塊包括:
[0016]第二規(guī)則單元,用于以名詞、動詞、代詞、數(shù)量詞和標點符號作為劃分字符集所依據(jù)的特征制定待識別字符集的劃分規(guī)則。
[0017]所述規(guī)則模塊還包括:
[0018]特征值單元,用于為每個特征定義一個特征值。[0019]所述預(yù)分類單元包括:
[0020]特征值輸出單元,用于判斷待識別字符集中的字符是否符合劃分規(guī)則中的任意一個特征,如果符合則輸出該特征的特征值。
[0021]通過以上技術(shù)方案可知,本發(fā)明存在的有益效果是,通過劃分規(guī)則將待識別字符集中的字符預(yù)分類,從而將幾十種甚至上百種字符根據(jù)特征簡化為有限的若干個種類,并且根據(jù)所述特征編輯出簡化的正則表達式,則該正則表達式對應(yīng)的狀態(tài)機僅對小數(shù)量特征進行識別,從而實現(xiàn)狀態(tài)機的簡化,提高了狀態(tài)機運行的速度。
【專利附圖】
【附圖說明】
[0022]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0023]圖1為本發(fā)明實施例所述狀態(tài)機結(jié)構(gòu)示意圖;
[0024]圖2為本發(fā)明另一實施例所述狀態(tài)機結(jié)構(gòu)示意圖;
[0025]圖3為本發(fā)明所述字符預(yù)分類流程圖。
【具體實施方式】
[0026]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0027]本發(fā)明公開了一種狀態(tài)機,參照圖1所示,所述狀態(tài)機具體為:
[0028]規(guī)則模塊,用于預(yù)先制定待識別字符集的劃分規(guī)則,所述劃分規(guī)則包括劃分字符集所依據(jù)的特征;
[0029]編輯模塊,用于按照所述劃分規(guī)則中劃分字符集所依據(jù)的特征為狀態(tài)機編輯正則表達式;
[0030]預(yù)分類模塊,用于利用所述劃分規(guī)則對待識別字符集中的字符進行預(yù)分類;
[0031]狀態(tài)識別模塊,用于利用所述正則表達式識別經(jīng)過劃分的待識別字符集。
[0032]本實施例為本發(fā)明所述狀態(tài)機的一個基礎(chǔ)實施例,本實施例存在的有益效果是,通過劃分規(guī)則將待識別字符集中的字符預(yù)分類,從而將幾十種甚至上百種字符根據(jù)特征簡化為有限的若干個種類,并且根據(jù)所述特征編輯出簡化的正則表達式,則該正則表達式對應(yīng)的狀態(tài)機僅對小數(shù)量特征進行識別,從而實現(xiàn)狀態(tài)機的簡化。
[0033]參照圖2所示為本發(fā)明所述狀態(tài)機的另一個具體實施例。本實施例中所述狀態(tài)機具體包括:
[0034]規(guī)則模塊,用于預(yù)先制定待識別字符集的劃分規(guī)則,所述劃分規(guī)則包括劃分字符集所依據(jù)的特征;
[0035]本實施例中所述規(guī)則模塊包括:
[0036]第一規(guī)則單元,用于以大寫字母、小寫字母、數(shù)字和下劃線作為劃分字符集所依據(jù)的特征制定待識別字符集的劃分規(guī)則;
[0037]第二規(guī)則單元,用于以名詞、動詞、代詞、數(shù)量詞和標點符號作為劃分字符集所依據(jù)的特征制定待識別字符集的劃分規(guī)則;
[0038]特征值單元,用于為每個特征定義一個特征值;
[0039]編輯模塊,用于按照所述劃分規(guī)則中劃分字符集所依據(jù)的特征為狀態(tài)機編輯正則表達式;
[0040]預(yù)分類模塊,用于利用所述劃分規(guī)則對待識別字符集中的字符進行預(yù)分類;
[0041]本實施例中所述預(yù)分類模塊包括:
[0042]特征值輸出單元,用于判斷待識別字符集中的字符是否符合劃分規(guī)則中的任意一個特征,如果符合則輸出該特征的特征值;
[0043]狀態(tài)識別模塊,用于利用所述正則表達式識別經(jīng)過劃分的待識別字符集。
[0044]本實施例中采用宏定義的方式對特征值進行定義,假設(shè)按照所述第一規(guī)則單元中所制定的劃分規(guī)則對字符進行劃分,則所述宏定義表達式為:
[0045]const int a2z=512,A2Z=513, z2n=514, underscore=515, others=516
[0046]其含義是,大寫字母Al在程序語言中的表示符號為A2Z,小寫字符a'在程序語言中的表示符號為a2z,數(shù)字(T9在程序語言中的表示符號為z2n,下劃線在程序語言中的表示符號為underscore,不符合上述特征的情況在程序語言中的表示符號為others ;本實施例中特意加入了 others這一特征,也就是如果某一字符不符合大寫字母、小寫字母、數(shù)字或下劃線四者任意一個特征,則認為該字符屬于others這一特征,輸出特征值為516。
[0047]本實施例中定義A2Z的特征值為513,a2z的特征值為512,z2n的特征值為514,underscore的特征值為515,others的特征值為516。實際應(yīng)用中特征值可以定義為任何數(shù)字。以上分類方式與特征值的定義為本實施例中采取的優(yōu)選方案,在實際情況中可以在不影響整體方案的前提下采取其他方式。
[0048]所述編輯模塊根據(jù)上述劃分規(guī)則為狀態(tài)機編輯正則表達式,本實施例中的正則表達式為:
[0049]{a2z, A2Z, underscore}{a2z, A2Z, underscore, z2n}*
[0050]該正則表達式的含義為:字符集中第一個字符為a2z、A2Z或underscore,其他若干字符為a2z、A2Z、underSCOre或z2n ;也就是表示該正則表達式不允許字符集的第一個字符為數(shù)字。
[0051]同樣按照上述劃分規(guī)則,對待識別的字符集進行劃分,即在狀態(tài)識別模塊識別待識別字符集之前,對待識別字符集中的字符進行預(yù)分類。
[0052]本實施例中特別規(guī)定,a2z為第一特征,A2Z為第二特征,z2n為第三特征,underscore為第四特征,others為第五特征。所述特征值輸出單元在判斷某一字符特征并輸出特征值的時候,從第一特征到第五特征依次判斷該字符是否與該特征匹配,若該字符匹配某一特征則輸出該特征的特征值,若不匹配則繼續(xù)用下一個特征進行判斷,具體參見圖3。
[0053]此處以待識別字符集為英文單詞“English”為例,待識別字符集共包括7個字符。
[0054]待識別字符集的第一個字符為“E”,判斷字符“E”是否符合第一特征即a2z,結(jié)果為不符合;再判斷該字符是否符合第二特征即A2Z,結(jié)果為符合,則輸出第二特征的特征值513。
[0055]待識別字符集的第二個字符為“n”,判斷字符“η”是否符合第一特征a2z,結(jié)果為符合,則輸出第二特征的特征值512。
[0056]按照上述方式依次判斷該字符集中的其他所有字符,得到每一個字符的特征值,即完成了待識別字符集的預(yù)分類。
[0057]傳統(tǒng)不存在上述預(yù)分類過程的情況下,一般認為:大寫字母Al為26個特征,小寫字母a'為26個特征,數(shù)字(T9為10個特征,下劃線為I個特征,其他情況為I個特征,總計64個特征,利用上述64個特征編輯正則表達式之后,正則表達式對應(yīng)的狀態(tài)機必須對上述全部特征及其轉(zhuǎn)換狀態(tài)與反饋狀態(tài)進行識別,狀態(tài)機需要識別的特征達到數(shù)百個。
[0058]按照本發(fā)明所述方法將待識別字符集預(yù)分類,將上述64個特征簡化為本實施例中給出的5個特征,并且利用上述5個特征編輯正則表達式。相應(yīng)的本發(fā)明實施例所述正則表達式對應(yīng)的狀態(tài)機所需要識別的特征數(shù)量上大大減少。本發(fā)明由此實現(xiàn)了狀態(tài)機的簡化,提聞狀態(tài)機的運行速度。
[0059]同理,再以本實施例當中所述第二規(guī)則單元以名詞、動詞、代詞、數(shù)量詞和標點符號作為劃分字符集所依據(jù)的特征制定待識別字符集的劃分規(guī)則為例,同樣可以實現(xiàn)簡化狀態(tài)機的目的。
[0060]以中文句子“我是一 個兵”為例,可以根據(jù)第二規(guī)則單元中的劃分規(guī)則,將“我”劃分為代詞,“是”劃分為動詞,“一”和“個”均屬于數(shù)量詞,“兵”劃分為名詞,并且根據(jù)設(shè)置輸出對應(yīng)的特征值。本實施例中除劃分規(guī)則改變之外,狀態(tài)機中其余模塊和單元的工作原理與上述完全相同,所以不再重復(fù)描述。
[0061]本實施例存在的有益效果是,通過對于所述狀態(tài)機更加具體的公開的和描述,并且配合實際字符集和劃分規(guī)則進行距離說明,使得本實施例所述狀態(tài)機在圖1所示實施例的基礎(chǔ)之上,內(nèi)容更加完整清晰。
[0062]以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
【權(quán)利要求】
1.一種狀態(tài)機,其特征在于,所述狀態(tài)機包括: 規(guī)則模塊,用于預(yù)先制定待識別字符集的劃分規(guī)則,所述劃分規(guī)則包括劃分字符集所依據(jù)的特征; 編輯模塊,用于按照所述劃分規(guī)則中劃分字符集所依據(jù)的特征為狀態(tài)機編輯正則表達式; 預(yù)分類模塊,用于利用所述劃分規(guī)則對待識別字符集中的字符進行預(yù)分類; 狀態(tài)識別模塊,用于利用所述正則表達式識別經(jīng)過劃分的待識別字符集。
2.根據(jù)權(quán)利要求1所述狀態(tài)機,其特征在于,所述規(guī)則模塊包括: 第一規(guī)則單元,用于以大寫字母、小寫字母、數(shù)字和下劃線作為劃分字符集所依據(jù)的特征制定待識別字符集的劃分規(guī)則。
3.根據(jù)權(quán)利要求1所述狀態(tài)機,其特征在于,所述規(guī)則模塊包括: 第二規(guī)則單元,用于以名詞、動詞、代詞、數(shù)量詞和標點符號作為劃分字符集所依據(jù)的特征制定待識別字符集的劃分規(guī)則。
4.根據(jù)權(quán)利要求1-3任意一項所述狀態(tài)機,其特征在于,所述規(guī)則模塊還包括: 特征值單元,用于為每個特征定義一個特征值。
5.根據(jù)權(quán)利要求4所述狀態(tài)機,其特征在于,所述預(yù)分類單元包括: 特征值輸出單元,用于判斷待識別字符集中的字符是否符合劃分規(guī)則中的任意一個特征,如果符合則輸出該特征的特征值。
【文檔編號】G06F17/27GK103544142SQ201210248224
【公開日】2014年1月29日 申請日期:2012年7月17日 優(yōu)先權(quán)日:2012年7月17日
【發(fā)明者】李小明, 胡勝發(fā) 申請人:安凱(廣州)微電子技術(shù)有限公司