范文為教學(xué)中作為模范的文章,也常常用來指寫作的模板。常常用于文秘寫作的參考,也可以作為演講材料編寫前的參考。大家想知道怎么樣才能寫一篇比較優(yōu)質(zhì)的范文嗎?以下是小編為大家收集的優(yōu)秀范文,歡迎大家分享閱讀。
健身英語詞篇一
詞法分析是編譯器工作的第一階段,它的工作就是從輸入(源代碼)中取得token,以作為parser(語法分析)的輸入,一般在詞法分析階段都會把一些無用的空白字符(white space,即空格、tab和換行)以及注釋剔除,以降低下一步分析的復(fù)雜度,詞法分析器一般會提供一個gettoken()這樣的方法,parser可以在做語法分析時(shí)調(diào)用詞法分析器的這個方法來得到下一個token,所以詞法分析器并不是一次性遍歷所有源代碼,而是采取這種on-demand的方式:只在parser需要時(shí)才工作,并且每次只取一個token。
首先,token不等于lexeme。token和lexeme的關(guān)系就類似于面向?qū)ο笳Z言中“類”和“實(shí)例”(或“對象”)之間的關(guān)系,這個用中文不知該如何解釋才好,比如語言中的變量a和b,它們都屬于同一種token:identifier,而a的lexeme是”a”,b則是”b”,而每個關(guān)鍵字都是一種token。token可以附帶有一個值屬性,例如變量a,當(dāng)調(diào)用詞法分析器的gettoken()時(shí),會返回一個identifier類型的token,這個token帶有一個屬性“a”,屬性可以是多樣的,例如表示數(shù)字的token可以帶有一個表示數(shù)字值的屬性,它是整型的。
如下代碼:
int age = 23;
int count = 50;
可以依次提取出8個token:int(值為”int”),id(值為”age”),assign(值為”=”),number(值為整型數(shù)值23),int(值為”int”),id(值為”count”),assign(值為”=”),number(值為50)
正則表達(dá)式可以用來描述字符串模式,例如我們可以用digit+來表示number的token,其中digit表示單個數(shù)字(這里說正則表達(dá)式并不完全和實(shí)現(xiàn)的正則引擎所識別的正則表達(dá)式等價(jià),這里只是為了描述問題而已)。
然而像c語言的的'多行注釋,用正則表達(dá)式來描述就比較麻煩,此時(shí)更傾向于直接用有窮自動機(jī)(finite automaton)來描述,因?yàn)橛盟鼇砻枋龇浅V庇^且很容易。
有窮自動機(jī)也稱為有限狀態(tài)機(jī),狀態(tài)在輸入字符的作用下發(fā)生遷移,因此,它可以用來識別token,也因此,我們只要畫得出fa,之后再用代碼實(shí)現(xiàn)這個fa,那詞法分析器也就差不多弄好了。
有窮自動機(jī)分確定性(dfa)和非確定性(nfa)兩種,如果對于同一個輸入,只會有一個確定的狀態(tài)遷移路線,也就是只有一個確定的“下一狀態(tài)”,那就是dfa,否則就是nfa。
因?yàn)閐fa對于同一個輸入只有一個確定的下一狀態(tài),所以詞法分析器當(dāng)然優(yōu)先采用它,那nfa拿來干嘛用呢?nfa用來做描述用時(shí)更方便,我們可以非常迅速地畫出一個識別token的nfa圖,但要想直接畫出個dfa那要動不少腦筋。
如上所述,nfa更容易畫出,那我們就先研究nfa,在定義token時(shí),我們可以用正則表達(dá)式來描述它,因?yàn)檎齽t表達(dá)式干這行很合適,例如一個digit+就可以描述數(shù)字,多方便。因此,我們需要根據(jù)正則表達(dá)式畫出與之等價(jià)的nfa。而這個算法非常簡單,就是tompson’s construction,這個書上寫得很清楚了。
對于計(jì)算機(jī)來說,面對同一個輸入,如果有多個下一狀態(tài),那計(jì)算機(jī)就不清楚要轉(zhuǎn)到哪個狀態(tài),所以我們期望能從正則表達(dá)式得到dfa,而不是nfa,因?yàn)檫@樣將來編程實(shí)現(xiàn)時(shí)比較自然(同一輸入有確定的一個下一狀態(tài)),而幸運(yùn)的是,每個nfa都可以轉(zhuǎn)化成dfa。為什么nfa可以轉(zhuǎn)化成dfa?因?yàn)閒a(finite automata)中的狀態(tài)都是我們自己畫的,只要fa能正確的識別token,那就ok了,也就是,如果nfa和dfa都可以達(dá)到一樣的效果:識別token,那其它的我們就不管了。
-closure: 狀態(tài)s的?-closure即s經(jīng)過?轉(zhuǎn)換可以到達(dá)的狀態(tài)集,s的?-closure永遠(yuǎn)都會包含s自身。一個狀態(tài)集的?-closure即該狀態(tài)集中各狀態(tài)的?-closure的集合。
nfa確定化算法(subset construction):
從開始狀態(tài)開始,計(jì)算它的?-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,同樣畫圈連線,以此類推,最后的時(shí)候,把包含了原nfa中終結(jié)狀態(tài)(final state或acceptin state)的dfa狀態(tài)(在轉(zhuǎn)換后的dfa中,每個狀態(tài)都是包含了一個或多個原nfa中的狀態(tài))標(biāo)記為終結(jié)狀態(tài)。
由一個正則表達(dá)式,可以構(gòu)建出一個等價(jià)的nfa,然后nfa又可以確定化成dfa,似乎到此事情搞完了,但事實(shí)證明(有時(shí)也可以顯然地發(fā)現(xiàn)),最終構(gòu)成的這dfa似乎有些復(fù)雜,有些狀態(tài)好像很冗余,呃,是的,dfa是可以最小化的。
最小化dfa狀態(tài)數(shù)算法的思想是,在開始時(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è)進(jìn)一步考察,如果發(fā)現(xiàn)有些狀態(tài)不能合并,那就分出來吧,這樣重復(fù)考察,直到發(fā)現(xiàn)沒有狀態(tài)會不能合并時(shí),就做完了,此時(shí)不也正是最優(yōu)解么。
嗯,就是這個,所以一開始,我們把所有非終結(jié)狀態(tài)用一個袋子包起來,看成是一個狀態(tài),把所有終結(jié)狀態(tài)也用另一袋子包起來,也看成是一個狀態(tài),注意,別把原dfa中各狀態(tài)間的連線給扯斷了。然后,我們抽出其中一個袋子,考察其中的各個狀態(tài),我們準(zhǔn)備好所有的可能輸入,然后逐個拿出來測試,如果該袋子中的所有狀態(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可以合并,所以才把它們裝一起,究竟真的可不可以合并呆會還要再考察。考察完輸入a,還要接著考察其它的可能輸入。如果在考察完一個袋子后,發(fā)現(xiàn)所有狀態(tài)在a輸入下都可以轉(zhuǎn)移到本袋子中的狀態(tài),那么最后的dfa它們就被合并成一個狀態(tài),并且在a輸入下,它有一個到自身的狀態(tài)遷移。
對于一個token,比如用來表示數(shù)字的token:num,我們可以用正則表達(dá)式描述它,然后畫出nfa,再將nfa轉(zhuǎn)化成dfa,再最小化dfa的狀態(tài),但是我們的詞法分析器是不是分析一個token,所以我們要把所有類型的token的dfa合并成一個dfa,這樣,這個dfa也就可以識別語言的所有token了,如果在某一連串的輸入下,dfa達(dá)不到終結(jié)狀態(tài),那就說明源代碼有錯誤了。
上面這張圖和(編譯原理及實(shí)踐)中的一樣,其中的帶中括號的輸入說明這個輸入是lookahead的,在匹配成功后是要重新放回輸入流中的,比如識別num時(shí),如果發(fā)現(xiàn)個非digit的,那就說明識別到了一個number,但是最后識別的那個非digit字符是要放回輸入流的,因?yàn)樗糁乱淮巫R別。
其中從start到done的那個other,指所有非white space,非{,非letter,非digit,也非:的字符,它有可能是合法的+, *, /這些,也可能是不合法的其它輸入,如#號。因此,done這個狀態(tài)只是說本次gettoken已經(jīng)結(jié)束,狀態(tài)機(jī)是有可能因?yàn)椴缓戏ǖ妮斎攵M(jìn)入done狀態(tài)的。究竟從start到done是因?yàn)楹戏ǖ模?號導(dǎo)致的,還是由不合法的如#號導(dǎo)致的,將在代碼中實(shí)現(xiàn)判斷,但可以肯定的是,不管是+號還是#號作用于start狀態(tài),都會進(jìn)入done狀態(tài)。
健身英語詞篇二
首先,背單詞的方法有千種,而最根本的就一條就是重復(fù)。所以,大家一定要在背單詞的時(shí)候注意,將一個單詞放在不同的環(huán)境中,不同的背景下,重復(fù)出現(xiàn)。一個單詞,要在單詞書上看它,在閱讀文章中理解它,在例句中掌握它,并在寫作中使用它。只有在不同的場景下,看到同一個單詞,并能對其核心的意思有個透徹的理解,我們才能說這個單詞我們背下來了。
其次,考研英語對于認(rèn)知單詞要求的范圍并不廣泛。考研大綱中規(guī)定的單詞不過5500個左右。近兩年來雖然在考試中超綱單詞出現(xiàn)的頻率有所提高,但基本的單詞考察范圍并沒有太大的變化。基于這種情況,希望大家在背單詞的時(shí)候更多的是注重單詞的釋義與用法,而沒有必要記憶一堆生僻的單詞。
英語詞匯量的大小直接影響到做題質(zhì)量的高低。建議考生堅(jiān)持每天安排一定的時(shí)間進(jìn)行量的詞匯背誦,使自己保持良好的語言感覺和提高對文章的理解程度。
(1)將詞匯表從頭到尾過濾一遍,劃掉已知詞匯;
(4)針對第二類詞匯進(jìn)行學(xué)習(xí),如果能完全掌握是最好的,在寒假時(shí)間有限的情況下,可以暫且放松這一部分的要求。
面對單詞,我們不僅要掌握它的直接含義,還要把它放在不同的語境下、背景中,它所代表的含義。要學(xué)會在單詞書上看它,在閱讀文章中理解它,在例句中掌握它,并在寫作中使用它。只有理解到這個詞匯的多重含義,才能算我們把這個詞匯背下來了。
考研大綱中規(guī)定的單詞不過5500個左右,雖然近兩年考試中超綱的單詞出現(xiàn)的頻率有所提高,但是基本的單詞考查范圍并沒有太大的變化。所以,考生在背單詞時(shí)更多的要以大綱為主。
很多同學(xué)在閱讀英文文章、背英語單詞時(shí)總是會碰到許多生僻的單詞,總是夢想將所有生僻單詞一網(wǎng)打盡,可是發(fā)現(xiàn)最后的結(jié)果卻差強(qiáng)人意。要知道我們不是莎士比亞,不可能人 人都背到三十萬的詞匯量,也不是愛因斯坦,看一遍就能全部記住,所以,背單詞拒絕背誦偏僻單詞,一定學(xué)會給自己做加減法。例如下面一個句子:mr. dursley hummed as he picked out his most boring tie for work, and mrs. dursley gossiped away happily as she wrestled a screaming dudley into his high chair。它是從《哈利波特》中摘取出來的。注意劃線的單詞hum,它的意思哼唱著。我們可以根據(jù)這個單詞的意思猜到 hum這個單詞出現(xiàn)的頻率不會特別高,頻率遠(yuǎn)遠(yuǎn)小于pick、boring和scream等單詞。即使我們不知道hum的意思,對我們理解這句話或者這段文章的意思并沒有形成任何障礙,并且我們可以通過上下文猜出hum的意思大概是mr. dursley打領(lǐng)帶時(shí)做的一個動作。
在英語學(xué)習(xí)難度開始加深而學(xué)習(xí)壓力還不算大的時(shí)候,在課外時(shí)間找一些英文發(fā)音中文字幕的好萊塢大片來看。并不要求考生們能一下子聽懂每一詞每一句,而是在觀看中感受他們的思維方式與發(fā)音方式,從而得到即使是在課堂上也學(xué)不到的語感。建議大家在平時(shí)的生活中多讀一些原版的英語材料。最好是來自《經(jīng)濟(jì)學(xué)人》、《時(shí)代周刊》、《科學(xué)美國人》等雜志的文章,廣泛地閱讀不僅可以提高理解能力,還可以增加詞匯量,擴(kuò)大知識面,積累背景材料,對寫作也有很大的幫助。這樣才能保證在考研戰(zhàn)場上泰然自若,從容地應(yīng)對所遇到的問題。當(dāng)然,讀書還會給人以思想上、精神上的快樂,可以提高人的修養(yǎng),陶冶人的情操,是一件受益終生的事情。
健身英語詞篇三
cry uncle
某日打開電視正換頻道,看到電視上有兩個小孩在打架,其中一個把另一個按在地上說:快叫叔叔!就饒了你!另一個掙扎了半天也起不來,只好叫叔叔!好叔叔!快饒了我吧!笑笑之余,突然想起英語中的一個表達(dá):cry uncle 。
cry uncle,叫叔叔,意為投降。這個表達(dá)的來歷還真與小孩打架有關(guān)。羅馬帝國時(shí)期,羅馬的小孩打架如果打輸了,就會被對方逼著說uncle, my best uncle,(叔叔,我的好叔叔!)不說就不放開。那么,為什么要叫叔叔呢?有猜測說,打輸?shù)男『⒁虼蜈A的小孩表示尊敬,而叔叔和父親的地位接近,所以就要叫叔叔。
英語中的cry uncle,以其叫喊之程度不同而作 say uncle,yell uncle 以及scream uncle-叫,大喊和尖聲叫喊 。語言學(xué)家芬克(charles earle funk)認(rèn)為可能源于拉丁語。他說羅馬時(shí)代兒童遇到困難時(shí)喊叫:patrue mi patruissime。(uncle, my best of uncles.)可能是 say uncle 的來源。
1992年克林頓競選總統(tǒng)時(shí)的助手卡維爾(james carville)談到當(dāng)時(shí)的老布什總統(tǒng)時(shí)說:he didnt yell uncle; he screamed it,就是說布什宣布投降也。形勢不利,還是叫聲爺叔的好。
[瘋狂實(shí)戰(zhàn)]