軟體學院驗證性實驗報告
專業:軟體開發(.net方向) 年級/班級:2010級 2012—2013學年第一學期
1、實驗目的及實驗專案簡介:
運用編譯程式,完成下述源程式的編譯,了解源程式的預處理功能
即通過編譯程式,將高階語言程式(源程式)翻譯成低階語言程式(目標程式)
源程式的輸入
設源程式如下所示,其中『\『為續行符。
源程式讀入後,輸入緩衝區的內容如下所示:
上述源程式經預處理後,掃瞄緩衝區中的內容如下所示:
2、實驗儀器及裝置:
在microsoft visual c++6.0環境下執行程式
visual c++ 6.0,簡稱vc或者vc6.0,是微軟推出的一款c++編譯器,將「高階語言」翻譯為「機器語言(低階語言)」的程式。
visual c++是乙個功能強大的視覺化軟體開發工具。自2023年microsoft公司推出visual c++1.0後,隨著其新版本的不斷問世,visual c++已成為專業程式設計師進行軟體開發的首選工具。
雖然微軟公司推出了 visual c++.net(visual c++7.0),但它的應用有很大的侷限性,只適用於windows 2000、windows xp和windows nt4.
0。所以實際中,更多的是以visual c++6.0為平台。
計算機屬性:
3、實驗步驟:
實驗主要步驟:
在microsoft visual c++6.0環境下輸入下面程式
用記事本編寫""檔案
(注意:保證""檔案和c++檔案在同一目錄下)
程式**:
實驗**分析:
根據詞法分析begin、end為保留字,:=為賦值號,*為乘號,.為界符,+為加號
1. 程式標頭檔案
#include<>
#include<>
2、測試驅動程式,並將緩衝區清0
void pro_process(char*);
void main()
;3、呼叫預處理程式
pro_process(buf);
cout<}
4、預處理程式
void pro_process(char*buf)
else
}break;
case true:
11、&&邏輯與運算子,前乙個字元為'*'',並且當前字元為'/',即遇到'*/'表示離開注釋
if(old_c=='*'&&cur_c離開注釋
in_comment=false;
}old_c=cur_c保留前乙個字元
}12、在源程式尾部新增字元『#『
buf[i
}四、實驗結果:
第一次執行結果:
因未將源程式""文字檔案和c++檔案儲存在同一目錄下,程式自動建立乙個""檔案,但檔案內容為空,所以執行結果如上
第二次執行結果:
將源程式""文字檔案和c++檔案儲存在同一目錄下,編譯程式對源程式進行編譯
五、分析與總結:
實驗錯誤分析:
1. 保證""檔案和編寫的c++檔案在同一目錄下,否則會出現錯誤
2. if (cur_c=='\t'||cur_c=='\n')
cur_c=' ';
單引號之間必須留有空格
實驗結果分析:
源程式讀入後,輸入緩衝區的內容如下所示:
上述源程式經預處理後,掃瞄緩衝區中的內容如下所示:
b為大寫字元,被轉換為小寫字元
begin後/*,進入注釋,去除已存入緩衝區的字元
*/離開注釋
r為大寫字元,被轉換為小寫字元
\n、\t,空格取代
\n、\t,再次空格取代
.\,發現續行
\n,空格
e為大寫字元,被轉換為小寫字元
最後,在源程式尾部新增字元『#『
buf[i++]='#';
可將源語言書寫程式翻譯成目標語言的等價程式。乙個源程式可能分成幾個模組存在不同的檔案裡,乙個預處理程式可將這些源程式匯集在一起。編譯程式生成的目標程式是彙編**形式,需要經由匯程式設計序發翻譯成可再裝配的機器**,再經由編譯/連線編輯程式與某些庫程式連線成真正能在機器上執行的**。
教師簽名:年月日
編譯原理實驗報告
通過編寫和除錯乙個詞法分析程式,掌握在對程式語言的源程式進行掃瞄的過程中,將字元形式的源程式流轉化為乙個由各類單詞符號組成的流的詞法分析方法。語言中具有的單詞包括五個關鍵字begin end if then else 識別符號 整型常數 六種關係運算子 乙個賦值符和四個算術運算子。參考實現方法簡述如...
編譯原理實驗報告
姓名 專業 班級 學號 指導老師 一 實驗內容 求解乙個文法的first follow select集合並判斷是不是ll 1 文法。一 實驗目的 通過實驗熟練掌握first follow select集合的求解演算法,加深對理論知識的理解。二 實驗原理 集的求解 1 若x vt,則first x 2...
編譯原理實驗報告
設計 編制並除錯乙個詞法分析程式,加深對詞法分析原理的理解。2.1 待分析的簡單的詞法 1 關鍵字 begin if then while do end 所有的關鍵字都是小寫。2 運算子和界符 3 其他單詞是識別符號 id 和整型常數 sum 通過以下正規式定義 id letter letter d...