詞法分析工作總結(jié)范文_第1頁
詞法分析工作總結(jié)范文_第2頁
詞法分析工作總結(jié)范文_第3頁
詞法分析工作總結(jié)范文_第4頁
詞法分析工作總結(jié)范文_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

Word文檔詞法分析工作總結(jié)范文我工作總結(jié)頻道為大家整理的詞法分析工作總結(jié)范文,供大家閱讀參考。更多閱讀請查看本站工作總結(jié)頻道。

詞法分析是編譯器工作的第一階段,它的工作就是從輸入(源代碼)中取得token,以作為parser(語法分析)的輸入,一般在詞法分析階段都會把一些無用的空白字符(whitespace,即空格、tab和換行)以及解釋剔除,以降低下一步分析的簡單度,詞法分析器一般會供應(yīng)一個gettoken()這樣的方法,parser可以在做語法分析時調(diào)用詞法分析器的這個方法來得到下一個token,所以詞法分析器并不是一次性遍歷全部源代碼,而是實行這種on-demand的方式:只在parser需要時才工作,并且每次只取一個token。

token和lexeme

首先,token不等于lexeme。token和lexeme的關(guān)系就類似于面對對象語言中類和實例(或?qū)ο螅┲g的關(guān)系,這個用中文不知該如何解釋才好,比如語言中的變量a和b,它們都屬于同一種token:identifier,而a的lexeme是a,b則是b,而每個關(guān)鍵字都是一種token。token可以附帶有一個值屬性,例如變量a,當(dāng)調(diào)用詞法分析器的gettoken()時,會返回一個identifier類型的token,這個token帶有一個屬性a,屬性可以是多樣的,例如表示數(shù)字的token可以帶有一個表示數(shù)字值的屬性,它是整型的。

如下代碼:

intage=23;

intcount=50;

可以依次提取出8個token:int(值為int),id(值為age),assign(值為=),number(值為整型數(shù)值23),int(值為int),id(值為count),assign(值為=),number(值為50)

正則表達(dá)式

正則表達(dá)式可以用來描述字符串模式,例如我們可以用digit+來表示number的token,其中digit表示單個數(shù)字(這里說正則表達(dá)式并不完全和實現(xiàn)的正則引擎所識別的正則表達(dá)式等價,這里只是為了描述問題而已)。

然而像c語言的的多行解釋,用正則表達(dá)式來描述就比較麻煩,此時更傾向于直接用有窮自動機(finiteautomaton)來描述,因為用它來描述特別直觀且很簡單。

有窮自動機(finiteautomata)

有窮自動機也稱為有限狀態(tài)機,狀態(tài)在輸入字符的作用下發(fā)生遷移,因此,它可以用來識別token,也因此,我們只要畫得出fa,之后再用代碼實現(xiàn)這個fa,那詞法分析器也就差不多弄好了。

有窮自動機分確定性(dfa)和非確定性(nfa)兩種,假如對于同一個輸入,只會有一個確定的狀態(tài)遷移路線,也就是只有一個確定的下一狀態(tài),那就是dfa,否則就是nfa。

因為dfa對于同一個輸入只有一個確定的下一狀態(tài),所以詞法分析器當(dāng)然優(yōu)先采納它,那nfa拿來干嘛用呢?nfa用來做描述用時更便利,我們可以特別快速地畫出一個識別token的nfa圖,但要想直接畫出個dfa那要動不少腦筋。

依據(jù)正則表達(dá)式構(gòu)建nfa

如上所述,nfa更簡單畫出,那我們就先討論nfa,在定義token時,我們可以用正則表達(dá)式來描述它,因為正則表達(dá)式干這行很合適,例如一個digit+就可以描述數(shù)字,多便利。因此,我們需要依據(jù)正則表達(dá)式畫出與之等價的nfa。而這個算法特別簡潔,就是tompson’sconstruction,這個書上寫得很清晰了。

將nfa轉(zhuǎn)化成dfa(nfa的確定化)

對于計算機來說,面對同一個輸入,假如有多個下一狀態(tài),那計算機就不清晰要轉(zhuǎn)到哪個狀態(tài),所以我們期望能從正則表達(dá)式得到dfa,而不是nfa,因為這樣將來編程實現(xiàn)時比較自然(同一輸入有確定的一個下一狀態(tài)),而幸運的是,每個nfa都可以轉(zhuǎn)化成dfa。為什么nfa可以轉(zhuǎn)化成dfa?因為fa(finiteautomata)中的狀態(tài)都是我們自己畫的,只要fa能正確的識別token,那就ok了,也就是,假如nfa和dfa都可以達(dá)到一樣的效果:識別token,那其它的我們就不管了。而nfa確定化的本質(zhì),就是將原來多個狀態(tài)改用一個狀態(tài)來表示,新狀態(tài)其實是一個狀態(tài)集,比如nfa中狀態(tài)s1在輸入a下可以到達(dá)s2和s3,那么,在dfa中,就把s2和s3合起來認(rèn)為是一個狀態(tài)。還有一個問題是nfa中的空轉(zhuǎn)換(?輸入),假如s1在?輸入下可以到達(dá)s2,就表示s1可以無條件地轉(zhuǎn)移到s2,那s1和s2自然可以合并起來作為dfa中的一個狀態(tài),于是nfa轉(zhuǎn)dfa的算法也就好理解了。但首先得先定義下空閉包(?-closure):

?-closure:狀態(tài)s的?-closure即s經(jīng)過?轉(zhuǎn)換可以到達(dá)的狀態(tài)集,s的?-closure永久都會包含s自身。一個狀態(tài)集的?-closure即該狀態(tài)集中各狀態(tài)的?-closure的集合。

nfa確定化算法(subsetconstruction):

從開頭狀態(tài)開頭,計算它的?-closure,得到狀態(tài)集set1,然后考察set1在某個輸入a的作用下會遷移到哪些狀態(tài),把這些狀態(tài)集中到一起,再求這個集合的?-closure,得到set2,這樣我們就可以畫兩個圈,一個標(biāo)上set1,另一個標(biāo)上set2,然后畫條從set1到set2的線把這兩圓連起來,在線上標(biāo)上a,這樣dfa的一部分就畫好了,然后我們再考察set1在其它輸入下可以達(dá)到的狀態(tài)集的?-closure,同樣畫圈連線,以此類推,最終的時候,把包含了原nfa中終結(jié)狀態(tài)(finalstate或acceptinstate)的dfa狀態(tài)(在轉(zhuǎn)換后的dfa中,每個狀態(tài)都是包含了一個或多個原nfa中的狀態(tài))標(biāo)記為終結(jié)狀態(tài)。

最小化dfa狀態(tài)數(shù)

由一個正則表達(dá)式,可以構(gòu)建出一個等價的nfa,然后nfa又可以確定化成dfa,好像到此事情搞完了,但事實證明(有時也可以明顯地發(fā)覺),最終構(gòu)成的這dfa好像有些簡單,有些狀態(tài)似乎很冗余,呃,是的,dfa是可以最小化的。

最小化dfa狀態(tài)數(shù)算法的思想是,在開頭時,假設(shè)是最完善的狀況,整個dfa只有兩個狀態(tài),一個終結(jié)狀態(tài),一個開頭(莫非不能有只有一種狀態(tài)的狀況么?假如原dfa中存在非終結(jié)狀態(tài),當(dāng)然就不能,非終結(jié)態(tài)怎么可以和終結(jié)態(tài)合并?。?,當(dāng)然,這是假設(shè),不是真的,所以這個算法,就是在這個完善的假設(shè)下,對假設(shè)進一步考察,假如發(fā)覺有些狀態(tài)不能合并,那就分出來吧,這樣重復(fù)考察,直到發(fā)覺沒有狀態(tài)會不能合并時,就做完了,此時不也正是解么。

嗯,就是這個,所以一開頭,我們把全部非終結(jié)狀態(tài)用一個袋子包起來,看成是一個狀態(tài),把全部終結(jié)狀態(tài)也用另一袋子包起來,也看成是一個狀態(tài),留意,別把原dfa中各狀態(tài)間的連線給扯斷了。然后,我們抽出其中一個袋子,考察其中的各個狀態(tài),我們預(yù)備好全部的可能輸入,然后逐個拿出來測試,假如該袋子中的全部狀態(tài)在某個輸入a下達(dá)到的狀態(tài)正好都在這個袋子中,那就說明,這個袋子中的這些狀態(tài)在目前看來是可以合并的,也就是說,假如在全部的可能輸入的作用下,袋子中的狀態(tài)達(dá)到的新狀態(tài)正好也都是這個袋子中的狀態(tài),那它們就可以合并。而假如,在某個輸入a下,袋子中的一部分狀態(tài)會轉(zhuǎn)移到同一袋子中的其它狀態(tài),而有幾個叛徒,假設(shè)是s1和s2,竟然在輸入a下會遷移到其它袋子中的狀態(tài),那就說明s1和s2是不行以和其它轉(zhuǎn)移到同一袋子中的狀態(tài)合并的,于是,我們就把s1和s2裝成一個新袋子,從原袋子中分出來,當(dāng)然,現(xiàn)在還是假設(shè)s1和s2可以合并,所以才把它們裝一起,畢竟真的可不行以合并呆會還要再考察??疾焱贻斎隺,還要接著考察其它的可能輸入。假如在考察完一個袋子后,發(fā)覺全部狀態(tài)在a輸入下都可以轉(zhuǎn)移到本袋子中的狀態(tài),那么最終的dfa它們就被合并成一個狀態(tài),并且在a輸入下,它有一個到自身的狀態(tài)遷移。實現(xiàn)詞法分析器

對于一個token,比如用來表示數(shù)字的token:num,我們可以用正則表達(dá)式描述它,然后畫出nfa,再將nfa轉(zhuǎn)化成dfa,再最小化dfa的狀態(tài),但是我們的詞法分析器是不是分析一個token,所以我們要把全部類型的token的dfa合并成一個dfa,這樣,這個dfa也就可以識別語言的全部token了,假如在某一連串的輸入下,dfa達(dá)不到終結(jié)狀態(tài),那就說明源代碼有錯誤了。

我用c#實現(xiàn)了一個用于《compilerconstruction:principlesandpractice》中tiny語言的詞法分析器,tiny語言有關(guān)鍵字:if,then,else,end,repeat,until,read,write,有操作符+,-,,/,=,

上面這張圖和《編譯原理及實踐》中的一樣,其中的帶中括號的輸入說明這個輸入是lookahead的,在匹配勝利后是要重新放回輸入流中的,比如識別num時,假如發(fā)覺個非digit的,那就說明識別到了一個number,但是最終識別的那個非digit字符是要放回輸入流的,因為它要留著下一次識別。

其中從start到done的那個other,指全部非whitespace,非{,非letter,非digit,也非:的字符,它有可能是合法的+,,/這些,也可能是不合法的其它輸入,如#號。因此,done這個狀態(tài)只是說本次gettoken已經(jīng)結(jié)束,狀態(tài)機是有可能因為不合法的輸入而進入done狀態(tài)的。畢竟從start到done是因為合法的,如+號導(dǎo)致的,還是由不合法的如#號導(dǎo)致的,將在代碼中實現(xiàn)推斷,但可以確定的是,不管是+號還是#號作用于start狀態(tài),都會進入done狀態(tài)。

GZ85.com更多總結(jié)

需求分析工作總結(jié)范文

我工作總結(jié)頻道為大家整理的需求分析工作總結(jié)范文,供大家閱讀參考。更多閱讀請查看本站工作總結(jié)頻道。

需求分析是項目開發(fā)的基礎(chǔ),基礎(chǔ)打的牢不牢直接關(guān)系到后面全部的工作,是項目實施成敗的關(guān)鍵

項目經(jīng)理博客

總體上說,我們的需求分析是做了,但是做得很不夠,我們做的需求只解決了我們能做出這樣的項目,但是沒有解決這樣的項目是不是真就是客戶想要的。造成這種狀況的緣由主要是下面幾個狀況:

客戶本身說不清晰

文物網(wǎng)是這樣,中彰國際更是這樣,但是這不能怪客戶,究竟客戶在軟件方面的學(xué)問要少的多,也沒有相關(guān)的閱歷,可能心里只有一個想要的軟件的輪廓,于是可能會要求我們?nèi)ヌ嫠麄儊硗暾@個輪廓的細(xì)節(jié),而我們的力量、我們能否真正站在客戶角度去搜集和整理這些需求,就打算了這個需求的完整性和有效性。

需求自身常常變動

隨著客戶對這個項目越來越深刻的理解,那么可能他的需求也會隨之轉(zhuǎn)變,這些變化的可能性越大項目風(fēng)險就會越大,我們在需求分析的時候就要充分考慮到哪些需求是相對固定的需求,哪些可能會是產(chǎn)生變動的需求,考慮到他的可變性,這樣設(shè)計功能和數(shù)據(jù)庫的時候不致因為后面的變動而影響整個工程。

分析人員或客戶理解有誤

究竟,不是每個分析人員都是專業(yè)而合格的,為避開這種狀況的發(fā)生,需求分析必需要有審核制度,公司自己內(nèi)部要審核一遍,客戶再審一遍,提出意見,修改后雙方共同評審簽字,確認(rèn)。

由此消失的問題:

a)需求分析過于籠統(tǒng),只關(guān)注到面上,沒有關(guān)注到點上,開發(fā)出來的東西在詳細(xì)的細(xì)節(jié)上和客戶的理解有誤差,并且無法嚴(yán)格界定是否屬于需求變更。中彰的方案就是這樣的。

b)需求報告只求我們這方評審?fù)ㄟ^,不去關(guān)懷客戶的評審,認(rèn)為只要客戶簽字認(rèn)可就行。雖然簽字認(rèn)可能夠給日后消失問題時劃清我們的責(zé)任,但是不能保證使項目實施勝利。

c)需求分析中含有技術(shù)實施上有難度的功能,一味的求全和盲目根據(jù)客戶的設(shè)想,受客戶影響過大,究竟,許多時候,客戶的想法在實際實施過程中是不現(xiàn)實的,或者可以有更為簡便的方法來替代的。如中彰國際的在線交易功能,后臺大批量郵件群發(fā)功能。

d)對雙方已經(jīng)確定的需求,實現(xiàn)以后并不適合客戶使用,需要根據(jù)變更手續(xù)執(zhí)行的時候,客戶可能會糾纏,提出你們是專業(yè)人士,你們應(yīng)當(dāng)事先能提示我們可能會消失這種問題并以此來把責(zé)任推給我們,而我們又不好完全根據(jù)變更手續(xù)執(zhí)行,因為可能激化雙方的沖突,比如508的批量處理功能,因為屬于人事管理比較專業(yè)的細(xì)節(jié)問題,需求分析師開頭沒有對客戶業(yè)務(wù)熟識到如此細(xì)致的地步,而客戶也沒有過多關(guān)注這些細(xì)節(jié),導(dǎo)致軟件的某些功能不合用,較為繁瑣,而重新按著客戶的意見修改的話工作量比較大,導(dǎo)致成本增加、工期延長。

e)項目的成熟度受客戶預(yù)算的限制。大部分客戶在項目投入上都是有預(yù)算的,在成本有上限的前提下,項目的功能設(shè)計(軟件的成熟度)方面必定受肯定影響,究竟功能越多越完善,相應(yīng)的開發(fā)成本就越高。這種功能上的不完善需要事先告知客戶并得到理解。

f)此項工作的反復(fù)造成思想上的倦怠,使需求分析最終虎頭蛇尾。需求分析是一項繁瑣枯燥的工作,需要和客戶之間不斷的商討、確認(rèn)和反復(fù),另外由于大部分的客戶雖然支配專人負(fù)責(zé)這項工作,但是該人并不只做這項工作,特殊當(dāng)他被許多其他的事情纏身的時候,而無心細(xì)看提交過去的需求報告的時候,他很可能會給你一個錯覺,讓你認(rèn)為他已經(jīng)真正的理解并認(rèn)可了你的設(shè)計。結(jié)論

a)需求分析是整個項目管理中需要重點掌握的幾個關(guān)鍵節(jié)點之一,首先思想上肯定要重視。

b)需求分析報告的編寫者要參加到需求的搜集工作中,精確?????領(lǐng)悟客戶的意圖,并轉(zhuǎn)化成軟件能夠?qū)崿F(xiàn)的功能。對于說不清晰需求的客戶,要擅長問關(guān)鍵問題,引導(dǎo)客戶提出自己的需求??梢詫嵭械拇胧┦鞘孪染幹埔粋€問卷調(diào)查之類的文檔,具體列舉需要客戶回答的問題,以便防止遺漏。

c)需求報告的編寫者要能夠?qū)蛻粜枨筮M行深化分析,區(qū)分出哪些需求存在日后變更的可能,哪些需求屬于相對固定的,哪些需求能夠?qū)崿F(xiàn),哪些需求需要變通才能實現(xiàn),以便于指導(dǎo)后面的功能設(shè)計。

d)需求分析報告對功能細(xì)節(jié)的描述不能有歧義,描述肯定要全面、精確?????,防止開發(fā)方和客戶只見對同一個問題有兩個截然不同的理解??梢酝ㄟ^評審,用大家的力氣來避開這種狀況發(fā)生

e)需求報告的每個關(guān)乎功能的描述都要讓客戶明白和理解,客戶在理解之上的確認(rèn)才能夠保證日后一旦消失問題不致消失雙方相互推托責(zé)任糾纏不清的狀況。

f)需求報告肯定要經(jīng)過一個有技術(shù)人員和業(yè)務(wù)人員參與的評審,要充分發(fā)揮團隊的力氣,重視每個人的才智,一個模塊一個功能的逐一的過,讓大家來共同找出需求報告里不合理的、有歧義的、不完善的、遺漏的等等問題

g)關(guān)心客戶去理解提交給他的需求分析報告而不是只等簽字,對于有能夠用好幾種方式實現(xiàn)的功能,盡量做到能讓客戶去比較和選擇。不要讓客戶對報告中的部分產(chǎn)生歧義。只有客戶對報告的完全的理解,才能在日后客戶提出的修改被認(rèn)為是需求變更的時候能夠得到客戶的理解

h)最終,需求分析報告肯定要雙方共同簽字確認(rèn)

英語試卷分析范文

英語試卷分析范文

依據(jù)教研室工作支配,于11月8日下午對我校三班級同學(xué)進行了期中測試,現(xiàn)試卷已批閱完畢,為進一步改進教學(xué)方法,提高教學(xué)效率,促進同學(xué)成果不斷提高,現(xiàn)就同學(xué)試卷狀況進行分析。

學(xué)情分析:

所測試班級共16名同學(xué),全部參與了測試,該班同學(xué)初學(xué)英語,基本沒有英語基礎(chǔ),但同學(xué)普遍對英語較感愛好,學(xué)習(xí)樂觀性高,特殊是曾在幼兒園接觸過英語的同學(xué),樂觀和原有印象對比,主動學(xué)習(xí)新的英語學(xué)問,學(xué)習(xí)氣氛深厚。但也發(fā)覺,三班級同學(xué),學(xué)習(xí)習(xí)慣不好,特殊是初學(xué)用鋼筆,不少同學(xué)不適應(yīng),書寫潦草,隨便性大。上課聽課精力不易集中,不斷走神。個別同學(xué)學(xué)習(xí)還存在惰性,不愛動腦動筆。

教情分析:

結(jié)合同學(xué)心理特點和年齡特點,在教學(xué)中全面發(fā)揮教材特點,在課堂上充分利用嬉戲、動畫、故事、創(chuàng)設(shè)英語情景等孩子喜聞樂見的形式教學(xué)英語,克服了部分孩子對英語的畏懼心理,逐步喜愛英語,愛學(xué)英語。同時,在教學(xué)中還加強了同學(xué)學(xué)習(xí)習(xí)慣的培育,如:執(zhí)筆姿態(tài),坐姿,讀英語的習(xí)慣,準(zhǔn)時完成作業(yè)的習(xí)慣,愛惜課本,愛惜作業(yè)本的習(xí)慣等。

試卷分析:

本次測試題共十個大題,聽力和筆試各占一半,限時50分鐘,形式多樣,題量和難度適中,優(yōu)生能夠提前完成。聽力部分設(shè)計了聽單詞,聽簡潔句子,聽詞聽句選圖,聽句回答等,較全面的從不同角度考查了同學(xué)聽力訓(xùn)練狀況;筆試部分除了書寫字母,涂色外,以選擇題為主,重點突出,適合三班級同學(xué)特點,字母教學(xué)是本學(xué)期的重點內(nèi)容,涂涂畫畫是同學(xué)比較寵愛的方式,在比較開心的活動中,考查了同學(xué)對樣色的熟悉,選擇題凸顯了對英語學(xué)問的考察,但卻不要求同學(xué)書寫這一適合同學(xué)年齡特點的要求。

從同學(xué)試卷完成狀況來看,該班16名同學(xué),13人達(dá)到了A,3人為B,及格率為100%,優(yōu)秀率為81%,說明同學(xué)學(xué)的比較扎實。

聽力部分,聽錄音找單詞,大多同學(xué)完成較好,出錯率極低,聽句子對不少同學(xué)來說,較有難度,二題,聽錄音,為下列圖畫排序,三題,聽錄音,選擇你聽到的圖片,圈出他的字母編號。都是同學(xué)聽懂簡答英語句子后去完成,不少同學(xué)出錯。第四題中,2.ThisisMissGreen.出錯嚴(yán)峻,重點緣由是,老師在教學(xué)中對人名的發(fā)音和Missgreen的教學(xué)指導(dǎo)訓(xùn)練不足,同學(xué)從錄音中聽不出是人名還是顏色green;第五題,聽錄音,選出你所聽到的答語,分不出Myname’s

Jonn.和Bye,Miss

語文試卷分析范文

語文試卷分析范文

寨子學(xué)校

荊誠財

一、成果統(tǒng)計

本次測試,二班級應(yīng)參考人數(shù)為30人,及格人數(shù)為29人,及格率95.8%,優(yōu)秀人數(shù)為25人,優(yōu)秀率81%。

二、試卷的特點

注意基礎(chǔ),測試的題型堅持依據(jù)于課本,重點考察同學(xué)的基礎(chǔ)學(xué)問和運用語言的力量。試卷的難易度適中。

三、同學(xué)答題狀況詳細(xì)分析

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論