版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
詞法分析器設計詞法分析器設計詞法分析器設計V:1.0精細整理,僅供參考詞法分析器設計日期:20xx年X月學號《編譯原理》實驗1:詞法分析器設計學生姓名專業(yè)、班級指導教師成績計算機與信息工程學院2018年11月20日一、實驗目的理解詞法分析程序的功能。熟悉詞法分析程序的設計原理和構造方法。理解詞法分析程序輸出單詞的形式。設計實現針對簡單語言的一個詞法分析程序。二、實驗要求根據書P199給出的簡單語言的詞法和各單詞符號種別碼表,編寫C或C++語言源程序,實現針對該簡單語言的詞法分析器;獨立做實驗,輸入、調試所編程序;實驗結束后,根據實驗報告模板編寫實驗報告。三、實驗內容和步驟用VisualC++作為實驗開發(fā)環(huán)境,創(chuàng)建一個Win32ConsoleApplication工程,工程名為你的學號,添加三個文件:(1)存儲結構定義:以為文件名;(2)基本操作和算法:以為文件名;(3)調用基本操作的主程序:以為文件名。編寫程序:(1)文件定義單詞符號的二元組結構、全局變量、關鍵字表的結束標志等。(2)文件實現詞法掃描算法scanner及其所需的各種基本操作算法。(3)文件調用scanner算法,實現詞法分析器的功能。源程序代碼:==============================================================#define_KEY_WORD_END"waitingforyourexpanding"typedefstruct{ inttypenum; char*word;}WORD;=============================================================#include""charinput[50]="";chartoken[255]="";intp_input;intp_token;charch;char*rwtab[]={"begin","if","then","while","do","end",_KEY_WORD_END};程序示意圖eq\o\ac(○,)關鍵字表的初值。關鍵字作為特殊標識符處理,把它們預先安排在一張表格中(稱為關鍵字表),當掃描程序識別出標識符時,查關鍵字表。如能查到匹配的單詞,則該單詞為關鍵字,否則為一般標識符。關鍵字表為一個字符串數組,其描述如下:Char*rwtab[6]={“begin”,“if”,“then”,“while”,“do”,“end”};置初值置初值調用掃描子程序調用掃描子程序輸出單詞二元組輸出單詞二元組輸入串結束否輸入串結束 是結束結束eq\o\ac(○,)程序需要用到的主要變量為syn,token和sum。2.掃描子程序的算法思想首先設置3個變量:(1)token用來存放構成單詞符號的字符串;(2)sum用來存放整型單詞(3)syn用來存放單詞符號的種別碼。(2)畫出詞法掃描算法scanner識別簡單語言的狀態(tài)轉換圖DFA(可手畫再插入圖片)(3)解釋子程序reverse的每句代碼含義reserve函數的作用是遍歷關鍵字表格,判斷當前存入token的字符串是否是關鍵字eq\o\ac(○,)首先先設定一個初值為0的變量i(存在于while外部,會因為循環(huán)內部的操作而進行改變)eq\o\ac(○,)while條件內部完整代碼應為:while(strcmp(rwtab[i],_KEY_WORD_END)!=0),strcmp函數的作用是判斷兩個字符串是否相等:設兩個字符串str1,str2,若str1==str2,則返回零;若str1<str2,則返回負數;若str1>str2,則返回正數。已知關鍵字表格中最后一個元素為_KEY_WORD_END,所以這行代碼的意思就是,從關鍵字表格中第一個字符串開始遍歷(循環(huán)一次后i++),遍歷到最后一個通過strcmp函數運算等于零不滿足循環(huán)條件所以跳出循環(huán)。eq\o\ac(○,)循環(huán)體內部if當前字符串和遍歷到的關鍵字進行比較,兩者相等時滿足條件(!0!=0),相等時返還i+1。eq\o\ac(○,)最后返還10(關鍵字的種別碼)(4)針對文件中main函數的while(over<1000&&over!=-1)語句,解釋over的含義及何時over==-1while(over<1000&&over!=-1)當while中的語句滿足條件時繼續(xù)循環(huán),循環(huán)體內內容為:讀取一個新單詞,并輸出他的(種別碼,單詞自身的值)的二元組,并把當前單詞的種別碼的值賦值給over;當出現了字符串的終結位置位1000,錯誤操作(輸入了不可識別的單詞符號)置為-1,輸入‘#’與之對應的當scanner函數中出現這種情況時跳出循環(huán),程序結束。五、實驗結果針對輸入的源程序,經詞法分析后,給出實驗結果截圖。(1)源程序beginx:=9;ifx>0thenx:=2*x+1/3;end#實驗結果截圖:(2)輸入一段此簡單語言的源程序,要求每人不同,且包含單詞符號while<>-源程序:beginx:=31;whilex>13thenx<-;end#實驗結果截圖:六、實驗中遇到的問題及解決方法本次實驗的任務是用C++編寫一個詞法分析器,詞法分析的基本任務是從字符串表示的源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年臨沂下載貨運從業(yè)資格證模擬考試系統(tǒng)試題
- 中國道路設施連接桿項目投資可行性研究報告
- 中國變速傳動軸承項目投資可行性研究報告
- 高純化學試劑行業(yè)深度研究報告
- 2025外商投資有限公司設立合同模板
- 上海外國語大學賢達經濟人文學院《材料成型裝備及自動化》2023-2024學年第一學期期末試卷
- 上海思博職業(yè)技術學院《證券投資》2023-2024學年第一學期期末試卷
- 2025洗碗工的合同書范文
- 上海思博職業(yè)技術學院《合唱團排練5》2023-2024學年第一學期期末試卷
- 上海師范大學天華學院《計算機網絡A》2023-2024學年第一學期期末試卷
- 加油站-課程設計
- 帛書老子道德經全文-校注
- 柑橘園的規(guī)劃與設計(趙錚)
- 國家開放大學電大《中文學科論文寫作》期末題庫及答案
- 提高地下車庫防水質量QC成果
- 物業(yè)消防系統(tǒng)承接查驗表
- 俄羅斯聯(lián)邦政府第782號決議 電梯安全技術規(guī)程(2009版)
- OPERA系統(tǒng)培訓ppt課件
- 110Kv輸變電工程電氣安裝技術交底
- ASTM_A29/A29M熱鍛及冷加工碳素鋼和合金鋼棒
- 錄屏軟件Camtasia_Studio使用教程
評論
0/150
提交評論