第一篇:編譯原理語法分析實驗報告
實驗2:語法分析
1.實驗題目和要求
題目:語法分析程序的設計與實現。
實驗內容:編寫語法分析程序,實現對算術表達式的語法分析。要求所分析算術表達式由如下的文法產生。
E?E?T|E?T|TT?T*F|T/F|F F?id|(E)|num實驗要求:在對輸入表達式進行分析的過程中,輸出所采用的產生式。方法1:編寫遞歸調用程序實現自頂向下的分析。方法2:編寫LL(1)語法分析程序,要求如下。
(1)編程實現算法4.2,為給定文法自動構造預測分析表。(2)編程實現算法4.1,構造LL(1)預測分析程序。
方法3:編寫語法分析程序實現自底向上的分析,要求如下。(1)構造識別所有活前綴的DFA。(2)構造LR分析表。
(3)編程實現算法4.3,構造LR分析程序。
方法4:利用YACC自動生成語法分析程序,調用LEX自動生成的詞法分析程序。實現(采用方法1)
1.1.步驟:
1)對文法消除左遞歸
E?TE'E'??TE'|?TE'|?T?FT'T'?*FT'|/FT'|?F?id|(E)|num
2)畫出狀態轉換圖
化簡得:
3)源程序
在程序中I表示id N表示num
1.2.例子:
a)例子1 輸入:I+(N*N)輸出:
b)例子2 輸入:I-NN 輸出:
第二篇:編譯原理實驗報告
編譯原理實驗報告
報告完成日期 2018.5.30
一. 組內分工與貢獻介紹
二. 系統功能概述;
我們使用了自動生成系統來完成我們的實驗內容。我們設計的系統在完成了實驗基本要求的前提下,進行了一部分的擴展。增加了聲明變量類型、類型賦值判定和聲明的變量被引用時作用域的判斷。從而使得我們的實驗結果呈現的更加清晰和易懂。
三. 分系統報告;
一、詞法分析子系統
詞法的正規式:
標識符
<字母>(<字母>|<數字字符>)* 十進制整數
0 |(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)* 八進制整數 0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* 十六進制整數 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 運算符和分隔符 +| * | / | > | < | = |(|)| <=|>=|==; 對于標識符和關鍵字: A5—〉 B5C5 B5—〉a | b |??| y | z C5—〉(a | b |??| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε 綜上正規文法為: S—〉I1|I2|I3|A4|A5 I1—〉0|A1 A1—〉B1C1|ε C1—〉E1D1|ε D1—〉E1C1|ε
E1—〉0|1|2|3|4|5|6|7|8|9 B1—〉1|2|3|4|5|6|7|8|9 I2—〉0A2 A2—〉0|B2 B2—〉C2D2 D2—〉F2E2|ε E2—〉F2D2|ε
C2—〉1|2|3|4|5|6|7 F2—〉0|1|2|3|4|5|6|7 I3—〉0xA3 A3—〉B3C3 B3—〉0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f C3—〉(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)|C3|ε
A4—〉+ |-| * | / | > | < | = |(|)| <=|>=|==; A5—〉 B5C5 B5—〉a | b |??| y | z C5—〉(a | b |??| y | z |0|1|2|3|4|5|6|7|8|9)C5|ε
狀態圖
流程圖:
詞法分析程序的主要數據結構與算法
考慮到報告的整潔性和整體觀感,此處我們僅展示主要的程序代碼和算法,具體的全部代碼將在整體的壓縮包中一并呈現
另外我們考慮到后續實驗中,如果在bison語法樹生成的時候推不出目標的產生式時,我們設計了報錯提示,在這個詞的位置出現錯誤提示,將記錄切割出來的詞在code.txt中保存,并記錄他們的位置。
以下是我們的主要代碼:
進制的識別:
結果展示:
二、語法分析子系統
根據選擇的語法分析方法進行描述
我們使用了遞歸子程序發,并且對原有的產生式進行了改寫,改寫后的結果如下: P→LP1|L L→S
S→id=E|{P}|if C then S | if C then S
1else S2 | while C do S1 C→E1C’
C’→>E2| E→int8E’| int10E’| int16E’| idE’|T E’→+T|-T||+TE’|-TE’ T→int8T’| int10T’| int16T’| idT’|F T’→*F|/F|*FT’|/FT’ F→(E)|int8|int10|int16|id 簡化的語法圖: S的語法圖: C的語法圖: E的語法圖: T的語法圖: F的語法圖: 流程圖: 語法分析子系統的主要數據結構與算法 我們采用了自動生成技術,同樣在這里也是展示主要的核心功能代碼,全部的代碼展示在壓縮包中: 我們在設計時,實現了產生式對應的字符串同時標識產生式定義的int值 輔助程序: 生成語法樹的程序: 1.樹節點: 2.創建新節點 3.創建實數類型新節點 4.創建標識符類型新節點 5.輸出語法樹 三、三地址碼生成器 算法的基本思想: 我們增加了聲明變量類型、類型賦值判定和聲明的變量被引用時作用域的判斷。從而使得我們的實驗結果呈現的更加清晰和易懂。 在報錯的時候,我們會呈現類型、作用域和賦值三種的問題的報錯信息。 流程圖: 算法展示: 四、實驗體會 這次實驗其實總的來說是讓我們更加清晰的理解到了我們所學的內容。有時候我們上課聽講,課下復習寫作業的時候,其實看似掌握了所學內容,但實際上并沒有親身體會的操作很難讓我們深刻的理解其中的相關意義。通過這次實驗,我們能夠從根源處了解到了我們所學的內容,并且基于我們理解之后的輸出。比如詞法分析不能采用空格來區分單詞,因為存在加減乘除等運算符和分隔符,使用空格來區分可能會造成錯誤的分解。又比如我們再在程序設計中,常常體會到效率的重要性。影響詞法分析的效率的主要因素是各個狀態的分支如何規劃。如果每個進來的單詞都能在最短的時間和最少的匹配次數內找到其入口,則效率將得到很大程度上的提高。所以由此我們產生了聲明變量類型、賦值和作用域的想法,將其放在最后來進行判斷,這樣可以提高整體的執行效率。 另外,這次小組成員彼此不在一個班級,這樣從某一方面來說,也加強了我們互相快速熟識并團結協作的能力,有了這種體驗,我想我們在今后的生活中,面對這種情況的時候,將會變得更加有經驗。 五、源程序 詞法分析器: 輸入結果: 輸出結果: 語義分析結果: 輸入: 第二組數據的輸入: 輸出: 三地址碼的輸入: 第二組數據的輸入: 輸出: 吉林大學計算機科學與技術學院實驗報告 計算機基礎實驗教學中心編制 姓名,學號:胡智超,53070108;陳玉娟,53070130;程明,53070109;張宇航,53070110 2007 級1班 實驗室:A209成績指導教師(簽字)(存檔) —————————————————————————————————————————————— ★ 實驗課程名稱: ★ 實驗 項 目: ★ 實驗 儀 器: ★ 實驗 要 求: ★ 實驗步驟、分析設計與結果: 設計題一:算術表達式的語法分析及語義分析程序設計。1.目的 通過設計、編制、調試一個算術表達式的語法及語義分析程序,加深對語法及語義分析原理的理解,并實現詞法分析程序對單詞序列的詞法檢查和分析。2.設計內容及要求: 算術表達式的文法: 〈無符號整數〉∷= 〈數字〉{〈數字〉} 〈標志符〉∷= 〈字母〉{〈字母〉|〈數字〉} 〈表達式〉∷= [+|-]〈項〉{〈加法運算符〉〈項〉} 〈項〉∷= 〈因子〉{〈乘法運算符〉〈因子〉} 〈因子〉∷= 〈標志符〉|〈無符號整數〉|‘(’〈表達式〉‘)’ 〈加法運算符〉∷= +|- 〈乘法運算符〉∷= *|/ 選擇算符優先分析方法完成以上任務,生成逆波蘭式的中間代碼; (1)寫出算術表達式的符合分析方法要求的文法,給出分析方法的思想,完成分析程序設計。 (2)編制好分析程序后,設計若干用例,上機測試并通過所設計的分析程序。 源代碼 #define _CRT_SECURE_NO_WARNINGS #include “stdio.h” #include “stdlib.h” #include int fflag[10] = { 0 };//標志第i個非終結符的FIRSTVT集是否已求出 int lflag[10] = { 0 };//標志第i個非終結符的LASTVT集是否已求出 int deal();//對輸入串的分析 int terminal_symbol(char c);//判斷字符c是否是終極符 int location(char c);//求字符c在算符優先關系表中的下標 void out(int j, int k, char *s);//打印s棧 void firstvt(char c);//求非終結符c的FIRSTVT集 void lastvt(char c);//求非終結符c的LASTVT集 void table();//創建文法優先關系表 char output[10];//存儲逆波蘭式 void main(){ int i, j, k = 0;printf(“請輸入文法規則數:”);scanf(“%d”, &r);printf(“請輸入文法規則:n”);for(i = 0;i } for(i = 0;i } for(i = 0;i for(j = 0;st[i][j]!= '
主站蜘蛛池模板:
精品无码久久久久久国产|
4hu亚洲人成人无码网www电影首页|
国产欧色美视频综合二区|
在线天堂中文在线资源网|
日本强好片久久久久久aaa|
亚洲成av人片无码不卡|
亚洲伦无码中文字幕另类|
国产va免费精品观看|
扒开双腿猛进入喷水高潮叫声|
亚洲理论电影在线观看|
一区二区三区无码免费看|
少妇被粗大的猛烈进出免费视频|
亚洲不卡av不卡一区二区|
国产无遮挡又黄又爽免费网站|
欧美性猛交久久久乱大交小说|
国产午夜鲁丝片av无码|
久久中文字幕亚洲精品最新|
亚洲国产成人无码av在线播放|
亚洲人交乣女bbw|
国产ww久久久久久久久久|
国产午夜激无码av毛片|
少妇厨房愉情理伦片免费|
四虎www永久在线精品|
亚洲浮力影院久久久久久|
久久天天躁狠狠躁夜夜躁2014|
成 人 网 站 免费 在线|
最近中文字幕视频高清|
久久午夜无码鲁丝片直播午夜精品|
久久天堂综合亚洲伊人hd|
亚洲综合一区二区三区无码|
无码r级限制片在线观看|
人妻夜夜爽天天爽三区麻豆av网站|
亚洲欧美日韩精品专区|
蜜臀视频在线一区二区三区|
色avav色av爱avav亚洲色拍|
久久亚洲av无码精品色午夜麻豆|
欧美成人乱码一二三四区|
亚洲欧美成人一区二区三区|
天天射天天日本一道|
久久99精品国产.久久久久|
亚洲av永久无码精品放毛片|
第三篇:編譯原理--實驗報告(小編推薦)
第四篇:編譯原理課程設計_算術表達式的語法分析及語義分析程序設計(模版)