計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)交換式和虛擬局域網(wǎng)_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)交換式和虛擬局域網(wǎng)_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)交換式和虛擬局域網(wǎng)_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)交換式和虛擬局域網(wǎng)_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)交換式和虛擬局域網(wǎng)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、PAGE 1課程設(shè)計(jì)報(bào)告課程名稱: 計(jì)算機(jī)網(wǎng)絡(luò) 設(shè)計(jì)題目: 交換式和虛擬局域網(wǎng)配置與實(shí)現(xiàn) 院 別: 計(jì)算機(jī)與信息工程學(xué)院 專 業(yè): 網(wǎng)絡(luò)工程 組 別: 第二組 起止日期: 2011年12月24日-2012年01月 08日指導(dǎo)教師: 計(jì)算機(jī)與信息工程學(xué)院二一 二年制課程設(shè)計(jì)任務(wù)書課程設(shè)計(jì)題目交換式和虛擬局域網(wǎng)配置與實(shí)現(xiàn)組長學(xué)號(hào)班級(jí)院別計(jì)算機(jī)與信息工程學(xué)院專業(yè)網(wǎng)絡(luò)工程組員指導(dǎo)教師課程設(shè)計(jì)目的交換式和虛擬局域網(wǎng)配置與實(shí)現(xiàn)課程設(shè)計(jì)所需環(huán)境Windows XP操作系統(tǒng)+Cisco Packet Tracer仿真軟件課程設(shè)計(jì)任務(wù)要求(1)實(shí)現(xiàn)交換式以太網(wǎng)組網(wǎng);(2)以太網(wǎng)絡(luò)交換機(jī)配置;(3)VLAN的劃分

2、與配置。課程設(shè)計(jì)工作進(jìn)度計(jì)劃序號(hào)起止日期工 作 內(nèi) 容分工情況12011-12-242012-01-04畫出交換式以太網(wǎng)組網(wǎng)拓?fù)浣Y(jié)構(gòu)圖;劃分VLAN22011-12-242012-01-04配置三層交換機(jī)32011-12-242012-01-04配置二層交換機(jī)42011-12-242012-01-04配置PC機(jī),設(shè)計(jì)測試52011-01-052011-01-08撰寫設(shè)計(jì)報(bào)告以及PPT指導(dǎo)教師簽字: 年 月 日教研室審核意見:教研室主任簽字: 年 月 日目 錄 TOC o 1-3 h z u HYPERLINK l _Toc344991060 引言 PAGEREF _Toc344991060 h

3、 1 HYPERLINK l _Toc344991061 第一章 需求分析 PAGEREF _Toc344991061 h 1 HYPERLINK l _Toc344991062 1.1 課程設(shè)計(jì)題目 PAGEREF _Toc344991062 h 1 HYPERLINK l _Toc344991063 1.2課程設(shè)計(jì)任務(wù)及要求 PAGEREF _Toc344991063 h 1 HYPERLINK l _Toc344991064 1.3課程設(shè)計(jì)思想 PAGEREF _Toc344991064 h 1 HYPERLINK l _Toc344991065 1.4軟硬件運(yùn)行環(huán)境及開發(fā)工具 PAGE

4、REF _Toc344991065 h 2 HYPERLINK l _Toc344991066 第二章 概要設(shè)計(jì) PAGEREF _Toc344991066 h 2 HYPERLINK l _Toc344991067 2.1流程圖 PAGEREF _Toc344991067 h 2 HYPERLINK l _Toc344991068 2.2 拓?fù)鋱D簡單說明 PAGEREF _Toc344991068 h 3 HYPERLINK l _Toc344991069 第三章 詳細(xì)設(shè)計(jì) PAGEREF _Toc344991069 h 3 HYPERLINK l _Toc344991070 3.1 三層交

5、換機(jī)的功能和配置 PAGEREF _Toc344991070 h 3 HYPERLINK l _Toc344991071 3.1.1 三層交換機(jī)的功能 PAGEREF _Toc344991071 h 3 HYPERLINK l _Toc344991072 3.2 二層交換機(jī)的功能和配置 PAGEREF _Toc344991072 h 5 HYPERLINK l _Toc344991073 3.2.1 二層交換機(jī)的功能簡介 PAGEREF _Toc344991073 h 5 HYPERLINK l _Toc344991074 3.2.2 Switch0配置信息 PAGEREF _Toc34499

6、1074 h 5 HYPERLINK l _Toc344991075 3.2.3 switch1配置信息 PAGEREF _Toc344991075 h 6 HYPERLINK l _Toc344991076 3.2.4 switch2配置信息 PAGEREF _Toc344991076 h 6 HYPERLINK l _Toc344991077 3.2.5 PC機(jī)的配置 PAGEREF _Toc344991077 h 7 HYPERLINK l _Toc344991078 第四章 調(diào)試與操作說明 PAGEREF _Toc344991078 h 7 HYPERLINK l _Toc344991

7、079 4.1 同一VLAN之間的主機(jī)通信 PAGEREF _Toc344991079 h 7 HYPERLINK l _Toc344991080 4.2 不同VLAN之間的主機(jī)通信 PAGEREF _Toc344991080 h 9 HYPERLINK l _Toc344991081 第五章 程序設(shè)計(jì)總結(jié)與體會(huì) PAGEREF _Toc344991081 h 11 HYPERLINK l _Toc344991082 第六章 致謝 PAGEREF _Toc344991082 h 12 HYPERLINK l _Toc344991083 參考文獻(xiàn) PAGEREF _Toc344991083 h

8、12滁州學(xué)院本科課程設(shè)計(jì)PAGE 12交換式和虛擬局域網(wǎng)配置與實(shí)現(xiàn)引言在日新月異的網(wǎng)絡(luò)時(shí)代,信息技術(shù)的迅猛發(fā)展和廣泛、深入地應(yīng)用,推動(dòng)了各行各業(yè)的技術(shù)進(jìn)步,帶來了新技術(shù)革命的蓬勃發(fā)展,也向教育提出了嚴(yán)峻挑戰(zhàn),推動(dòng)著一次新的教育革命。教育如何迎接信息技術(shù)發(fā)展的挑戰(zhàn),正是我們必須認(rèn)真思考和探索試驗(yàn)的事情。教育的迅速發(fā)展對(duì)教學(xué)手段和教育管理體系的要求越來越高,運(yùn)用計(jì)算機(jī)多媒體和網(wǎng)絡(luò)技術(shù)來促進(jìn)教育的全面改革已勢在必行,局域網(wǎng)涉及到各個(gè)單位、各個(gè)領(lǐng)域?,F(xiàn)在,信息化已成為發(fā)展的潮流,局域網(wǎng)的建設(shè)成為信息化建設(shè)的焦點(diǎn)。此次應(yīng)用交換機(jī)完成網(wǎng)絡(luò)拓?fù)鋱D的構(gòu)建和對(duì)VLAN的劃分和配置,綜合運(yùn)用本專業(yè)所學(xué)課程的理論課

9、程知識(shí)應(yīng)用到實(shí)際實(shí)踐中從而提高我們的獨(dú)立工作能力,掌握應(yīng)用交換機(jī)的基本配置與VLAN的劃分和配置。第一章 需求分析1.1 課程設(shè)計(jì)題目通過使用二層交換機(jī)、三層交換機(jī)和PC機(jī)構(gòu)建一個(gè)簡單以太網(wǎng)拓?fù)鋱D,并對(duì)以太網(wǎng)進(jìn)行VLAN的劃分,完成二層和三層交換機(jī)的配置使其可以通信。1.2課程設(shè)計(jì)任務(wù)及要求要求如下:(1)實(shí)現(xiàn)交換式以太網(wǎng)組網(wǎng);(2)以太網(wǎng)絡(luò)交換機(jī)配置;(3)VLAN的劃分與配置;(4)畫出交換式以太網(wǎng)組網(wǎng)拓?fù)浣Y(jié)構(gòu)圖;(5)交換機(jī)配置信息;(6)測試結(jié)果。1.3課程設(shè)計(jì)思想2臺(tái)三層交換機(jī),7臺(tái)二層交換機(jī)和19臺(tái)PC機(jī)。共劃分4個(gè)VLAN,其中一臺(tái)交換機(jī)是一個(gè)VLAN或一臺(tái)交換機(jī)內(nèi)有2個(gè)VLAN

10、,在沒有配置之前不同VLAN之間不能通信,通過配置使各個(gè)VLAN之間和以相互通信,如圖1-1所示。圖1-1 服務(wù)器管理仿真圖1.4軟硬件運(yùn)行環(huán)境及開發(fā)工具 (1) 實(shí)驗(yàn)設(shè)備:設(shè)備二層交換機(jī)三層交換機(jī)PC機(jī)雙絞線直通線數(shù)量7219若干若干 (2) 操作系統(tǒng):Windows XP;(3) 仿真環(huán)境:Cisco Packet Tracer 第二章 概要設(shè)計(jì)2.1流程圖分別對(duì)三層交換機(jī),二層交換機(jī)和PC進(jìn)行配置。配置流程如圖2-1所示。圖2-1 配置流程圖 2.2 拓?fù)鋱D簡單說明在圖1-1中,與交換機(jī)switch0直連的四臺(tái)PC機(jī)及與switch3直連的PC10和PC11機(jī)同在VLAN10中,與swi

11、tch1直連的四臺(tái)PC機(jī)在VLAN20中,與switch2直連的PC8,PC9和與switch3直連的兩臺(tái)PC機(jī)及與switch5直連的PC19同在VLAN30中,與switch4和switch6直連的以及與switch5直連的PC18同在VLAN40中,同時(shí),switch0和switch1及switch2級(jí)聯(lián),switch5與switch6級(jí)聯(lián)。第三章 詳細(xì)設(shè)計(jì)3.1 三層交換機(jī)的功能和配置3.1.1 三層交換機(jī)的功能三層 HYPERLINK /List_7.html t _blank 交換機(jī)主要應(yīng)用于組網(wǎng)中,這是我們都知道的,其有很重要的地位,第三層 HYPERLINK /List_7.h

12、tml t _blank 交換機(jī)功能的設(shè)備是一個(gè)帶有第三層 HYPERLINK /List_6.html t _blank 路由功能的第二層交換機(jī),但它是二者的有機(jī)結(jié)合,并不是簡單的把路由器設(shè)備的硬件及軟件簡單地疊加在局域網(wǎng)交換機(jī)上,為了能夠讓所有的基站(交換機(jī))都能夠知道,網(wǎng)間通信(三層交換機(jī))的地點(diǎn),三層交換機(jī)中的VTP技術(shù)可以實(shí)現(xiàn)此功能,即像感冒病毒一樣,將三層交換機(jī)的VLAN號(hào)傳播給各個(gè)交換機(jī),使各個(gè)基站都擁有所有的VLAN的信息,達(dá)到能夠通信的功能。Multilayer Switch0配置:SwitchenableSwitch#conf tSwitch(config)#hostnam

13、e lay3Lay3(config)#ip routing/允許網(wǎng)間漫游Lay3(config)#vtp mode server /產(chǎn)生感冒病毒Lay3(config)#vtp domain test /名字為“test”Lay3(config)#int f0/1Lay3(config-if)# switchport trunk encapsulation dot1q /生成Trunk鏈路802.1qLay3(config-if)# switchport mode trunk/生成Trunk鏈路Lay3(config)#vlan 10Lay3(config)#vlan 20Lay3(confi

14、g)#vlan 30Lay3(config)#vlan 40Lay3(config)#int vlan 10Lay3(config-if)#ip add 54 /VLAN10標(biāo)志Lay3(config-if)#no shut /激活標(biāo)志Lay3(config)#int vlan 20Lay3(config-if)#ip add 54 /VLAN20標(biāo)志Lay3(config-if)#no shut Lay3(config)#int vlan 30Lay3(config-if)#ip add 54 Lay3(config-if)#no shut Lay3(config)#int vlan 40L

15、ay3(config-if)#ip add 54 Lay3(config-if)#no shutLay3(config)#Z查看1:VLAN配置信息Lay3#sh vlanVLAN Name Status Ports 中間省略10 VLAN0010 active 20 VLAN0020 active 30 VLAN0030 active40 VLAN0040 active查看2:路由信息Lay3#sh ip route /查看是否允許漫游Gateway of last resort is not setC /24 is directly connected, Vlan10 C /24 is d

16、irectly connected, Vlan20 C /24 is directly connected, Vlan30C /24 is directly connected, Vlan40Multilayer Switch1配置同Multilayer Switch0配置。3.2 二層交換機(jī)的功能和配置3.2.1 二層交換機(jī)的功能簡介交換機(jī)提供了大量可供線纜連接的端口,這樣可以采用星型拓?fù)洳季€,當(dāng)它轉(zhuǎn)發(fā)幀時(shí),交換機(jī)會(huì)重新產(chǎn)生一個(gè)不失真的方形電信號(hào),交換機(jī)在每個(gè)端口上都使用相同的轉(zhuǎn)發(fā)或過濾邏輯, 像網(wǎng)橋那樣,交換機(jī)將局域網(wǎng)分為多個(gè)沖突域,每個(gè)沖突域都是有獨(dú)立的寬帶,因此大大提高了局域網(wǎng)的帶寬,

17、 除了具有網(wǎng)橋、集線器和中繼器的功能以外,交換機(jī)還提供了更先進(jìn)的功能,如虛擬局域網(wǎng)(VLAN)和更高的性能。3.2.2 Switch0配置信息SwitchenSwitch#conf tSwitch0(config)#vtp mode client /允許VTP感冒病毒Switch0 (config)#vtp domain testSwitch0 (config)#int f0/1Switch0 (config-if)#switchport mode trunk /可以走多個(gè)vlan信息/漫游鏈路Switch0 (config)#int f0/2 Switch0 (config-if)#swit

18、chport access vlan 10 /接口f0/2加入VLAN10中Switch0 (config-if)#int f0/3Switch0 (config-if)#switchport access vlan 10Switch0 (config)#int f0/5Switch0 (config-if)#switchport access vlan 10Switch0 (config)#int f0/6Switch0 (config-if)#switchport access vlan 10 Switch0 (config-if)#Z /Ctrl+Z組合鍵Switch0#查看VLAN配置

19、信息:Switch0#sh vlanVLAN Name Status Ports 中間省略10 VLAN0010 active Fa0/2 Fa0/3 Fa0/5 Fa0/63.2.3 switch1配置信息SwitchenSwitch#conf tSwitch1 (config)#vtp mode client /允許VTP感冒病毒Switch1 (config)#vtp domain testSwitch1 (config)#int f0/1Switch1 (config-if)#switchport mode trunk /可以走多個(gè)vlan信息/漫游鏈路Switch1 (config)

20、#int f0/2 Switch1 (config-if)#switchport access vlan 20 /接口f0/2加入VLAN10中Switch1 (config-if)#int f0/3Switch1 (config-if)#switchport access vlan 20Switch1 (config)#int f0/4Switch1 (config-if)#switchport access vlan 20Switch1 (config)#int f0/5Switch1 (config-if)#switchport access vlan 20 Switch1 (confi

21、g-if)#Z /Ctrl+Z組合鍵Switch1#查看VLAN配置信息:Switch1#sh vlanVLAN Name Status Ports 中間省略20 VLAN0010 active Fa0/2 Fa0/3 Fa0/4 Fa0/53.2.4 switch2配置信息SwitchenSwitch#conf tswitch2 (config)#vtp mode client /允許VTP感冒病毒switch2 (config)#vtp domain testswitch2 (config)#int f0/1switch2 (config-if)#switchport mode trunk

22、 /可以走多個(gè)vlan信息/漫游鏈路switch2 (config)#int f0/4 switch2 (config-if)#switchport access vlan 10 /接口f0/2加入VLAN10中switch2 (config-if)#int f0/5switch2 (config-if)#switchport access vlan 10switch2 (config)#int f0/2switch2 (config-if)#switchport access vlan 30switch2 (config)#int f0/3switch2 (config-if)#switch

23、port access vlan 30 switch2 (config-if)#Z /Ctrl+Z組合鍵switch2#查看VLAN配置信息:switch2#sh vlanVLAN Name Status Ports 中間省略10 VLAN0010 active Fa0/4 Fa0/530 VLAN0010 active Fa0/2 Fa0/3其中,交換機(jī)Switch3、switch4和switch6配置過程同switch0配置過程;交換機(jī)switch5配置過程同switch2配置過程,因此此處便不再給出Switch3、switch4、switch6和switch5的配置過程和配置信息。3.2

24、.5 PC機(jī)的配置(1)由拓?fù)鋱D信息可以得到,主機(jī)PC0、PC1、PC12、PC5和PC10、PC11同在VLAN10內(nèi),因此此6臺(tái)PC機(jī)的網(wǎng)關(guān)同為:54,掩碼為:,IP地址為53中的任意6個(gè),由此可完成對(duì)主機(jī)進(jìn)行IP和網(wǎng)關(guān)的配置信息;(2)由拓?fù)鋱D信息可以得到,PC2、PC3、PC6和PC7同在VLAN20內(nèi),因此此4臺(tái)PC的網(wǎng)關(guān)同為:54,掩碼為:,IP地址為53中的任意6個(gè),由此可完成對(duì)主機(jī)IP和網(wǎng)關(guān)的配置信息;(3)由拓?fù)鋱D信息可以得到,主機(jī)PC4、PC13和 PC8、PC9及PC19同在VLAN30內(nèi),因此此5臺(tái)PC的網(wǎng)關(guān)同為:54,掩碼為:,IP地址為53內(nèi)的任意5個(gè),由此可完成對(duì)

25、此5臺(tái)主機(jī)的IP和網(wǎng)關(guān)的配置信息;(4)由拓?fù)鋱D信息可以得到,主機(jī)PC14、PC15、PC16和PC18同在VLAN40內(nèi),因此此4臺(tái)主機(jī)的網(wǎng)關(guān)同為:54,掩碼為:,IP地址可為53中的任意4個(gè),由此可完成對(duì)此4臺(tái)主機(jī)的IP和網(wǎng)關(guān)的配置信息。第四章 調(diào)試與操作說明4.1 同一VLAN之間的主機(jī)通信(1)在PC0單擊打開如下圖4.1.1所示界面。圖4.1.1 物理配置界面(2)單擊“Desktop”,進(jìn)入如下圖4.1.2所示的界面。圖4.1.2 Desktop界面(3)單擊“Command Prompt”計(jì)入命令提示符界面,并輸ping ,結(jié)果為可以通信,如下圖4.1.3所示。圖4.1.3 測試

26、信息對(duì)于VLAN20、VLAN30和VLAN40的同一VLAN之間的測試步驟均如上,此處為了簡化便不再給出。4.2 不同VLAN之間的主機(jī)通信(1)在PC11單擊打開如下圖4.2.1所示界面。圖4.2.1 物理配置界面(2)單擊“Desktop”,進(jìn)入如下圖4.2.2所示的界面。圖4.2.2 Desktop界面(3)單擊“Command Prompt”計(jì)入命令提示符界面,并輸ping ,結(jié)果為可以通信,如下圖4.2.3所示。圖4.2.3 測試信息此處給出的為VLAN10中的PC11 ping VLAN30中的PC19的示例,對(duì)于余下的不同VLAN之間的測試步驟均如上所示,此處為了簡化便不再給出

27、。第五章 程序設(shè)計(jì)總結(jié)與體會(huì)在這兩周的程序設(shè)計(jì)中,在收獲知識(shí)的同時(shí),還收獲了閱歷,收獲了成熟,在此過程中,該設(shè)計(jì)通過查找大量資料,請(qǐng)教老師,以及不懈的努力,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在程序設(shè)計(jì)上,通過該設(shè)計(jì)學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。與隊(duì)友的合作更是一件快樂的事情,只有彼此都付出,彼此都努力維護(hù)才能將作品做的更加完美。而團(tuán)隊(duì)合作也是當(dāng)今社會(huì)最提倡的。通過這次交換式和虛擬局域網(wǎng)配置與實(shí)現(xiàn)的課程設(shè)計(jì),本組成員在多方面都有所提高。通過這次對(duì)以太網(wǎng)中的交換機(jī)的配置及

28、對(duì)虛擬局域網(wǎng)的劃分,綜合運(yùn)用本學(xué)期所學(xué)的理論知識(shí)應(yīng)用到實(shí)際實(shí)踐中從而提高學(xué)生的獨(dú)立工作能力。第六章 致謝在此感謝我們的趙國柱老師,在課程設(shè)計(jì)上給予我們指導(dǎo)、提供給我們的支持和幫助,這是我們能順利完成這次報(bào)告的主要原因,更重要的是老師幫我解決了許多技術(shù)上的難題,讓我們能夠把以太網(wǎng)的拓?fù)鋱D和配置信息做得更加完善。在此期間,我們不僅學(xué)到了許多新的知識(shí),而且也開闊了視野,提高了自己的設(shè)計(jì)能力。其次,我們組要感謝幫助過我們的同學(xué),他們也為我們解決了不少不太明白的設(shè)計(jì)商的難題,同時(shí)也感謝學(xué)院為我們提供良好的做課程設(shè)計(jì)的環(huán)境。參考文獻(xiàn)1 Todd Lammle.CCNA學(xué)習(xí)指南.電子工業(yè)出版社,2008.6

29、 2 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)M.北京:電子工業(yè)出版社,2005.評(píng)語: 評(píng)閱教師簽名: 年 月 日成 績 附錄資料:不需要的可以自行刪除C語言編譯器的設(shè)計(jì)與實(shí)現(xiàn) 我們?cè)O(shè)計(jì)的編譯程序涉及到編譯五個(gè)階段中的三個(gè),即詞法分析器、語法分析器和中間代碼生成器。編譯程序的輸出結(jié)果包括詞法分析后的二元式序列、變量名表、狀態(tài)棧分析過程顯示及四元式序列程序,整個(gè)編譯程序分為三部分:(1) 詞法分析部分(2) 語法分析處理及四元式生成部分 (3) 輸出顯示部分一詞法分析器設(shè)計(jì) 由于我們規(guī)定的程序語句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯(cuò)誤的檢查,而將編譯程序的重點(diǎn)放在中間代碼生成階段。詞法分析器的功能是輸入

30、源程序,輸出單詞符號(hào)。我們規(guī)定輸出的單詞符號(hào)格式為如下的二元式: (單詞種別,單詞自身的值)#define ACC -2#define syl_if 0#define syl_else 1#define syl_while 2#define syl_begin 3#define syl_end 4#define a 5#define semicolon 6#define e 7#define jinghao 8#define s 9#define L 10#define tempsy 11#define EA 12#define EO 13#define plus 14#define time

31、s 15#define becomes 16#define op_and 17#define op_or 18#define op_not 19#define rop 20#define lparent 21#define rparent 22#define ident 23#define intconst 24函數(shù)說明 讀取函數(shù) readline( )、readch( )詞法分析包含從源文件讀取字符的操作,但頻繁的讀文件操作會(huì)影響程序執(zhí)行效率,故實(shí)際上是從源程序文件” source.dat ”中讀取一行到輸入緩沖區(qū),而詞法分析過程中每次讀取一個(gè)字符時(shí)則是通過執(zhí)行 readch( )從輸入緩沖

32、區(qū)獲得的;若緩沖區(qū)已被讀空,則再執(zhí)行readline( )從 source.dat 中讀取下一行至輸入緩沖區(qū)。掃描函數(shù) scan( ) 掃描函數(shù) scan( )的功能是濾除多余空格并對(duì)主要單詞進(jìn)行分析處理,將分析得到的二元式存入二元式結(jié)果緩沖區(qū)。變量處理 find( )變量處理中首先把以字母開頭的字母數(shù)字串存到 spelling 數(shù)組中,然后進(jìn)行識(shí)別。識(shí)別過程是先讓它與保留關(guān)鍵字表中的所有關(guān)鍵字進(jìn)行匹配,若獲得成功則說明它為保留關(guān)鍵字,即將其內(nèi)碼值寫入二元式結(jié)果緩沖區(qū);否則說明其為變量,這時(shí)讓它與變量名表中的變量進(jìn)行匹配( 變量匹配函數(shù) find( ) ),如果成功,則說明該變量已存在并在二元

33、式結(jié)果緩沖區(qū)中標(biāo)記為此變量( 值填為該變量在變量名表中的位置),否則將該變量登記到變量名表中,再將這個(gè)新變量存入二元式緩存數(shù)組中。數(shù)字識(shí)別 number( ) 數(shù)字識(shí)別將識(shí)別出的數(shù)字填入二元式結(jié)果緩存數(shù)組。顯示函數(shù) 顯示函數(shù)的功能在屏幕上輸出詞法分析的結(jié)果( 即二元式序列程序),同時(shí)給出二元式個(gè)數(shù)及源程序行數(shù)統(tǒng)計(jì)。二語法分析器設(shè)計(jì) 語法分析器的核心是三張 SLR 分析表以及針對(duì)這三張 SLR 分析表進(jìn)行語義加工的語義動(dòng)作。編譯程序中語法分析處理及四元式生成部分主要是以二元式作為輸入,并通過 SLR 分析表對(duì)語法分析處理過程進(jìn)行控制,使四元式翻譯的工作有條不紊的進(jìn)行,同時(shí)識(shí)別語法分析中的語法錯(cuò)誤

34、。在處理 if 和 while 語句時(shí),需要進(jìn)行真值或假值的拉鏈和返填工作,以便轉(zhuǎn)移目標(biāo)的正確填入。1. 控制語句的 SLR 分析表1 設(shè)計(jì)過程如下: 將擴(kuò)展文法GS S1)S if e S else S2)S while e S3)S L 4)S a;5)L S6)L SL用_CLOSURE方法構(gòu)造LR(0)項(xiàng)目規(guī)范簇為:I0: S SS if e S else SS while e S S L S a ;I1: S SI2: S ife S else SI3: S while e SI4: S L L S L SL S if e S else SS while e S S L S a ;

35、I5: S a; I6: S if e S else S S if e S else SS while e S S L S a ; I7: S while e S S if e S else SS while e S S L S a ; I8: S L I9: L S L SL L SL L S S if e S else SS while e S S L S a ; I10: S a ; I11: S if e S else SI12: S while e S I13: S L I14: S SL I15: S if e S else S S if e S else SS while e S

36、 S L S a ; I16: S if e S else S 構(gòu)造文法G中非終結(jié)符的FOLLOW集如下:FOLLOW(S) = # S if e S else S得FOLLOW(S) = else S L 得FOLLOW(L) = 3) S S 得FOLLOW(S) = else , # L S 因?yàn)镕IRST(S) = ,所以FOLLOW(S) = else , #, 在()項(xiàng)目規(guī)范簇中,只有9有“移進(jìn)歸約”沖突,L SL SL因?yàn)镕OLLOW(L) FIRST(L) = 所以可以用方法解決以上沖突,最后我們得到的分析表如下:ACTIONGOTO ifElsewhilea;e#SL0S2S

37、3S4S511ACC2S63S74S2S3S4S5985S106S2S3S4S5117S2S3S4S5128S139S2S3S4R5S591410R4R4R4111512R2R2R213R3R3R314R615S2S3S4S51616R1R1R1static int action2011=/* 0 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 1, -1,/* 1 */ -1, -1, -1, -1, -1, -1, -1, -1,ACC, -1, -1,/* 2 */ -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1,/* 3 */

38、-1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1,/* 4 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 9, 8,/* 5 */ -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1,/* 6 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 11, -1,/* 7 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 12, -1,/* 8 */ -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1,/* 9 */ 2, -1, 3,

39、 4,105, 5, -1, -1, -1, 9, 14,/* 10*/ -1,104, -1, -1,104, -1, -1, -1,104, -1, -1,/* 11*/ -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 12*/ -1,102, -1, -1,102, -1, -1, -1,102, -1, -1,/* 13*/ -1,103, -1, -1,103, -1, -1, -1,103, -1, -1,/* 14*/ -1, -1, -1, -1,106, -1, -1, -1, -1, -1, -1,/* 15*/ 2, -1, 3

40、, 4, -1, 5, -1, -1, -1, 16, -1,/* 16*/ -1,101, -1, -1,101, -1, -1, -1,101, -1, -1;其中,前 9 列為 action 值,后 2 列為 goto 值;016 表示 17 個(gè)移進(jìn)狀態(tài)( 即 Si);-1表示出錯(cuò);ACC 表示分析成功;而 100106 對(duì)應(yīng) 7 個(gè)歸約產(chǎn)生式:S SS if e S else SS while e SS L S a;L SL SL2. 算術(shù)表達(dá)式的 LR 分析表 2 設(shè)計(jì)如下:S EE E+EE E*EE (E)E i (過程略)ACTIONGOTOI+*()#E0S3S211S4S5

41、ACC2S3S263R4R4R4R44S3S275S3S286S4S5S97R1R5R1R18R2R2R2R29R3R3R3R3static int action1107=/* 0 */ 3, -1, -1, 2, -1, -1, 1,/* 1 */ -1, 4, 5, -1, -1,ACC, -1,/* 2 */ 3, -1, -1, 2, -1, -1, 6,/* 3 */ -1,104,104, -1,104,104, -1,/* 4 */ 3, -1, -1, 2, -1, -1, 7,/* 5 */ 3, -1, -1, 2, -1, -1, 8,/* 6 */ -1, 4, 5,

42、-1, 9, -1, -1,/* 7 */ -1,101, 5, -1,101,101, -1,/* 8 */ -1,102,102, -1,102,102, -1,/* 9 */ -1,103,103, -1,103,103, -1;3.布爾表達(dá)式的 SLR 分析表3 設(shè)計(jì)如下:(過程略)S BB iB i rop iB ( B )B ! BA B &B ABO B |B OBACTIONGOTOiRop()!&|#BAO0S1S4S513781S2R1R1R1R12S33R2R2R2R24S1S4S511785S1S4S56786R4S9S10R47S1S4S514788S1S4S5157

43、89R5R5R510R7R7R711S12S9S1012R3R3R3R313S9S10ACC14R6S9S10R615R8S9S10R8static int action21611=/* 0 */ 1, -1, 4, -1, 5, -1, -1, -1, 13, 7, 8,/* 1 */ 1, 2, -1,101, -1,101,101,101, -1, -1, -1,/* 2 */ 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 3 */ -1, -1, -1,102, -1,102,102,102, -1, -1, -1,/* 4 */ 1, -1

44、, 4, -1, 5, -1, -1, -1, 11, 7, 8,/* 5 */ 1, -1, 4, -1, 5, -1, -1, -1, 6, 7, 8,/* 6 */ -1, -1, -1,104, -1, 9, 10,104, -1, -1, -1,/* 7 */ 1, -1, 4, -1, 5, -1, -1, -1, 14, 7, 8,/* 8 */ 1, -1, 4, -1, 5, -1, -1, -1, 15, 7, 8,/* 9 */ 105, -1,105, -1,105, -1, -1, -1, -1, -1, -1,/*10 */ 107, -1,107, -1,107,

45、 -1, -1, -1, -1, -1, -1,/*11 */ -1, -1, -1, 12, -1, 9, 10, -1, -1, -1, -1,/*12 */ -1, -1, -1,103, -1,103,103,103, -1, -1, -1,/*13 */ -1, -1, -1, -1, -1, 9, 10,ACC, -1, -1, -1,/*14 */ -1, -1, -1,106, -1, 9, 10,106, -1, -1, -1,/*15 */ -1, -1, -1,108, -1, 9, 10,108, -1, -1, -1;LR 分析表控制語義加工的實(shí)現(xiàn):當(dāng)掃描 LR 分析

46、表的當(dāng)前狀態(tài)為歸約狀態(tài)時(shí),則在調(diào)用與該狀態(tài)對(duì)應(yīng)的產(chǎn)生式進(jìn)行歸約的同時(shí),調(diào)用相應(yīng)的語義子程序進(jìn)行有關(guān)的翻譯工作?,F(xiàn)在對(duì) LR 分析器的分析棧加以擴(kuò)充,使得每個(gè)文法符號(hào)之后都跟著它的語義值。為了清晰起見,我們把這個(gè)棧的每一項(xiàng)看成由三部分組成:狀態(tài) state ,文法符號(hào) syl 和語義值 val。編譯程序?qū)崿F(xiàn)算術(shù)表達(dá)式、布爾表達(dá)式及程序語句的語義加工時(shí),都是按這種狀態(tài)棧加工方式進(jìn)行的。例如:( 5 + 3 ) * 6的分析過程序號(hào)STATEValsylinput10-#( 5 + 3 ) * 6 #202-#(5 + 3 ) * 6 #3023#(5+ 3 ) * 6 #4026-5#(E+ 3

47、) * 6 #50264-5-#(E+3 ) * 6 #602643-5-#(E+3 ) * 6 #702647-5-3#(E+E) * 6 #8026-8#(E) * 6 #90269-8-#(E)* 6 #1001-8#E* 6 #11015-8-#E* 6 #120153-8-#E*6#130158-8-6#E*E#1401-48#E#15ACC在分析過程中,第(3)步操作后的狀態(tài)棧為 023,根據(jù)棧頂狀態(tài)“ 3”和現(xiàn)行輸入符號(hào)“ +”( input 欄字符串的第一個(gè)字符)查分析表 ACTION3,+=R4,即按第(4)個(gè)產(chǎn)生式 En 來進(jìn)行歸約;由于產(chǎn)生式右部僅含一項(xiàng),故去掉狀態(tài)棧棧頂

48、“3”;此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第( 4)步的狀態(tài)。第( 7)步操作后也是如此,當(dāng)前狀態(tài)棧為 02647,根據(jù)棧頂狀態(tài) 7 和現(xiàn)行輸入符號(hào)“ )”查分析表 ACTION7,)=R1,即按第(1)個(gè)產(chǎn)生式 EE1+E2進(jìn)行歸約;由于產(chǎn)生式右部有三項(xiàng),故去掉狀態(tài)棧棧頂?shù)?647 三項(xiàng);此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第(8)步的狀態(tài)。三中間代碼生成器設(shè)計(jì):布爾表達(dá)式 布爾表達(dá)式在程序語言中有兩個(gè)基本作用:一是

49、用作控制語句( 如 if -else 或 while語句)的條件式;二是用于邏輯演算,計(jì)算邏輯值。布爾表達(dá)式是由布爾算符( &、| 、?。┳饔糜诓紶栕兞浚?或常數(shù))或關(guān)系表達(dá)式而形成的。關(guān)系表達(dá)式的形式是 E1 rop E2,其中 rop 是關(guān)系符( 如或),E1和 E2是算術(shù)式。在這里,我們只考慮前面給定文法所產(chǎn)生的布爾表達(dá)式:BB &B | B | B | ! B | (B) | i rop i | i遵照我們的約定,布爾算符的優(yōu)先順序( 從高到低)為:!、&、|,并假定&和|都服從左結(jié)合規(guī)則。所有關(guān)系符的優(yōu)先級(jí)都是相同的,而且高于任何布爾算符,低于任何算術(shù)算符,關(guān)系算符不得結(jié)合。表達(dá)式的

50、真、假出口的確定:考慮表達(dá)式 B1 | B2 ,若 B1為真,則立即知道 B 也為真;因此,B1的真出口也就是整個(gè) B 的真出口。若 B1?為假,則 B2必須被計(jì)值,B2的第一個(gè)四元式就是 B1的假出口。當(dāng)然,B2的真、假出口也就是整個(gè) B的真、假出口。類似的考慮適用于對(duì) B1 & B2的翻譯,我們將 B1 | B2和 B1 & B2 的翻譯用下圖表示,在自下而上的分析過程中,一個(gè)布爾式的真假出口往往不能在產(chǎn)生四元式的同時(shí)就填上。我們只好把這種未完成的四元式的地址( 編號(hào))作為 B 的語義值暫存起來,待到整個(gè)表達(dá)式的四元式產(chǎn)生完畢之后再來回填這個(gè)未填入的轉(zhuǎn)移目標(biāo)。條件語句對(duì)條件語句 if e

51、S1 else S2 中的布爾表達(dá)式 e,其作用僅在于控制對(duì) S1和 S2的選擇。因此,作為轉(zhuǎn)移條件的布爾式e,我們可以賦予它兩種“ 出口”:一是“ 真”出T口,出向 S1;一是“ 假”出口,出向 S2。于是,e的代碼F條件語句可以翻譯成如圖的一般形式。非終結(jié)符 e 具有兩項(xiàng)語義值 e _TC 和e_FC,它們分別指出了尚待回填真、S2的代碼假出口的四元式串。e 的“ 真”出口只有在往回掃描到if時(shí)才能知道,而它圖 3-2 條件語句的代碼結(jié)構(gòu) 的“ 假”出口則需到處理過 S1并且到達(dá) else 才能明確。這就是說,必須把 e_FC 的值傳下去,以便到達(dá)相應(yīng)的 else時(shí)才進(jìn)行回填。另外,當(dāng) S

52、1語句執(zhí)行完時(shí)意味著整個(gè) if-else 語句也已執(zhí)行完畢;因此,在 S1的編碼之后應(yīng)產(chǎn)生一條無條件轉(zhuǎn)移指令。這條轉(zhuǎn)移指令將導(dǎo)致程序控制離開整個(gè) if-else 語句。但是,在完成 S2的翻譯之前,這條無條件轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)是不知道的。甚至,在翻譯完 S2之后,這條轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)仍無法確定。這種情形是由于語句的嵌套性所引起的。例如下面的語句:if e1 if e2 S1 else S2 else S3 在 S1的代碼之后的那條無條件轉(zhuǎn)移指令不僅應(yīng)跨越 S2而且應(yīng)跨越 S3。這也就是說,轉(zhuǎn)移目標(biāo)的確定和語句所處的環(huán)境密切相關(guān)。條件循環(huán)語句條件循環(huán)語句 while e S 通常被翻譯成圖的代

53、碼結(jié)構(gòu)。布爾式 e 的“ 真”出口出向 S 代碼段的第一個(gè)四元式。緊接 S 代碼段之后應(yīng)產(chǎn)生一條轉(zhuǎn)向測試 e 的無條件轉(zhuǎn)移指令。e 的“ 假”出口將導(dǎo)致程序控制離開整個(gè) while 語句。e 的“ 假”出口目標(biāo)即使在整個(gè) while 語句翻譯完之后也未必明確。例如: if e1 while e2 S1 else S2這種情況仍是由于語句的嵌套性引起的。所以,我們只好把它作為語句的語義值 SCHAIN 暫留下來,以便在處理外層語句時(shí)再伺機(jī)回填。語法翻譯實(shí)現(xiàn)方法 將上述語法翻譯付諸實(shí)現(xiàn)過程中,我們僅保留了算術(shù)表達(dá)式和布爾表達(dá)式翻譯的文法和語義動(dòng)作;面對(duì)程序語句的翻譯,由于改造后含有較多的非終結(jié)符且

54、語義動(dòng)作又相對(duì)簡單,故仍恢復(fù)為改造之前的程序語句文法。由于總體上構(gòu)造一個(gè) SLR 分析表來實(shí)現(xiàn)語法分析及語義加工將使得所構(gòu)造的 SLR 分析表過大,所以將其分為下面三部分處理:對(duì)算術(shù)表達(dá)式單獨(dú)處理,即為算術(shù)表達(dá)式構(gòu)造一個(gè) SLR 分析表,并將賦值語句A=E 與算術(shù)表達(dá)式歸為一類處理,處理之后的賦值語句僅看作為程序語句文法中的一個(gè)終結(jié)符 a。對(duì)布爾表達(dá)式也單獨(dú)處理,并為其構(gòu)造一個(gè) SLR 分析表,經(jīng) SLR 分析表處理后的布爾表達(dá)式看作為程序語句文法中的一個(gè)終結(jié)符 e。程序語句文法此時(shí)變?yōu)椋篠 if e S else S | while e S | L | a;L SL | S此時(shí)為程序語句構(gòu)造

55、相應(yīng)的 SLR 分析表就簡單多了。前面的程序語句文法中所添加的非終結(jié)符是為了能及時(shí)回填有關(guān)四元式轉(zhuǎn)移目標(biāo)而引入的,在取消了這些非終結(jié)符后又如何解決及時(shí)回填轉(zhuǎn)移目標(biāo)的問題呢?我們采取的解決方法是增加兩個(gè)數(shù)組 labelmark 和 labeltemp 來分別記錄語句嵌套中每一層布爾表達(dá)式( 如果有的話)e 的首地址以及每一層else( 如果有的話)之前的四元式地址( 即無條件轉(zhuǎn)出此層 if 語句的四元式)。也即,對(duì)程序語句的翻譯來說:在處理完布爾表達(dá)式 e 后,回填 if 或 while 語句的真值鏈;在歸約完每一個(gè)語句 S 之后檢查符號(hào)棧,看在 S 之前的文法符號(hào)是否 if 或 while,若是則回填假值鏈( 假值入口為語句 S 所對(duì)應(yīng)的四元式序列之后;對(duì) if 語句,此時(shí)已

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論