第一篇:詞法分析小結(jié)
詞法分析是編譯器工作的第一階段,它的工作就是從輸入(源代碼)中取得token,以作為parser(語(yǔ)法分析)的輸入,一般在詞法分析階段都會(huì)把一些無(wú)用的空白字符(white space,即空格、tab和換行)以及注釋剔除,以降低下一步分析的復(fù)雜度,詞法分析器一般會(huì)提供一個(gè)gettoken()這樣的方法,parser可以在做語(yǔ)法分析時(shí)調(diào)用詞法分析器的這個(gè)方法來(lái)得到下一個(gè)token,所以詞法分析器并不是一次性遍歷所有源代碼,而是采取這種on-demand的方式:只在parser需要時(shí)才工作,并且每次只取一個(gè)token。
token和lexeme
首先,token不等于lexeme。token和lexeme的關(guān)系就類似于面向?qū)ο笳Z(yǔ)言中“類”和“實(shí)例”(或“對(duì)象”)之間的關(guān)系,這個(gè)用中文不知該如何解釋才好,比如語(yǔ)言中的變量a和b,它們都屬于同一種token:identifier,而a的lexeme是”a”,b則是”b”,而每個(gè)關(guān)鍵字都是一種token。token可以附帶有一個(gè)值屬性,例如變量a,當(dāng)調(diào)用詞法分析器的gettoken()時(shí),會(huì)返回一個(gè)identifier類型的token,這個(gè)token帶有一個(gè)屬性“a”,屬性可以是多樣的,例如表示數(shù)字的token可以帶有一個(gè)表示數(shù)字值的屬性,它是整型的。
如下代碼:
int age = 23;
int count = 50;
可以依次提取出8個(gè)token:int(值為”int”),id(值為”age”),assign(值為”=”),number(值為整型數(shù)值23),int(值為”int”),id(值為”count”),assign(值為”=”),number(值為50)
正則表達(dá)式
正則表達(dá)式可以用來(lái)描述字符串模式,例如我們可以用digit+來(lái)表示number的token,其中digit表示單個(gè)數(shù)字(這里說(shuō)正則表達(dá)式并不完全和實(shí)現(xiàn)的正則引擎所識(shí)別的正則表達(dá)式等價(jià),這里只是為了描述問(wèn)題而已)。
然而像c語(yǔ)言的的多行注釋,用正則表達(dá)式來(lái)描述就比較麻煩,此時(shí)更傾向于直接用有窮自動(dòng)機(jī)(finite automaton)來(lái)描述,因?yàn)橛盟鼇?lái)描述非常直觀且很容易。
有窮自動(dòng)機(jī)(finite automata)
有窮自動(dòng)機(jī)也稱為有限狀態(tài)機(jī),狀態(tài)在輸入字符的作用下發(fā)生遷移,因此,它可以用來(lái)識(shí)別token,也因此,我們只要畫得出fa,之后再用代碼實(shí)現(xiàn)這個(gè)fa,那詞法分析器也就差不多弄好了。
有窮自動(dòng)機(jī)分確定性(dfa)和非確定性(nfa)兩種,如果對(duì)于同一個(gè)輸入,只會(huì)有一個(gè)確定的狀態(tài)遷移路線,也就是只有一個(gè)確定的“下一狀態(tài)”,那就是dfa,否則就是nfa。
因?yàn)閐fa對(duì)于同一個(gè)輸入只有一個(gè)確定的下一狀態(tài),所以詞法分析器當(dāng)然優(yōu)先采用它,那nfa拿來(lái)干嘛用呢?nfa用來(lái)做描述用時(shí)更方便,我們可以非常迅速地畫出一個(gè)識(shí)別token的nfa圖,但要想直接畫出個(gè)dfa那要?jiǎng)硬簧倌X筋。
根據(jù)正則表達(dá)式構(gòu)建nfa
如上所述,nfa更容易畫出,那我們就先研究nfa,在定義token時(shí),我們可以用正則表達(dá)式來(lái)描述它,因?yàn)檎齽t表達(dá)式干這行很合適,例如一個(gè)digit+就可以描述數(shù)字,多方便。因此,我們需要根據(jù)正則表達(dá)式畫出與之等價(jià)的nfa。而這個(gè)算法非常簡(jiǎn)單,就是tompson’s construction,這個(gè)書上寫得很清楚了。
將nfa轉(zhuǎn)化成dfa(nfa的確定化)
對(duì)于計(jì)算機(jī)來(lái)說(shuō),面對(duì)同一個(gè)輸入,如果有多個(gè)下一狀態(tài),那計(jì)算機(jī)就不清楚要轉(zhuǎn)到哪個(gè)狀態(tài),所以我們期望能從正則表達(dá)式得到dfa,而不是nfa,因?yàn)檫@樣將來(lái)編程實(shí)現(xiàn)時(shí)比較自然(同一輸入有確定的一個(gè)下一狀態(tài)),而幸運(yùn)的是,每個(gè)nfa都可以轉(zhuǎn)化成dfa。為什么nfa可以轉(zhuǎn)化成dfa?因?yàn)閒a(finite automata)中的狀態(tài)都是我們自己畫的,只要fa能正確的識(shí)別token,那就ok了,也就是,如果nfa和dfa都可以達(dá)到一樣的效果:識(shí)別token,那其它的我們就不管了。
實(shí)現(xiàn)詞法分析器
對(duì)于一個(gè)token,比如用來(lái)表示數(shù)字的token:num,我們可以用正則表達(dá)式描述它,然后畫出nfa,再將nfa轉(zhuǎn)化成dfa,再最小化dfa的狀態(tài),但是我們的詞法分析器是不是分析一個(gè)token,所以我們要把所有類型的token的dfa合并成一個(gè)dfa,這樣,這個(gè)dfa也就可以識(shí)別語(yǔ)言的所有token了,如果在某一連串的輸入下,dfa達(dá)不到終結(jié)狀態(tài),那就說(shuō)明源代碼有錯(cuò)誤了。
我用c#實(shí)現(xiàn)了一個(gè)用于《compiler construction: principles and practice》中tiny語(yǔ)言的詞法分析器,tiny語(yǔ)言有關(guān)鍵字:if, then, else, end, repeat, until, read, write,有操作符+,-,*,/,=,<,(,),;,:=(全角逗號(hào)不算,是文章的分隔符)這10個(gè),然后其余的token有number(一或多個(gè)數(shù)字)和identifier(一或多個(gè)字母),其dfa如下圖:
上面這張圖和《編譯原理及實(shí)踐》中的一樣,其中的帶中括號(hào)的輸入說(shuō)明這個(gè)輸入是lookahead的,在匹配成功后是要重新放回輸入流中的,比如識(shí)別num時(shí),如果發(fā)現(xiàn)個(gè)非digit的,那就說(shuō)明識(shí)別到了一個(gè)number,但是最后識(shí)別的那個(gè)非digit字符是要放回輸入流的,因?yàn)樗糁乱淮巫R(shí)別。
其中從start到done的那個(gè)other,指所有非white space,非{,非letter,非digit,也非:的字符,它有可能是合法的+, *, /這些,也可能是不合法的其它輸入,如#號(hào)。因此,done這個(gè)狀態(tài)只是說(shuō)本次gettoken已經(jīng)結(jié)束,狀態(tài)機(jī)是有可能因?yàn)椴缓戏ǖ妮斎攵M(jìn)入done狀態(tài)的。究竟從start到done是因?yàn)楹戏ǖ?,?號(hào)導(dǎo)致的,還是由不合法的如#號(hào)導(dǎo)致的,將在代碼中實(shí)現(xiàn)判斷,但可以肯定的是,不管是+號(hào)還是#號(hào)作用于start狀態(tài),都會(huì)進(jìn)入done狀態(tài)。
第二篇:《編譯原理》課程(詞法分析)實(shí)驗(yàn)報(bào)告
一.實(shí)驗(yàn)序號(hào):《編譯原理》第一次實(shí)驗(yàn)
二.實(shí)驗(yàn)題目:詞法分析
三.實(shí)驗(yàn)日期:2010.10
四.實(shí)驗(yàn)環(huán)境(操作系統(tǒng),開(kāi)發(fā)語(yǔ)言)
操作系統(tǒng):Windows
開(kāi)發(fā)語(yǔ)言:C
五.實(shí)驗(yàn)內(nèi)容(實(shí)驗(yàn)要求)
a)將標(biāo)識(shí)符的詞法改為“以大寫字母或小寫字母開(kāi)頭,后面可以跟大寫字
母或小寫字母或數(shù)字或下劃線”。
b)將<條件>中的表示相等關(guān)系的單詞“=”改為“= =”
c)將原來(lái)的無(wú)小數(shù)的數(shù)改為可以有小數(shù)的數(shù)
六.實(shí)驗(yàn)步驟
a)打開(kāi)VC++,找到getsym()項(xiàng)目。
int getsym()
{...}
在getsym()函數(shù)中設(shè)置斷點(diǎn),F(xiàn)10逐過(guò)程調(diào)試
根據(jù)要求a修改為
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
往后面看,修改while(ch>='a' && ch<='z' || ch>='0' && ch<='9' ||ch>='A' && ch<='Z' || ch=='_');
b)在檢測(cè)賦值符號(hào)的程序段中找到等號(hào) = 的判斷代碼,改變成為 = = 即
可。
c)在獲取整數(shù)數(shù)字的值的程序段后面添加判斷小數(shù)點(diǎn)的代碼。如果是,即
讀取符號(hào)并且按照小數(shù)的要求將其縮小并且累加到總的符號(hào)串中。
七.實(shí)驗(yàn)體會(huì)(包括收獲、心得體會(huì)、存在的問(wèn)題及解決問(wèn)題的方法、建議等)
通過(guò)實(shí)驗(yàn),如果要修改代碼的話,首先應(yīng)該讀懂源碼,在修改之前了解到程序段的功能是什么,然后再在相應(yīng)的行進(jìn)行修改添加,再進(jìn)行合理的調(diào)試。如果問(wèn)題太過(guò)困難可以查詢資料或與同學(xué)進(jìn)行討論
八.實(shí)驗(yàn)結(jié)果(關(guān)鍵源程序)
a)
int getsym()
{
int i,j,k;
while(ch==' '||ch==10||ch==9)/*忽略空格,換行和TAB*/{
getchdo;
}
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')/*名字或保留字以a..zA。Z開(kāi)頭*/{
k=0;
do{
if(k { a[k]=ch; k++; } getchdo; }while(ch>='a' && ch<='z' || ch>='0' && ch<='9' || ch>='A' && ch<='Z' || ch=='_');// if(ch>='0'&&ch<='9')/*檢測(cè)是否為數(shù)字,以0..9開(kāi)頭*/{ k=0; num=0; sym=number; do{ //435 num=10*num+ch-'0'; k++; getchdo; }while(ch>='0' && ch<='9'); if(ch=='.') { k++; sym=period; getchdo; sym=number; int div=10; do{num=num+(ch-'0')/div; k++; getchdo; div=div*10; }while(ch>='0'&&ch<='9'); } b) else { if(ch=='>')//檢測(cè)大于或大于等于符號(hào){ getchdo; if(ch=='=')//add by M { sym=geq;//構(gòu)成>= getchdo; } else { sym=gtr;//否則就是一個(gè)單獨(dú)的>號(hào)} } else { if(ch=='=') { getchdo; if(ch=='=') { sym=deq; getchdo; } else { sym=eql; } } c)else {if(ch == ’.’) {k=10; getchdo; do{num=num+(ch-'0')/k; k=k*10; getchdo; }while(ch>='0'&&ch<='9');} } 實(shí)驗(yàn)一 詞法分析設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí):4 實(shí)驗(yàn)類型:綜合 實(shí)驗(yàn)要求:必修 一、實(shí)驗(yàn)?zāi)康?/p> 通過(guò)本實(shí)驗(yàn)的編程實(shí)踐,使學(xué)生了解詞法分析的任務(wù),掌握詞法分析程序設(shè)計(jì)的原理和構(gòu)造方法,使學(xué)生對(duì)編譯的基本概念、原理和方法有完整的和清楚的理解,并能正確地、熟練地運(yùn)用。 二、實(shí)驗(yàn)內(nèi)容 用VC++/VB/JAVA語(yǔ)言實(shí)現(xiàn)對(duì)C語(yǔ)言子集的源程序進(jìn)行詞法分析。通過(guò)輸入源程序從左到右對(duì)字符串進(jìn)行掃描和分解,依次輸出各個(gè)單詞的內(nèi)部編碼及單詞符號(hào)自身值;若遇到錯(cuò)誤則顯示“Error”,然后跳過(guò)錯(cuò)誤部分繼續(xù)顯示 ;同時(shí)進(jìn)行標(biāo)識(shí)符登記符號(hào)表的管理。以下是實(shí)現(xiàn)詞法分析設(shè)計(jì)的主要工作:(1)從源程序文件中讀入字符。 (2)統(tǒng)計(jì)行數(shù)和列數(shù)用于錯(cuò)誤單詞的定位。(3)刪除空格類字符,包括回車、制表符空格。 (4)按拼寫單詞,并用(內(nèi)碼,屬性)二元式表示。(屬性值——token的機(jī)內(nèi)表示)(5)如果發(fā)現(xiàn)錯(cuò)誤則報(bào)告出錯(cuò) (6)根據(jù)需要是否填寫標(biāo)識(shí)符表供以后各階段使用。單詞的基本分類: ? ? ? ? ? ? 關(guān)鍵字:由程序語(yǔ)言定義的具有固定意義的標(biāo)識(shí)符。也稱為保留字例如 標(biāo)識(shí)符:用以表示各種名字,如變量名、數(shù)組名、函數(shù)名; 常數(shù): 任何數(shù)值常數(shù)。如 125, 1,0.5,3.1416; 運(yùn)算符:+、-、*、/; 關(guān)系運(yùn)算符: <、<=、=、>、>=、<>; 分界符: ;、,、(、)、[、]; if、for、while、printf ; 單詞種別碼為1。 三、實(shí)驗(yàn)要求 1、編程時(shí)注意編程風(fēng)格:空行的使用、注釋的使用、縮進(jìn)的使用等。 2、將標(biāo)識(shí)符填寫的相應(yīng)符號(hào)表須提供給編譯程序的以后各階段使用。 3、根據(jù)測(cè)試數(shù)據(jù)進(jìn)行測(cè)試。測(cè)試實(shí)例應(yīng)包括以下三個(gè)部分: ? 全部合法的輸入。? 各種組合的非法輸入。? 由記號(hào)組成的句子。 4、詞法分析程序設(shè)計(jì)要求輸出形式: 例:輸入VC++語(yǔ)言的實(shí)例程序: If i=0 then n++;a﹤= 3b %);輸出形式為: 單詞 二元序列 類 型 (單詞種別,單詞屬性) for (1,for) 關(guān)鍵字 i (6,i) 標(biāo)識(shí)符 = (4,=) 關(guān)系運(yùn)算符0 (5,0) 常數(shù) then (1,then) 關(guān)鍵字 n (6,n) 標(biāo)識(shí)符 ++ Error Error ; (2,;) 分界符 位置(行,列) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) a (6,a) 標(biāo)識(shí)符 (2,1)﹤= (4,<=) 關(guān)系運(yùn)算符 (2,2)3b Error Error (2,4)% Error Error (2,4)) (2,)) 分界符 (2,5); (2,;) 分界符 (2,6) 實(shí)驗(yàn)報(bào)告正文: ? 功能描述:該程序具有詞法分析功能,即面對(duì)一段程序源代碼,通過(guò)該程序,能檢查出源代碼是否由詞法錯(cuò)誤。 ? 三、詞法分析實(shí)驗(yàn)設(shè)計(jì)思想及算法: ? 首先構(gòu)造六個(gè)表,key[]={“auto”,“break”,“case”,“catch”,“char”,“class”,“const”,“continue”,“default”,“delete”,“do”,“double”,“else”,“enum”,“float”,“for”,“if”,“int”,“l(fā)ong”,“new”,“private”,“protected”,“public”,“register”,“return”,“short”,“static”,“struct”,“switch”,“this”,“void”,“while”,“then”};關(guān)鍵字表, 單詞種別碼1; Delimiter[]={“;”,“(”,“)”,“[”,“]”,“,”,“.”,“{”,“}”};分界符表 單詞種別碼2 Operator[]={“+”,“-”,“*”,“/”};算術(shù)運(yùn)算符表 單詞種別碼3 R_operators[]={“<”,“<=”,“==”,“>”,“>=”},關(guān)鍵字表 , 單詞種別碼1;string Number[100];常數(shù)表 單詞種別碼5;string Identifier[100];標(biāo)示符表 單詞種別碼6;構(gòu)造關(guān)鍵字判斷函數(shù)Iskey(),字母判斷函數(shù)Isletter(),數(shù)字判斷函數(shù)Isnumber();構(gòu)造標(biāo)示符判別函數(shù)InsertId(),若輸入的標(biāo)示符在標(biāo)示符數(shù)組Identifier []中,返回其下標(biāo),若不在,將該標(biāo)示符插到數(shù)組末尾。構(gòu)造標(biāo)示符判別函數(shù)InsertNumber(),若輸入的數(shù)字在數(shù)字?jǐn)?shù)組Number[]中,返回其下標(biāo),若不在,將該數(shù)字插到數(shù)組末尾。具體分析函數(shù)analyse()具體實(shí)現(xiàn)輸入源代碼的識(shí)別。anaiyse()構(gòu)造思路,程序設(shè)計(jì)圖: 綜合以上分析,畫出整個(gè)程序的運(yùn)行分析程序圖,如下: 開(kāi)始 輸入源文件路徑否 路徑是否有效是打開(kāi)源文件初始化文件指針識(shí)別指針內(nèi)容文件結(jié)束?否是空格,空白或換行嗎是跳過(guò)該字符是結(jié)束否是字母嗎是將字符加入字符數(shù)組Word[]否是數(shù)字嗎否是界符嗎否將字符加入字符數(shù)組Word[]是將字符加入字符數(shù)組Word[]是指向下一字符識(shí)別指針內(nèi)容是輸出word為界符輸出Word內(nèi)容為不可識(shí)別將字符加入字符數(shù)組Word[]將字符加入字符數(shù)組Word[]指向下一字符指向下一字符是字母惑數(shù)字嗎回退否將word與關(guān)鍵字表key進(jìn)行匹配輸出word為普通標(biāo)示符是數(shù)字嗎否輸出word為常數(shù)指向下一字符否匹配?是輸出word為關(guān)鍵字整個(gè)程序的運(yùn)行分析程序圖 ? 軟件的測(cè)試方法和測(cè)試結(jié)果: 首先,將要分析的源代碼寫入一個(gè)文本,存于磁盤中,然后運(yùn)行程序,輸入源代碼文件存放的路徑,若輸入路徑正確,程序?qū)⒆詣?dòng)分析源代碼,若輸入路徑不正確,程序?qū)@示,路徑錯(cuò)誤,請(qǐng)重新輸入的提示。下面為具體的運(yùn)行實(shí)例: 源代碼為:If i=0 then n++;a﹤= 3b %) 輸出滿足要求。 ? 實(shí)驗(yàn)總結(jié)(設(shè)計(jì)的特點(diǎn)、不足、收獲與體會(huì)): 通過(guò)此次實(shí)驗(yàn),讓我了解到如何設(shè)計(jì)、編制并調(diào)試詞法分析程序,熟悉了構(gòu)造詞法分析程序的手工方式的相關(guān)原理,加深了對(duì)編譯原理詞法分析的理解,本次使用C++語(yǔ)言直接編寫此法分析程序,也讓我重新熟悉了C++語(yǔ)言的相關(guān)內(nèi)容,加深了對(duì)C++語(yǔ)言的用途的理解。本程序的數(shù)據(jù)輸入采取直接從文件中讀取,而不是由鍵盤輸入,因此在測(cè)試過(guò)程中,輸入得到大大簡(jiǎn)化,但是本程序的關(guān)鍵字表只初始化了一部分關(guān)鍵字,還可繼續(xù)擴(kuò)充(只需擴(kuò)大數(shù)組,向其中補(bǔ)充要添加的關(guān)鍵字),而且程序的測(cè)試數(shù)據(jù)存在不足,程序可能存在未發(fā)現(xiàn)的漏洞,以上兩點(diǎn)有待改善。附錄該程序的源代碼: #include 第四講 英漢詞法對(duì)比 1、詞類劃分 2、詞義區(qū)分 3、搭配習(xí)慣 4、詞序先后 詞類 ?詞類的概念:詞類是根據(jù)詞在句子中的語(yǔ)法功能進(jìn)行的一個(gè)劃分,諸如名詞、動(dòng)詞、形容詞、副詞等。 ?誰(shuí)能夠說(shuō)出英漢兩種語(yǔ)言中各有多少種詞類? 詞類劃分 ?漢語(yǔ)把詞分為12類(名詞、動(dòng)詞、形容詞、數(shù)詞、量詞和代詞是實(shí)詞,副詞、介詞、連詞、助詞、擬聲詞和嘆詞是虛詞),英語(yǔ)則10類(實(shí)詞:名詞、動(dòng)詞、形容詞和副詞。虛詞:代詞、冠詞、介詞、連詞、數(shù)量詞和感嘆詞):漢語(yǔ)沒(méi)有冠詞,而英語(yǔ)則少了量詞(名量詞和動(dòng)量詞)和助詞(時(shí)態(tài)助詞和語(yǔ)氣助詞) ?(名量詞)一個(gè)人:一張嘴,一雙眼睛,兩只耳朵,兩條腿 ?(動(dòng)量詞)等一下,念一遍,哭一場(chǎng),走一趟 ?(助詞) 著,了,過(guò)(時(shí)態(tài)助詞);的,呢,罷了,而已,啦,嗎,吧,啊,么(語(yǔ)氣助詞); 詞類的句法功能 ?漢語(yǔ)一個(gè)詞類能充當(dāng)較多的句法功能 ?英語(yǔ)一個(gè)詞能充當(dāng)?shù)木浞ǔ煞州^少,充當(dāng)不同成分需要詞類轉(zhuǎn)換。 英漢比較 ?謂語(yǔ):我們討論了這個(gè)問(wèn)題。?We have discussed it.?主語(yǔ):討論剛剛開(kāi)始。? The discussion just began.?賓語(yǔ):很多同學(xué)參加了這次討論。?Many students took part in the discussion.?定語(yǔ):我們得確定一下討論的內(nèi)容。? We have to decide on what to discuss.主要詞類比較 ?名詞 ?動(dòng)詞 ?代詞 ?介詞 名詞 1 漢語(yǔ)的特征 ?1)無(wú)單復(fù)數(shù)之分(eg:我是老師;我們都是老師)?2)后可加上們,群(牛群)?±表復(fù)數(shù),但此時(shí)其前就不能加數(shù)詞(錯(cuò)誤eg:三個(gè)同學(xué)們); ?3)量詞放在名詞后面表示統(tǒng)稱(一輛車:車輛,一張紙:紙張) 名詞 2 英語(yǔ)的特征 1)可數(shù)名詞前可以直接加上數(shù)詞:two students; 2)不可數(shù)名詞前要加表示量的名詞: two pieces of news, three sacks of flour, four meters of cloth, six cakes of soap; 3)有特殊含義的復(fù)數(shù):colors彩旗,ashes骨灰,the last words 遺囑(have a word with Jack和杰克說(shuō)句話;have words with Jack 和杰克吵架),securities證券,at the feet of屈服于 名詞 3 翻譯(注意三個(gè)方面): ?1)英語(yǔ)名詞復(fù)數(shù)翻成漢語(yǔ)通常不必表示出來(lái)(foreign invaders 外國(guó)侵略者,the students學(xué)生)?2 補(bǔ)出相應(yīng)的漢語(yǔ)量詞:20 banks 20家銀行, 15 fish 15尾(條)魚(yú) 名詞 4 ?3)如何體現(xiàn)復(fù)數(shù)概念 ?the eastern provinces ?rows of new buildings ?the Bakers ?the first electronic computers ?Personal tragedy haunted his entire life, in the deaths of loved ones.參考譯文 ?東部各省 ?一排排新建大樓 ?貝克一家 ?第一批(代)電子計(jì)算機(jī) ?親人們相繼去世,使他一生充滿了人生悲劇。 動(dòng)詞 1 時(shí)態(tài) ?1)漢語(yǔ)動(dòng)詞一般沒(méi)有時(shí)態(tài)變化,但有時(shí)間助詞:著,了,過(guò); ?2)英語(yǔ)有豐富的時(shí)態(tài)變化(16種:3種時(shí)[現(xiàn)在、過(guò)去、將來(lái)],3種態(tài)[一般、進(jìn)行、完成]),而且有些時(shí)態(tài)還可以表示特定的感情色彩。 動(dòng)詞 2 ?(1)You?ˉre always asking me such questions!?你老是問(wèn)我這樣的問(wèn)題!(用現(xiàn)在進(jìn)行時(shí)表示厭煩) ?(2)I am now living in a very pleasant flat. ?我現(xiàn)在住在一間非常舒適的公寓里。(用現(xiàn)在進(jìn)行時(shí)表示滿意) 動(dòng)詞 3 ?傳遞同樣的意思,英語(yǔ)只要選用合適的時(shí)態(tài)就可以了,漢語(yǔ)則必須使用詞匯手段。?It has been noted that those who live,or have lived,in the shadow of death bring a mellow sweetness to everything they do.?(5)His father, who was a good locksmith in the village, is in prison.動(dòng)詞 4 ?人們已經(jīng)注意到大凡受到死亡威脅的人或是死里逃生的人對(duì)于他們所干的任何事總是興趣盎然。 ?他的父親過(guò)去是村上有名的鎖匠,現(xiàn)在卻成了階下囚。 動(dòng)詞 5 語(yǔ)態(tài) 1)漢語(yǔ)重人稱,所以句子主語(yǔ)一般都是有生命的,故主動(dòng)態(tài)較多。2)英語(yǔ)重物稱,被動(dòng)語(yǔ)態(tài)使用較多。 ?It is generally considered that he is a bad egg.大家說(shuō)他是壞蛋。 (2)Everything he advertised was guaranteed to last ?°forever?±.他保證他廣告中所登的東西都能永久使用。 代詞 ?使用頻率上的差異:由于英語(yǔ)每個(gè)句子、分句都要一個(gè)主語(yǔ),另外所屬關(guān)系也要明確指出來(lái),所以代詞和物主代詞的使用頻率就很高。 ?代詞與所指代的實(shí)詞的先后:英語(yǔ)里代詞可前可后,漢語(yǔ)里先實(shí)詞后代詞 代詞差異舉例 ?As we discuss our differences, neither of us will compromise in our principles.But while we cannot close the gulf between us, we can try to bridge it so that we may be able to talk across it.?在討論分歧時(shí),哪一方都不會(huì)在原則上妥協(xié)。但是,雖然不能彌合我們之間的鴻溝,我們卻能搭一座橋,以便越過(guò)鴻溝進(jìn)行會(huì)談。(省略;轉(zhuǎn)換;還原)參考譯文 ?In its long history of development, China has formed its own tradition.?在中國(guó)的歷史長(zhǎng)河中,她已經(jīng)形成了自身的傳統(tǒng)。 介詞 ?英語(yǔ)對(duì)介詞的使用遠(yuǎn)遠(yuǎn)超過(guò)漢語(yǔ) ?介詞的特殊用法(relations of space and time?a>factual or logical?a>idiomatic) 介詞用法舉例 ?The street runs westward, across a great black bridge, up a hill and down it again, by little shops and meat-markets, past single-storied homes, until suddenly it stops against a wide green lawn.?The bill is on me.?Don?ˉt go to bed on a full or an empty stomach.參考譯文 ?大街往西延伸,穿過(guò)一座黑色的大橋,翻過(guò)山崗,經(jīng)過(guò)許多小鋪和肉市,又經(jīng)過(guò)一些平房,然后突然沖著一大片綠色的草地中止了。?我來(lái)買單。 ?吃的太飽或者空腹都不宜上床睡覺(jué)。 詞義區(qū)分 ?詞義構(gòu)成 ?詞義對(duì)應(yīng) ?詞義差異 英漢詞義構(gòu)成的來(lái)源 ?(1)聯(lián)想:自行車/腳踏車/單車/洋車(時(shí)代背景)bicycle(雙輪車)?(2)比喻:畫蛇添足/put a fifth wheel to the cart ?(3)典故:掩耳盜鈴;the Trojan horse ?(4)簡(jiǎn)化:打假(打擊假冒偽劣商品);radar(radio detecting and ranging);WTO(過(guò)多簡(jiǎn)化會(huì)鬧笑話);老板,總裁 英漢詞義對(duì)應(yīng) ?詞語(yǔ)的形成并沒(méi)有一個(gè)固定統(tǒng)一的規(guī)律,因此有些詞語(yǔ)看起來(lái)會(huì)顯得不太合理:醬油soy(并非油),ladybird(瓢蟲(chóng));?由于這種隨意性,英漢兩種語(yǔ)言一致的情況極少(金魚(yú) gold fish), 但絕大多數(shù)情況下不同(自由體操 floor exercise;) 詞義對(duì)應(yīng)關(guān)系 ?(1)完全對(duì)應(yīng)(少數(shù))(eg:goldfish ?(2)部分對(duì)應(yīng)(eg:parent/uncle)?(3)無(wú)對(duì)應(yīng)(eg:英語(yǔ)中的教授:professor/assistant prof./associate prof.)?(4)一對(duì)多/多對(duì)一 詞義差異 1 ?俯臥 lie on one?ˉs stomach ?倒立 stand on one?ˉs head ?蛙泳 breast stroke ?蝶泳 butterfly(stroke)?雙杠 parallel bars ?高低杠 high-and-low bars/uneven bars ?單杠 horizontal bar ? ?活字典 walking dictionary 詞義差異 2 ?Outpatient 門診病人 ?走讀生 daily student ?Tableware 餐具 ?Vacuum flask(原理上講) 保溫杯(功能上講)?Stopwatch 秒表 ?Family tree 家譜 ?看手相 read palm tree ?Contact lens 隱形眼鏡 詞義差異 3 ?九五折percent discount(five percent off)?座鐘 standing clock ?三角債 debt chain ?三角戀 love triangle 詞義差異 4 ?傳銷 pyramid selling ?雞皮疙瘩 gooseflesh ?腳踏兩條船 fence-sitter ?魚(yú)尾紋 crow?ˉs feet ?內(nèi)八字 pigeon-toed ?外八字 goose-toed ?露馬腳 let the cat out of the bag 搭配習(xí)慣 1 英漢在詞的搭配能力方面往往有差異。 ?(1)?°吃?± ?吃魚(yú)(eat)、吃藥(take);吃閑飯(idle)、吃軟飯(live on one?ˉs wife);吃醋(jealous)、吃老本(draw on your past);吃苦、吃驚、吃香(popular)、吃官司;吃飯館、吃食堂 ?傍大款/富婆(find a sugar daddy/mummy) 搭配習(xí)慣 2 ?翻譯時(shí)應(yīng)當(dāng)注意: ?--During emergency, people should use the stairs instead of the elevator.?緊急狀況下,人們應(yīng)該走樓道,不要乘電梯。 詞序?qū)Ρ?例子: He was daring and resourceful besides being a fine shot.屢戰(zhàn)屢敗 屢敗屢戰(zhàn) 有什么吃什么 吃什么有什么 John did not marry Mary because he loved her.狀語(yǔ)及定語(yǔ)的位置;大小 前后;因果順序;否定轉(zhuǎn)移;語(yǔ)序的靈活與相對(duì)固定 中考英語(yǔ)詞法復(fù)習(xí)總結(jié) 1.掌握所學(xué)單詞的形態(tài)變化,中考英語(yǔ)復(fù)習(xí)語(yǔ)法。 2.掌握簡(jiǎn)單句的五種基本句型,四筆頭練習(xí)基本正確。 3.能理解不復(fù)雜的、含有狀語(yǔ)從句或賓語(yǔ)從句的復(fù)合句。 4.掌握動(dòng)詞的五種基本時(shí)態(tài)的基本用法。 5.能理解并初步掌握過(guò)去進(jìn)行時(shí)、過(guò)去完成時(shí)和過(guò)去將來(lái)時(shí)的基本用法。 6.掌握一般現(xiàn)在時(shí)、一般過(guò)去時(shí)的被動(dòng)語(yǔ)態(tài)的基本用法。 7.掌握動(dòng)詞不定式作賓語(yǔ)、賓語(yǔ)補(bǔ)足語(yǔ)和狀語(yǔ)的用法。 語(yǔ)法知識(shí)是在掌握一定量的單詞和短語(yǔ)的基礎(chǔ)上才能獲得的。因此,單詞的形態(tài)變化和簡(jiǎn)單句的五種基本句型是語(yǔ)法學(xué)習(xí)的基礎(chǔ)之基礎(chǔ)。五種基本時(shí)態(tài)和含有不復(fù)雜的狀語(yǔ)從句及賓語(yǔ)從句的復(fù)合句是初中畢業(yè)班學(xué)生學(xué)習(xí)的重點(diǎn)也是語(yǔ)法學(xué)習(xí)的難點(diǎn)。五種基本時(shí)態(tài)中的一般過(guò)去時(shí)和現(xiàn)在完成時(shí)的基本用法及其區(qū)別是學(xué)習(xí)的難點(diǎn)。狀語(yǔ)從句中的時(shí)態(tài)問(wèn)題,賓語(yǔ)從句中的主語(yǔ)和謂語(yǔ)的語(yǔ)序問(wèn)題是學(xué)生感到頭痛的問(wèn)題。被動(dòng)語(yǔ)態(tài)是中國(guó)學(xué)生最不喜歡學(xué)習(xí)和使用的一種語(yǔ)態(tài)。因此,學(xué)生在學(xué)習(xí)時(shí),時(shí)常感覺(jué)到很困難。動(dòng)詞不定式是初中英語(yǔ)語(yǔ)法中的一個(gè)重點(diǎn)。不定式在句中作賓語(yǔ)、賓語(yǔ)補(bǔ)足語(yǔ)和狀語(yǔ)等用法均要求掌握,特別是一些動(dòng)詞,有些后面要求跟不定式作賓語(yǔ),有些則要求跟動(dòng)詞一ing形式作賓語(yǔ)。 總之,語(yǔ)法部分是英語(yǔ)學(xué)習(xí)的重點(diǎn)和難點(diǎn)。語(yǔ)法知識(shí)掌握得好,將大大加快英語(yǔ)學(xué)習(xí)的進(jìn)程。 語(yǔ)法部分歷年來(lái)是中考的必考內(nèi)容。考試的范圍廣,涉及單詞詞形變化、基本句子結(jié)構(gòu)、五種基本時(shí)態(tài)搬動(dòng)語(yǔ)態(tài)、不定式用法以及狀語(yǔ)從句、賓語(yǔ)從句,等等。近年來(lái),在教學(xué)改革方面加大了對(duì)聽(tīng)說(shuō)教學(xué)的力度,初中段以培養(yǎng)學(xué)生的交際能力為主,為高中段的英語(yǔ)學(xué)習(xí)打好基礎(chǔ),對(duì)語(yǔ)法知識(shí)的要求作了調(diào)整,降低了難度,但考查的范圍并沒(méi)有減小。單純考語(yǔ)法知識(shí)的題比以前明顯減少。試題往往設(shè)置一個(gè)情景,在對(duì)話中考查時(shí)態(tài)及基本句型。當(dāng)然,有些語(yǔ)法項(xiàng)目設(shè)置在單句中,如:不定式、被動(dòng)語(yǔ)態(tài)以及詞語(yǔ)搭配。 語(yǔ)言學(xué)習(xí)是一個(gè)積累的過(guò)程,不記住相當(dāng)數(shù)量的詞語(yǔ)、習(xí)慣用語(yǔ)。句型和語(yǔ)法規(guī)則,是學(xué)不好英語(yǔ)的。因此,對(duì)詞形變換、句型結(jié)構(gòu)、狀語(yǔ)從句中的時(shí)態(tài)以及常用的五種基本時(shí)態(tài)的考查仍將是中考命題的熱點(diǎn)。 動(dòng)詞及其時(shí)態(tài)是英語(yǔ)學(xué)習(xí)最重要的部分,也是學(xué)習(xí)的難點(diǎn)。被動(dòng)語(yǔ)態(tài)也是學(xué)習(xí)的難點(diǎn)。賓語(yǔ)從句和狀語(yǔ)從句是復(fù)合句中最重要、最常用的結(jié)構(gòu),是初中畢業(yè)生必須掌握的從句。注意現(xiàn)在時(shí)、過(guò)去時(shí)和將來(lái)時(shí)及現(xiàn)在完成時(shí)的基本用法以及句中的副詞的用法,尤其要注意過(guò)去時(shí)與現(xiàn)在完成時(shí)的區(qū)別。賓語(yǔ)從句要注意從句結(jié)構(gòu)的語(yǔ)序問(wèn)題和時(shí)態(tài)問(wèn)題;狀語(yǔ)從句要注意在時(shí)間狀語(yǔ)從句和條件狀語(yǔ)從句中用一般現(xiàn)在時(shí)表示將來(lái)時(shí)態(tài)。動(dòng)詞、時(shí)態(tài)與語(yǔ)態(tài)與從句一定要在大量課文和對(duì)話的句子中反復(fù)操練,才能真正學(xué)會(huì)。只要你在復(fù)習(xí)和應(yīng)試中注意以上幾點(diǎn),考試就一定能取得好成績(jī)。第三篇:詞法分析設(shè)計(jì)實(shí)驗(yàn)報(bào)告(附代碼)
第四篇:4.英漢詞法對(duì)比
第五篇:中考英語(yǔ)詞法復(fù)習(xí)總結(jié)