南工大2010編譯原理實驗
一、上機實習目的
理解編譯程式的構造原理,掌握編譯程式的構造方法與技術。通過實習,使學生既加深對編譯原理基礎理論的理解,又提高動手能力,特別是提高軟體設計能力。
二、上機實習要求
在理解編譯原理基本思想的基礎上,選擇乙個自己熟悉的程式語言,完成編譯程式的設計和實現過程。本上機實習是為某個計算機語言設計乙個編譯程式,完成詞法分析、語法分析、語義分析等功能,並生成某種機器上的目標**。在上機實習指導書中給出了上機實習的基本思路,學生可以按照這個去做,能力強的學生還可以按照所學知識,自行設計方案。
三、上機實習步驟
1.閱讀《上機實習任務書》及《上機實習指導書》。 2
.根據設計要求寫演算法,畫程式框圖3
.根據框圖編寫源程式 4
.輸入源程式並上機除錯 5
.撰寫上機實習報告
四、上機實習內容
1、題目:c語言小子集編譯程式的實現
2、c語言小子集的文法規則:
<程式》::=main()
<分程式》::=[《常量說明部分);]《變數說明部分》;《語句部分》
<
常量說明部分》::=const《常量定義表》
<
常量定義表》::=《常量定義表》,《常量定義》
<
常量定義表》::=《常量定義》
<
常量定義》::=《識別符號》=《常量》
<變數說明部分》::=《變數說明》《識別符號表》
<變數說明》::=int
<識別符號表》::=《識別符號表》,《識別符號》
<識別符號表》::=《識別符號》
<識別符號》::=《字母》
<識別符號》::=《識別符號》《字母》
<識別符號》::=《識別符號》《數字》
<語句部分》::=《語句部分》;《語句》|《語句》
<語句》::=《賦值語句》|《條件語句》|
<
迴圈語句》|《讀語句》|《寫語句》|<復合語句》
<復合語句》::=
<賦值語句》::=《識別符號》=《表示式》
<條件》::=《表示式》《關係運算子》《表示式》
<表示式》::=《項》|《表示式》《加法運算子》《項》
<項》::=《因子》|《項》《乘法運算子》《因子》
<因子》::=《識別符號》|《常量》|(《表示式》)
<常量》::=《無符號整數》
<無符號整數》::=《數字序列》
<數字序列》::=《數字序列》《數字》
<數字序列》::=《數字》
<加法運算子》::=+|-
<乘法運算子》::=*|/
<關係運算子》::=<|>|!=|>=|<=|==
<條件語句》::=if(《條件》)《語句部分》else《語句部分》
<
迴圈語句》::=while(《條件》)do《語句部分》
<
讀語句》::=scanf(《格式控制表》,《識別符號位址表》)
<
寫語句》::=printf(《格式控制表》,《識別符號表》)
<字母》::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
<
數字》::=0|1|2|3|4|5|6|7|8|9
3
、實現功能:
(1)
詞法分析
掃瞄源程式,根據詞法規則,識別單詞,填寫相應的符號表。
(2)
語法分析
對由源程式作語法分析,確定是否屬於c
語言小子集,同時揭示出程式的內在結構。
(3)
語法錯誤檢查
根據c
語言小子集的文法規則設定檢測手段,通過查錯子程式或一些查錯語句,報告源程式出錯位置、性質等,直至整個程式結束為止。
(4)
語義分析與目標**生成
在語法分析的基礎上,進行語義分析,生成源程式的目標**。源程式的目標**可以建立在乙個假想的處理機(虛擬機器)上,也可以以所學的組合語言為基礎。
源程式樣本:
main ()
x=a+b;y=b+b;
if(x>y)max=x
else max=y
}
五、附錄:pl0
編譯程式的實現
合工大 編譯原理 實驗三
合工大 編譯原理 實驗三 lr 1 分析法 本專案使用c 實現,利用windows api製作了簡易的ui介面。具體功能如下 支援檢視文法,專案族,lr 1 分析表,句子歸約過程。可使用包含左遞迴的文法且在過程中不生成新終結符 利用graphviz檢視dfa轉換圖 詳細功能 示例截圖 專案 請見gi...
哈工大編譯原理實驗1 詞法分析
設計實現類高階語言的詞法分析器,基本功能如下 1 能識別以下幾類單詞 識別符號 由大小寫字母 數字以及下劃線組成,但必須以字母或者下劃線開頭 關鍵字 型別關鍵字 整型 浮點型 布林型 記錄型 分支結構中的if和else 迴圈結構中的do和while 過程宣告和呼叫中的關鍵字 運算子 算術運算子 關係...
河工大編譯原理
河北工業大學編譯原理實驗 c c 詞法分析 cpp include include include include include define begin 1 define end 2 define if 3 define then 4 define else 5 define for 6 def...