简单行编辑器c语言课程设计,简单的C语言编辑器课程设计.doc
簡單的C語言編輯器課程設計
《編譯原理》課程設計簡單的C語言編譯器
6 -
揚 州 大 學
編譯原理課程設計報告
題 目
題 目 簡單的編譯器
班 級 計科0802班
學 號 081202427
姓 名 張 俊
指導教師 姜 卯 生
成 績
揚州大學信息工程學院
2011
課程設計題目
實現一個簡單的編譯器
課程設計目的
通過編譯原理課程設計,加深對課堂中所講授的內容的理解,設計一個
具有詞法分析、語法、語義分析、錯誤處理的綜合程序。進一步掌握編譯程序常用實現的方法和技術,使學生初步具有研究、設計、編制和調試編譯程序的能力。
課程設計要求
1.實現一個C語言子集或Pascal語言子集的編譯器,工具任選。
2.要求實現的功能:翻譯 +,-,*, / 四則運算表達式及布爾表達式,翻譯包含if語句,while語句及do-while語句及相互間的嵌套。
課程設計語言及選用工具
選用語言:Java
工具 Eclipse
課程設計方法
設計過程中用到的數據結構:
//關鍵字數組
public static List keyWord = new ArrayList();
//自定義符號串數組
public static Eryuanshi[] valueAndClass = new Eryuanshi[100];
//目標代碼數組
public static List siyuanshi = new ArrayList();
//目標代碼類,存放四元式的另外一種形式
class Siyuanshi{
String op;
String str1;
String str2;
}
//二元式類,存放詞法分析后的標志符,關鍵字及其類號
class Eryuanshi{
String word;
int classID;
}
Stack stateStack = new Stack();//狀態(tài)棧
Stack symStack = new Stack();//符號棧
Stack semanticStack = new Stack();//語義棧
編譯器主要分為兩個模塊:
(1)詞法分析程序:主要功能是從文件逐個單詞讀取源程序,進行次詞
法分析,并輸出源程序的二元式列表,二元式列表保存在keyWord對象數組中。
關鍵字、自定義標識符和數字對應的類號列表
+
3
||
15
int
27
-
4
=
16
float
28
*
5
(
17
char
29
/
6
)
18
if
30
<
7
[
19
else
31
<=
8
]
20
while
32
==
9
{
21
do
33
!=
10
}
22
main
34
>
11
:
23
!
35
>=
12
;
24
數字
2
&
13
,
25
自定義
標識符
1
&&
14
void
26
主要函數:
1、wordAnalys(String s):對源代碼進行詞法分析,在其中調用lookup()函數。
2、lookup(String s):對詞法分析函數中分析出的各字符串在關鍵字和符號 表中查找。
(2)語法分析及生成目標代碼程序:采用LR表分析程序,LR表具有ACTION和GOTO 兩部分。主要采用兩個LR分析表:算術表達式LR表和布爾表達 LR表。根據查詢LR表,判斷所要采取的動作。若得到值temp=-1,則表達式識別錯誤,若temp=0,則表達式識別成功,若0=100,則采取用對應表達式歸約。
算術表達式文法:
0) S?E
1) E?E+E
2)E?E--E
3) E?E*E
4)E?E/E
5) E?(E)
6) E?i
根據算術表達式文法構造算術表達式LR分析表:
int[][] E_L
總結
以上是生活随笔為你收集整理的简单行编辑器c语言课程设计,简单的C语言编辑器课程设计.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言编辑有什么种类,哪款C语言编辑器适
- 下一篇: c语言手机版程序编程器中文版,c语言编辑