freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理之詞法分析-wenkub

2022-09-04 10:59:14 本頁(yè)面
 

【正文】 4/78 三、配對(duì)緩沖區(qū) ? 原因:不論緩沖器多大都不能保證單詞不被它的邊界打斷 ? 把一個(gè)緩沖器分為相同的兩半,每半各含 N個(gè)字符,一般 N=1KB或 4KB。 Wensheng Li BUPT 2022 10/78 詞法分析的一些難點(diǎn) ? 位置對(duì)準(zhǔn) Fortran要求某些結(jié)構(gòu)出現(xiàn)在輸入行的固定位置 ? 空白不作為分隔符 Fortran中空格是無(wú)意義的,可以隨便加入 DO 5 I = (賦值語(yǔ)句, DO5I是標(biāo)識(shí)符) DO 5 I = 1,25 (循環(huán)語(yǔ)句, DO是關(guān)鍵字) ? 關(guān)鍵字不保留 PL/I語(yǔ)言的關(guān)鍵字不保留 IF THEN THEN THEN=ELSE。 詞法分析程序與語(yǔ)法分析程序在同一遍中,以生產(chǎn)者和消費(fèi)者的關(guān)系同步運(yùn)行。 P1 P2 喚醒 P2 喚醒 P1 喚醒 P2 喚醒 P1 Wensheng Li BUPT 2022 9/78 分離詞法分析程序的好處 ? 可以簡(jiǎn)化設(shè)計(jì) – 詞法程 序 很容易識(shí)別并去除空格、注釋,使語(yǔ)法分析程 序致力于語(yǔ)法分析,結(jié)構(gòu)清晰,易于實(shí)現(xiàn)。 ELSE ELSE=THEN Wensheng Li BUPT 2022 11/78 詞法分析程序的輸入與輸出 一、詞法分析程 序 的實(shí)現(xiàn)方法 二、設(shè)置緩沖區(qū)的必要性 三、配對(duì)緩沖區(qū) 四、詞法分析程 序 的輸出 Wensheng Li BUPT 2022 12/78 一、詞法分析程序的實(shí)現(xiàn)方法 ? 利用詞法分析程 序自動(dòng) 生成器 – 從基于正規(guī)表達(dá)式的規(guī)范說(shuō)明自動(dòng)生成詞法分析程 序 。 ? 基本方法 開(kāi)始指針 向前指針 … … i f x = y t h e n j : = j + 2 。 向前指針移到緩沖區(qū)的開(kāi)始位置 。 向前指針前移一個(gè)位置 。 }。 – 單詞:是指某一類單詞符號(hào)的一個(gè)特例,如 position是標(biāo)識(shí)符。 – 為設(shè)計(jì)詞法程序,對(duì)模式要給出規(guī)范、系統(tǒng)的描述。 – 邊上的標(biāo)記代表在射出結(jié)狀態(tài)下,可能出現(xiàn)的輸入符號(hào)或字符類。 無(wú)符號(hào)數(shù) :同 PASCAL語(yǔ)言中的無(wú)符號(hào)數(shù)。 單詞符號(hào)間的分隔符 :空格 Wensheng Li BUPT 2022 42/78 記號(hào)的正規(guī)文法 ? 標(biāo)識(shí)符的文法 id ? letter rid rid ? ? | letter rid | digit rid ? 無(wú)符號(hào)整數(shù)的文法 digits ? digit remainder remainder ? ? | digit remainder Wensheng Li BUPT 2022 43/78 ? 無(wú)符號(hào)數(shù)的文法 num ? digit num1 num1 ? digit num1 | . num2 | E num4 | ? num2 ? digit num3 num3 ? digit num3 | E num4 | ? num4 ? + digits | digits |digit num5 digits ? digit num5 num5 ? digit num5 | ? ? 關(guān)系運(yùn)算符的文法 relop ? |equal | = |greater ||equal greater ? equal ? = 記號(hào)的正規(guī)文法 (續(xù) ) Wensheng Li BUPT 2022 44/78 ? 賦值號(hào)的文法 assign_op ? :equal equal ? = ? 標(biāo)點(diǎn)符號(hào)的文法 single ? + | | * | / | ( | ) | : | ? | 。 。 (2) iskey:整型變量 (3) token:字符數(shù)組,存放單詞的字符串。 (7) get_char:讀字符過(guò)程,每調(diào)用一次,讀進(jìn)一個(gè)字符,并把它放入 char中,且向前指針 forward指向下一個(gè)字符。 (11) retract:過(guò)程,向前掃描指針 forward后退一個(gè)字符。 (15) error:錯(cuò)誤處理函數(shù)。 get_nbc。 iskey=reserve。 ELSE return (關(guān)鍵字的記號(hào), )。 } retract。 IF (C==?=?) return(relop, LE)。} BREAK。 IF (C==?=?) return(relop, GE)。 編制詞法分析器(續(xù)) Wensheng Li BUPT 2022 56/78 CASE ?:? : get_char。 BREAK。 BREAK。 BREAK。 BREAK。 get_char。 ELSE { retract。 // end of case ?/? DEFAULT: error()。 WHILE (B) { get_char。 BREAK。 CASE ?? :state=8。 ……} CASE 1: SWITCH (C) { CASE ?a?..?z?: cat。 state=1。 BREAK。 ? 動(dòng)作 i 是 C語(yǔ)言的程序語(yǔ)句 , 表示當(dāng)一個(gè)串匹配模式Pi時(shí) , 詞法分析器應(yīng)執(zhí)行的動(dòng)作 。 %} /* 正規(guī)定義式 */ delim [ \t\n] ws {delim}+ letter [AZaz] digit [09] id {letter}({letter}|{digit})* num {digit}+(\.{digit}+)?(E[+\]?{digit}+)? %% Wensheng Li BUPT 2022 66/78 /* 規(guī)則部分 */ {ws} {/* 沒(méi)有動(dòng)作,也不返回 */} if { return(IF)。 return(ID)。 return(RELOP)。 return(RELOP)。 return(RELOP)。 Wensheng Li BUPT 2022 70/78 二、 LEX的工作原理 —— ? 最長(zhǎng)匹配原則 – 在識(shí)別單詞符號(hào)過(guò)程中,當(dāng)有幾個(gè)規(guī)則看來(lái)都適用時(shí),則實(shí)施最長(zhǎng)匹配的那個(gè)規(guī)則 ? 優(yōu)先匹配原則 – 如有幾條規(guī)則可以同時(shí)匹配一字符串,并且匹配的長(zhǎng)度相同,則實(shí)施最上面的規(guī)則。 return(RELOP)。 return(RELOP)。 return(RELOP)。 return(NUMBER)。 } else { return(ELSE)。 ? 這些過(guò)程也可以存入另外的程序文件中,單獨(dú)編譯,然后和詞法分析器連接裝配在一起。 – 出現(xiàn)在括號(hào)中的任何東西都直接抄寫(xiě)到詞法分析器,不作為正規(guī)定義和翻譯規(guī)則的一部分。 DEFAULT: …… /*處理標(biāo)識(shí)符和關(guān)鍵字程序 */。 BREAK。 …… CASE ?+? : return(?+?, )。 state=2。 SWITCH (state) { CASE 0: SWITCH (C) { CASE?a?..?z?: cat。 B=1。}。 GOTO loop_1。 IF (C==?*?) { loop_1: get_char。? : return(?。 BREAK。 BREAK。 retract。 return(relop, GT)。 BREAK。 ELSE { retract。 BREAK。 Wensheng Li BUPT 2022 55/78 CASE ?0?..?9?: WHILE (digit||?.?||?E?||?+?||??) { cat。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1