日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单行编辑器c语言课程设计,简单的C语言编辑器课程设计.doc

發(fā)布時間:2023/12/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单行编辑器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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。