久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

編譯原理實驗報告[合集]

時間:2019-05-14 21:00:53下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《編譯原理實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《編譯原理實驗報告》。

第一篇:編譯原理實驗報告

編譯原理實驗報告

報告完成日期 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.輸出語法樹 三、三地址碼生成器

算法的基本思想:

我們增加了聲明變量類型、類型賦值判定和聲明的變量被引用時作用域的判斷。從而使得我們的實驗結果呈現的更加清晰和易懂。

在報錯的時候,我們會呈現類型、作用域和賦值三種的問題的報錯信息。

流程圖:

算法展示:

四、實驗體會

這次實驗其實總的來說是讓我們更加清晰的理解到了我們所學的內容。有時候我們上課聽講,課下復習寫作業的時候,其實看似掌握了所學內容,但實際上并沒有親身體會的操作很難讓我們深刻的理解其中的相關意義。通過這次實驗,我們能夠從根源處了解到了我們所學的內容,并且基于我們理解之后的輸出。比如詞法分析不能采用空格來區分單詞,因為存在加減乘除等運算符和分隔符,使用空格來區分可能會造成錯誤的分解。又比如我們再在程序設計中,常常體會到效率的重要性。影響詞法分析的效率的主要因素是各個狀態的分支如何規劃。如果每個進來的單詞都能在最短的時間和最少的匹配次數內找到其入口,則效率將得到很大程度上的提高。所以由此我們產生了聲明變量類型、賦值和作用域的想法,將其放在最后來進行判斷,這樣可以提高整體的執行效率。

另外,這次小組成員彼此不在一個班級,這樣從某一方面來說,也加強了我們互相快速熟識并團結協作的能力,有了這種體驗,我想我們在今后的生活中,面對這種情況的時候,將會變得更加有經驗。

五、源程序

詞法分析器: 輸入結果:

輸出結果:

語義分析結果:

輸入:

第二組數據的輸入:

輸出:

三地址碼的輸入:

第二組數據的輸入:

輸出:

第二篇:編譯原理語法分析實驗報告

實驗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 輸出:

第三篇:編譯原理--實驗報告(小編推薦)

吉林大學計算機科學與技術學院實驗報告

計算機基礎實驗教學中心編制

姓名,學號:胡智超,53070108;陳玉娟,53070130;程明,53070109;張宇航,53070110

2007 級1班 實驗室:A209成績指導教師(簽字)(存檔)

—————————————————————————————————————————————— ★ 實驗課程名稱:

★ 實驗 項 目:

★ 實驗 儀 器:

★ 實驗 要 求:

★ 實驗步驟、分析設計與結果:

第四篇:《編譯原理》課程(詞法分析)實驗報告

一.實驗序號:《編譯原理》第一次實驗

二.實驗題目:詞法分析

三.實驗日期:2010.10

四.實驗環境(操作系統,開發語言)

操作系統:Windows

開發語言:C

五.實驗內容(實驗要求)

a)將標識符的詞法改為“以大寫字母或小寫字母開頭,后面可以跟大寫字

母或小寫字母或數字或下劃線”。

b)將<條件>中的表示相等關系的單詞“=”改為“= =”

c)將原來的無小數的數改為可以有小數的數

六.實驗步驟

a)打開VC++,找到getsym()項目。

int getsym()

{...}

在getsym()函數中設置斷點,F10逐過程調試

根據要求a修改為

if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')

往后面看,修改while(ch>='a' && ch<='z' || ch>='0' && ch<='9' ||ch>='A' && ch<='Z' || ch=='_');

b)在檢測賦值符號的程序段中找到等號 = 的判斷代碼,改變成為 = = 即

可。

c)在獲取整數數字的值的程序段后面添加判斷小數點的代碼。如果是,即

讀取符號并且按照小數的要求將其縮小并且累加到總的符號串中。

七.實驗體會(包括收獲、心得體會、存在的問題及解決問題的方法、建議等)

通過實驗,如果要修改代碼的話,首先應該讀懂源碼,在修改之前了解到程序段的功能是什么,然后再在相應的行進行修改添加,再進行合理的調試。如果問題太過困難可以查詢資料或與同學進行討論

八.實驗結果(關鍵源程序)

a)

int getsym()

{

int i,j,k;

while(ch==' '||ch==10||ch==9)/*忽略空格,換行和TAB*/{

getchdo;

}

if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')/*名字或保留字以a..zA。Z開頭*/{

k=0;

do{

if(k

{

a[k]=ch;

k++;

}

getchdo;

}while(ch>='a' && ch<='z' || ch>='0' && ch<='9' || ch>='A' && ch<='Z' || ch=='_');//

if(ch>='0'&&ch<='9')/*檢測是否為數字,以0..9開頭*/{

k=0;

num=0;

sym=number;

do{

//435

num=10*num+ch-'0';

k++;

getchdo;

}while(ch>='0' && ch<='9');

if(ch=='.')

{

k++;

sym=period;

getchdo;

sym=number;

int div=10;

do{num=num+(ch-'0')/div;

k++;

getchdo;

div=div*10;

}while(ch>='0'&&ch<='9');

}

b)

else

{

if(ch=='>')//檢測大于或大于等于符號{

getchdo;

if(ch=='=')//add by M

{

sym=geq;//構成>=

getchdo;

}

else

{

sym=gtr;//否則就是一個單獨的>號}

}

else

{

if(ch=='=')

{

getchdo;

if(ch=='=')

{

sym=deq;

getchdo;

}

else

{

sym=eql;

}

}

c)else

{if(ch == ’.’)

{k=10;

getchdo;

do{num=num+(ch-'0')/k;

k=k*10;

getchdo;

}while(ch>='0'&&ch<='9');}

}

第五篇:編譯原理 學習心得

國際學院 0802 楊良燕 200819100227

《編譯原理》課程學習心得

《編譯原理》是計算機專業的一門重要課程,正如教材

第一章的引論所述,“編譯程序是現代計算機系統的基本組成部分之一”。“一個編譯程序就是一個語言翻譯程序,語言翻譯程序把一種語言(源語言)書寫的程序翻譯成另一種語言(目標語言)的等價程序”。

通過這一學期的學習,我覺得編譯原理是一門理論性很強的課程,從文法和語言的概念到LL(1)文法和LR(0)文法的分析,幾乎都是對具體問題的抽象。因而,我們需要更多的時間來理解、掌握相關的知識,當然在這一過程中也存在很多問題,比如我們后期學習具體文法的分析方法時,對于文法的概念不夠清晰,影響了上課的效率,知道老師再次給我們講解了文法等基礎的知識點,我們才慢慢掌握后面所學的LL(1)文法等,也發現了知識點之間的關聯。此外,這門課程的課時被安排得很少,一周只有一次,這樣很不利于我們對這門重要課程的理解和掌握。但是我覺得我們很幸運,因為老師在有限的課程中盡量將知識點以比較容易接受的方式給我們講解,教我們用簡單的方法理解記憶不同的知識,對于我們提出的問題,無論課上或是課外,老師一直是不厭其煩,甚至利用課余時間為我們講解重要的難題。

編譯原理這門課程不僅僅在于其本身的理論價值,更在于為我們解決問題提供的思維方式和方法。從LL(1)到LR(0),問題不斷被解決的同時,又有一個個新的問題提了出來。對計算機語言世界的知識積累,像滾雪球一樣越滾越大。這個逐漸遞進,逐漸解決問題的過程對我來說是收獲很大的。整個過程好像踏著前人研究編譯理論的路線,不斷感覺他們遇到的問題,更重要的是他們解決問題的思路。編譯原理的課程帶給我的不只是如何去編譯程序這樣的理論知識,相信更重要的是一種如何“自動計算”的思路。通過對相關編譯問題的具體分析,讓我體會最深的是一種“自動計算”的思想,同時完成編譯試驗后,更是感到了一種“自動計算”的快樂。”然而我明白自己雖然對編譯有了一定的了解,我懂得了文法的分析,學會了構造確定和非確定有限自動機,學會了LL(1)文法和LR(0)文法等,但是并沒有完全掌握,對于這些知識點的實質性和其他方面,更是認識不深。作為一名學習計算機科學與技術的學生,我明白編譯原理是軟件工程的基礎,課程的結束并不意味著學習的結束,只有通過以后的學習,才能更深入地了解編譯原理。

下載編譯原理實驗報告[合集]word格式文檔
下載編譯原理實驗報告[合集].doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    編譯原理課程設計

    課 程 設 計 報 告 設計題目:一個簡單文法的編譯器前端的設計與實現 班級: 計算機1206 組長學號:201239 組長姓名:閆智宣 指導教師:李曉華 設計時間:2014年12月 [在此處鍵入] 設......

    編譯原理教學大綱(范文模版)

    編譯原理教學大綱 一、課程的性質、地位 本課程是計算機專業的重要專業課之一,是一門理論性和實踐性較強的課程。主要介紹程序設計語言編譯程序構造的基本原理和基本實現方法......

    編譯原理論文

    編譯原理心得體會 編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法,在計算機本科教學中占有十分重要的地位。 該課程理論性與實踐性都很強,我......

    編譯原理課程設計報告

    武 漢 紡 織 大 學 編譯原理課程設計實驗報告學院:數學與計算機 專業:計算機 姓名: 班級: 學號:1 編譯原理 編譯原理課設報告 一、 實驗目的 加強對編譯程序的整體認識和了解,鞏......

    編譯原理試題(2009-2010-1)

    《編譯原理》試題A 1.名詞解釋 短語 LL(1)文法 語法分析 無環路有向圖(DAG) 語法制導翻譯 2. Pascal語言無符號數的正規定義如下: num ? digit+ (.digit+)? (E(+|-)? digit+)?......

    編譯原理學習論文(推薦)

    編譯原理學習論文 班級:09應用(2)班姓名:彭文陽學號:2009081215 大學課程為什么要開設編譯原理呢?這門課程關注的是編譯器方面的產生原理和技術問題,似乎和計算機的基礎領域不沾邊,......

    編譯原理課程設計設計任務書

    編譯原理課程設計任務書 1、目的 學生在學習《程序設計語言編譯原理》課程過程中,結合各章節的構造編譯程序的基本理論,總共用10個課時完成課程設計。在基本實驗完成的基礎上,......

    編譯原理課程設計心得體會

    經過一個星期的編譯原理課程設計,本人在劉貞老師的指導下,順利完成該課程設計。通過該課程設計,收獲頗多。一、對實驗原理有更深的理解通過該課程設計,掌握了什么是編譯程序,編譯......

主站蜘蛛池模板: 日日澡夜夜澡人人高潮| 精品卡一卡二卡3卡高清乱码| 亚洲丁香婷婷综合久久| 亚洲色大成网站久久久| 夜夜躁狠狠躁日日躁202| 真人作爱90分钟免费看视频| 69做爰视频在线观看| 国产美女久久久亚洲综合| 人妻无码aⅴ不卡中文字幕| 久久亚洲精品成人无码网站夜色| 国产精品久久久一区二区三区| 男女免费观看在线爽爽爽视频| 国产国产人免费视频成69| 国产成人av一区二区在线观看| 美女大量吞精在线观看456| 久久久亚洲精华液精华液精华液| 国产99久久久精品无码| 亚洲av成人无码网天堂| 97se亚洲精品一区| 国产色秀视频在线播放| 成品人视频ww入口| 亚洲a综合一区二区三区| 极品少妇小泬50pthepon| 欧美一区二区三区久久综合| 日韩欧美亚洲综合久久影院d3| 久久天天躁狠狠躁夜夜不卡| 国模无码一区二区三区不卡| 特级毛片a级毛片在线播放www| 无码h片在线观看网站| 九九久久精品国产免费看小说| 国产精品亚洲日韩欧美色窝窝色欲| 国产精品久久久久久久久软件| 无码人妻精品一区二区三区夜夜嗨| 天天躁夜夜躁狠狠是什么心态| 日本午夜精品一区二区三区电影| 蜜臀98精品国产免费观看| 国产精品综合av一区二区国产馆| 2020精品国产福利在线观看香蕉| 中文字幕av无码一区二区三区| 欧美成人精品三级一二三在线观看| 亚洲不卡av不卡一区二区|