- 相關(guān)推薦
‘教案’課程教案-第三章-1
教案:課程教案---第三章-1-教案作者:編譯原理章節(jié)名稱第三章高級語言及其語法描述
3.1對于詞法分析器的要求3.2詞法分析器的設(shè)計
3.3.1正規(guī)式與正規(guī)集3.3.2確定有限自動機
課程類型理論課√討論課□習(xí)題課□實驗課□上機課□技能課□其他□
授課時間第4周周二3、4節(jié)教學(xué)進度
學(xué)生考勤應(yīng)到:實到:請假:曠課:
教學(xué)方法多媒體+講授
目的要求:
了解詞法分析器的功能和輸出形式,熟練掌握詞法分析器設(shè)計的原理和方法,能夠以轉(zhuǎn)換圖為工具使用某種語言的編寫并調(diào)試一個掃描器。
重點難點:
重點:詞法分析器的設(shè)計;難點:狀態(tài)轉(zhuǎn)換圖的實現(xiàn)
課后作業(yè):
作業(yè)批改記錄:
教學(xué)后記:
教學(xué)過程:
詞法分析的任務(wù):從左至右逐個字符地對源程序進行掃描,產(chǎn)生一個個單詞符號。
詞法分析器(Lexical Analyzer)又稱掃描器(Scanner):執(zhí)行詞法分析的程序
3.1對于詞法分析器的要求
3.1.1詞法分析器的功能和輸出形式
功能:輸入源程序、輸出單詞符號
單詞符號的種類或者輸出形式:
基本字:如begin,repeat,
標(biāo)識符--表示各種名字:如變量名、數(shù)組名和過程名
常數(shù):各種類型的常數(shù)
運算符:+,-,*,/,
界符:逗號、分號、括號和空白
輸出的單詞符號的表示形式:
(單詞種別,單詞自身的值)
單詞種別通常用整數(shù)編碼表示。若一個種別只有一個單詞符號,則種別編碼就代表該單詞符號。假定基本字、運算符和界符都是一符一種。
若一個種別有多個單詞符號,則對于每個單詞符號,給出種別編碼和自身的值。標(biāo)識符單列一種;標(biāo)識符自身的值表示成按機器字節(jié)劃分的內(nèi)部碼。
常數(shù)按類型分種;常數(shù)的值則表示成標(biāo)準的二進制形式。
3.1.2詞法分析器作為一個獨立子程序
詞法分析是作為一個獨立的階段,是否應(yīng)當(dāng)將其處理為一遍呢?作為獨立階段的優(yōu)點:結(jié)構(gòu)簡潔、清晰和條理化,有利于集中考慮詞法分析一些枝節(jié)問題。
不作為一遍:將其處理為一個子程序。
3.2詞法分析器的設(shè)計
3.2.1輸入、預(yù)處理
輸入串放在輸入緩沖區(qū)中。
預(yù)處理子程序:剔除無用的空白、跳格、回車和換行等編輯性字符;區(qū)分標(biāo)號區(qū)、捻接續(xù)行和給出句末符等
掃描緩沖區(qū)
3.2.2單詞符號的識別:超前搜索
基本字識別:需要超前搜索才能確定哪些是基本字
標(biāo)識符識別:字母開頭的字母數(shù)字串,后跟界符或算符
常數(shù)識別:識別出算術(shù)常數(shù)并將其轉(zhuǎn)變?yōu)槎M制內(nèi)碼表示。有些也要超前搜索。
算符和界符的識別:把多個字符復(fù)合而成的算符和界符拼合成一個單詞符號。
3.2.3狀態(tài)轉(zhuǎn)換圖
概念:狀態(tài)轉(zhuǎn)換圖是一張有限方向圖。結(jié)點代表狀態(tài),用圓圈表示;狀態(tài)之間用箭弧連結(jié),箭弧上的標(biāo)記(字符)代表射出結(jié)狀態(tài)下可能出現(xiàn)的輸入字符或字符類;一張轉(zhuǎn)換圖只包含有限個狀態(tài),其中有一個為初態(tài),實際上至少要有一個終態(tài)。
一個狀態(tài)轉(zhuǎn)換圖可用于識別(或接受)一定的字符串。
幾點重要限制--不必使用超前搜索:
所有基本字都是保留字;用戶不能用它們作自己的標(biāo)識符
基本字作為特殊的標(biāo)識符來處理;不用特殊的狀態(tài)圖來識別,只要查保留字表。
如果基本字、標(biāo)識符和常數(shù)(或標(biāo)號)之間沒有確定的運算符或界符作間隔,則必須使用一個空白符作間隔。
3.2.4狀態(tài)轉(zhuǎn)換圖的實現(xiàn)
做法:
1)對不含回路的分叉結(jié),可用一個CASE語句或一組IF-THEN-ELSE語句實現(xiàn)
2)對含回路的狀態(tài)結(jié),可對應(yīng)一段由WHILE結(jié)構(gòu)和IF語句構(gòu)成的程序.
3)終態(tài)結(jié)表示識別出某種單詞符號,因此,對應(yīng)語句為
RETURN(C,VAL)
其中,C為單詞種別,VAL為單詞自身值.
3.2詞法分析器的設(shè)計
3.2.1輸入、預(yù)處理
輸入串放在輸入緩沖區(qū)中。
預(yù)處理子程序:剔除無用的空白、跳格、回車和換行等編輯性字符;區(qū)分標(biāo)號區(qū)、捻接續(xù)行和給出句末符等
掃描緩沖區(qū)
3.2.2單詞符號的識別:超前搜索
基本字識別:需要超前搜索才能確定哪些是基本字
標(biāo)識符識別:字母開頭的字母數(shù)字串,后跟界符或算符
常數(shù)識別:識別出算術(shù)常數(shù)并將其轉(zhuǎn)變?yōu)槎M制內(nèi)碼表示。有些也要超前搜索。
算符和界符的識別:把多個字符復(fù)合而成的算符和界符拼合成一個單詞符號。
3.2.3狀態(tài)轉(zhuǎn)換圖
概念:狀態(tài)轉(zhuǎn)換圖是一張有限方向圖。結(jié)點代表狀態(tài),用圓圈表示;狀態(tài)之間用箭弧連結(jié),箭弧上的標(biāo)記(字符)代表射出結(jié)狀態(tài)下可能出現(xiàn)的輸入字符或字符類;一張轉(zhuǎn)換圖只包含有限個狀態(tài),其中有一個為初態(tài),實際上至少要有一個終態(tài)。
一個狀態(tài)轉(zhuǎn)換圖可用于識別(或接受)一定的字符串。
幾點重要限制--不必使用超前搜索:
所有基本字都是保留字;用戶不能用它們作自己的標(biāo)識符
基本字作為特殊的標(biāo)識符來處理;不用特殊的狀態(tài)圖來識別,只要查保留字表。
如果基本字、標(biāo)識符和常數(shù)(或標(biāo)號)之間沒有確定的運算符或界符作間隔,則必須使用一個空白符作間隔。
3.2.4狀態(tài)轉(zhuǎn)換圖的實現(xiàn)
做法:
1)對不含回路的分叉結(jié),可用一個CASE語句或一組IF-THEN-ELSE語句實現(xiàn)
2)對含回路的狀態(tài)結(jié),可對應(yīng)一段由WHILE結(jié)構(gòu)和IF語句構(gòu)成的程序.
3)終態(tài)結(jié)表示識別出某種單詞符號,因此,對應(yīng)語句為
RETURN(C,VAL)
其中,C為單詞種別,VAL為單詞自身值.
【‘教案’課程教案-第三章-1】相關(guān)文章:
認識1的教案02-17
《識字1》教案03-07
小班課程教案03-06
安全的課程教案01-27
游戲課程教案02-08
體育課程教案01-06
校園暴力課程教案01-01
科學(xué)課程的教案02-25
音樂課程教案02-05
美術(shù)課程教案01-20