




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上DONGFANG COLLEGE,F(xiàn)UJIAN AGRICULTURE AND FORESTRY UNIVERSITY課程名稱:編譯原理 詞法分析系 別: 計算機科學系年級專業(yè): 2013級 計算機科學與技術(shù)學 號: 姓名: 張清鑒任課教師: 朱均燕成績:2015年12月31日專心-專注-專業(yè)目錄前言1一、課程設計的目的1二、 課程設計的要求11.待分析的簡單語言的詞法12.各種單詞符號對應的種別碼23. 此法分析程序功能3三、課程設計報告內(nèi)容331課程設計的環(huán)境332系統(tǒng)技術(shù)分析:333 系統(tǒng)流程圖及各模塊434源程序代碼清單435程序調(diào)試情況9四、總結(jié)10參考文獻
2、11前言詞法分析(英語:lexical analysis)是計算機科學中將字符序列轉(zhuǎn)換為單詞(Token)序列的過程。進行詞法分析的程序或者函數(shù)叫作詞法分析器(Lexical analyzer,簡稱Lexer),也叫掃描器(Scanner)。詞法分析器一般以函數(shù)的形式存在,供語法分析器調(diào)用。詞法分析階段是編譯過程的第一個階段,是編譯的基礎。這個階段的任務是從左到右一個字符一個字符地讀入源程序,即對構(gòu)成源程序的字符流進行掃描然后根據(jù)構(gòu)詞規(guī)則識別單詞(也稱單詞符號或符號)。詞法分析程序?qū)崿F(xiàn)這個任務。詞法分析程序可以使用Lex等工具自動生成。詞法分析是編譯程序的第一個階段且是必要階段;詞法分析的核心
3、任務是掃描、識別單詞且對識別出的單詞給出定性、定長的處理;實現(xiàn)詞法分析程序的常用途徑:自動生成,手工生成.詞法分析一、課程設計的目的設計、編制并調(diào)試一個詞法分析程序,加深對詞法分析原理的理解。二、 課程設計的要求1.待分析的簡單語言的詞法(1)關鍵字:begin if then while do end 所有的關鍵字都是小寫。(2) 運算符和界符:= + - * / :()(3)其他單詞是標識符()和整型常數(shù)(),通過以下正規(guī)式定義:(4)空格由空白制表符和換行符組成。空格一般用來分隔運算符 界符和關鍵字,詞法分析階段通常被忽略。2.各種單詞符號對應的種別碼表各種單詞符號對應的種別碼單詞符號種
4、別碼單詞符號種別碼begin1:17if2:=18then3<20while4<>21do5<=22end6>23letter(letter|digit)*10>=24digit digit*11=25+13;26-14(27*15)28/16#03. 此法分析程序功能 輸入:所給文法的源程序字符串。 輸出:二元組(syn,token或sum)構(gòu)成的序列。 其中:syn為單詞種別碼;token為存放的單詞自身字符串;sum為整型常數(shù)。例如:對源程序 begin x:=9: if x>9 then x:=
5、2*x+1/3; end #的源文件,經(jīng)過詞法分析后輸出如下序列: (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if) 三、課程設計報告內(nèi)容31課程設計的環(huán)境311 硬件環(huán)境:本系統(tǒng)適用于DOS環(huán)境下的計算機,內(nèi)存1G、2G等現(xiàn)在較普遍的內(nèi)存容量即可,并且配備有主機、顯示屏、鍵盤和鼠標等硬件結(jié)構(gòu)。312 軟件環(huán)境: 本系統(tǒng)采用標準C語言,可在基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境的Visual C+ 6.0 使用。32系統(tǒng)技術(shù)分析:算法的基本任務是從字符串表示的源程序中識別出具有獨立意義的單詞符號,其基本思想是根據(jù)
6、掃描到單詞符號的第一個字符的種類,拼出相應的單詞符號。主程序示意圖如圖3-1所示。其中初始包括以下兩個方面: 圖3-1 1) 關鍵字表的初值。 關鍵字作為特殊標識符處理,把它們預先安排在一張表格中(稱為關鍵字表),當掃描程序識別 出標識符時,查關鍵字表。如能查到匹配的單詞,則該單詞為關鍵字,否則為一般標識符。關鍵字表為一個字符串數(shù)組,其描述如下:Char *rwtab6 = “begin”, “if”, “then”, “while”, “do”, “end”,;2) 程序中需要用到的主要變量為syn,token和sum。33 系統(tǒng)流程圖及各模塊 首先設置3個變量:token用來存放構(gòu)成單詞符
7、號的字符串;sum用來整型單詞;syn用來存放單詞符號的種別碼。掃描子程序主要部分流程如圖3-2所示。 圖3-234源程序代碼清單#include <stdio.h>#include <string.h>char prog80,token8,ch;int syn,p,m,n,sum;char *rwtab6="begin","if","then","while","do","end" scaner();main()p=0; printf("n
8、 please input a string(end with '#'):/n"); do scanf("%c",&ch); progp+=ch; while(ch!='#'); p=0; do scaner(); switch(syn) case 11:printf("( %-10d%5d )n",sum,syn); break; case -1:printf("you have input a wrong stringn"); getch(); exit(0); default:
9、printf("( %-10s%5d )n",token,syn); break; while(syn!=0); getch(); scaner() sum=0; for(m=0;m<8;m+)tokenm+=NULL; ch=progp+; m=0; while(ch=' ')|(ch='n')ch=progp+; if(ch<='z')&&(ch>='a')|(ch<='Z')&&(ch>='A') while(c
10、h<='z')&&(ch>='a')|(ch<='Z')&&(ch>='A')|(ch>='0')&&(ch<='9') tokenm+=ch; ch=progp+; p-; syn=10; for(n=0;n<6;n+) if(strcmp(token,rwtabn)=0) syn=n+1; break; else if(ch>='0')&&(ch<='9&
11、#39;) while(ch>='0')&&(ch<='9') sum=sum*10+ch-'0' ch=progp+; p-; syn=11; else switch(ch) case '<':tokenm+=ch; ch=progp+; if(ch='=') syn=22; tokenm+=ch; else syn=20; p-; break; case '>':tokenm+=ch; ch=progp+; if(ch='=') syn=2
12、4; tokenm+=ch; else syn=23; p-; break; case '+': tokenm+=ch; ch=progp+; if(ch='+') syn=17; tokenm+=ch; else syn=13; p-; break; case '-':tokenm+=ch; ch=progp+; if(ch='-') syn=29; tokenm+=ch; else syn=14; p-; break; case '!':ch=progp+; if(ch='=') syn=21;
13、 tokenm+=ch; else syn=31; p-; break; case '=':tokenm+=ch; ch=progp+; if(ch='=') syn=25; tokenm+=ch; else syn=18; p-; break; case '*': syn=15; tokenm+=ch; break; case '/': syn=16; tokenm+=ch; break; case '(': syn=27; tokenm+=ch; break; case ')': syn=28;
14、 tokenm+=ch; break; case '': syn=5; tokenm+=ch; break; case '': syn=6; tokenm+=ch; break; case '': syn=26; tokenm+=ch; break; case '"': syn=30; tokenm+=ch; break; case '#': syn=0; tokenm+=ch; break; case ':':syn=17; tokenm+=ch; break; default: syn
15、=-1; break; tokenm+='0' 35程序調(diào)試情況輸入begin x:=9: if x>0 then x:=2*x+1/3; end # 后經(jīng)詞法分析輸出如下序列:(begin 1)(x 10)(:17)(= 18)(9 11)(;26)(if 2) 如圖5-1所示:圖5-1四總結(jié) 通過此次課程設計,使我更加扎實的掌握了有關詞法方面的知識,在設計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。 過而能改,善莫大焉。在課程設計過程中,我們不斷發(fā)現(xiàn)錯誤,不斷改正,不斷領悟,不斷獲取。最終的檢測調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的指導下,終于游逆而解。在今后社會的發(fā)展和學習實踐過程中,一定要不懈努力,不能遇到問題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育建筑的智能照明與節(jié)能控制策略
- 濮陽石油化工職業(yè)技術(shù)學院《音樂技能Ⅳ聲樂》2023-2024學年第二學期期末試卷
- 南昌工程學院《藥理學及毒理學》2023-2024學年第二學期期末試卷
- 武漢工程大學《綜合英語初級2》2023-2024學年第二學期期末試卷
- 教育機構(gòu)品牌的線上推廣技巧
- 新鄉(xiāng)職業(yè)技術(shù)學院《中國現(xiàn)代文學理論教學》2023-2024學年第二學期期末試卷
- 培養(yǎng)學習者的心理韌性
- 華中師范大學《應用英語(四)》2023-2024學年第二學期期末試卷
- 德陽城市軌道交通職業(yè)學院《運動解剖學實驗》2023-2024學年第二學期期末試卷
- 教育數(shù)據(jù)保護政策與實踐并舉
- 雙重預防機制體系文件匯編全套
- 2023年上海交大附中自主招生化學試卷含答案
- 張漢熙《高級英語》第二冊課文英語原文
- 四川河道防洪堤壩工程地質(zhì)勘察報告
- 2020年專業(yè)技術(shù)人員繼續(xù)教育公需科目考試及答案
- 盤扣式鋼管腳手架驗收表
- 茶會活動策劃與管理智慧樹知到答案章節(jié)測試2023年浙江旅游職業(yè)學院
- 閩監(jiān)管協(xié)【2015】13號文監(jiān)理收費標準
- 清華大學-2021年中國一線城市出行平臺調(diào)研報告-2021.05正式版
- 研發(fā)積分制績效考核管理辦法實用文檔
- YY/T 0321.3-2022一次性使用麻醉用過濾器
評論
0/150
提交評論