南工大 編譯原理實驗

2021-05-24 01:07:08 字數 3805 閱讀 5503

南工大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...