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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx

發(fā)布時(shí)間:2025/3/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

編譯原理實(shí)驗(yàn)報(bào)告詞法分析器(內(nèi)含源代碼)

編譯原理實(shí)驗(yàn)(一)

——詞法分析器

實(shí)驗(yàn)描述

運(yùn)行環(huán)境:vc++2008

對(duì)某特定語言A ,構(gòu)造其詞法規(guī)則。

該語言的單詞符號(hào)包括:

1該程序能識(shí)別的單詞符號(hào)及類別說明表

單詞

類別

PROGRAM

0

NOT

1

BEGIN

2

IF

3

END

4

THEN

5

VAR

6

ELSE

7

INT

8

WHILE

9

AND

10

DO

11

OR

12

標(biāo)識(shí)符

13

常數(shù)

14

+

15

-

16

(

17

)

18

,

19

;

20

=

21

<

22

>

23

*

24

**

25

>=

26

<=

27

!=

28

2狀態(tài)轉(zhuǎn)換圖

3程序流程:

詞法分析作成一個(gè)子程序,由另一個(gè)主程序調(diào)用,每次調(diào)用返回一個(gè)單詞對(duì)應(yīng)的二元組,輸出標(biāo)識(shí)符表、常數(shù)表由主程序來完成。

實(shí)驗(yàn)?zāi)康?/p>

通過動(dòng)手實(shí)踐,使學(xué)生對(duì)構(gòu)造編譯系統(tǒng)的基本理論、編譯程序的基本結(jié)構(gòu)有更為深入的理解和掌握;使學(xué)生掌握編譯程序設(shè)計(jì)的基本方法和步驟;能夠設(shè)計(jì)實(shí)現(xiàn)編譯系統(tǒng)的重要環(huán)節(jié)。同時(shí)增強(qiáng)編寫和調(diào)試程序的能力。

實(shí)驗(yàn)任務(wù)

編制程序?qū)崿F(xiàn)要求的功能,并能完成對(duì)測(cè)試樣例程序的分析。

實(shí)驗(yàn)原理

char set[1000],str[500],strtaken[20];//set[]存儲(chǔ)代碼,strtaken[]存儲(chǔ)當(dāng)前字符

char sign[50][10],constant[50][10];//存儲(chǔ)標(biāo)識(shí)符和常量

定義了一個(gè)Analyzer類

class Analyzer{

public:

Analyzer();//構(gòu)造函數(shù) ~Analyzer();//析構(gòu)函數(shù)

int IsLetter(char ch); //判斷是否是字母,是則返回 1,否則返回 0。

int IsDigit(char ch); //判斷是否為數(shù)字,是則返回 1,否則返回 0。

void GetChar(char *ch); //將下一個(gè)輸入字符讀到ch中。

void GetBC(char *ch); //檢查ch中的字符是否為空白,

若是,則調(diào)用GetChar直至ch進(jìn)入一個(gè)非空白字符。

void Concat(char *strTaken, char *ch); //將ch中的字符連接到strToken之后。

int Reserve(char *strTaken); //對(duì)strTaken中的字符串查找保留字表,若是一個(gè)保留字返回它的數(shù)碼,否則返回0。

void Retract(char *ch) ; //將搜索指針器回調(diào)一個(gè)字符位置,將ch置為空白字符。

void input();//向存放輸入結(jié)果的字符數(shù)組輸入一句語句。

void display();//輸出一些程序結(jié)束字符顯示樣式

int analyzerSubFun();//詞法分析器子程序,為了實(shí)現(xiàn)詞法分析的主要功能。

代碼實(shí)現(xiàn)

// cifa.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。

//

#include "stdafx.h"

#include "stdio.h"

#include "string.h"

#include "iostream"

using namespace std;

char set[1000],str[500],strtaken[20];//set[]存儲(chǔ)代碼,strtaken[]存儲(chǔ)當(dāng)前字符

char sign[50][10],constant[50][10];//存儲(chǔ)標(biāo)識(shí)符和常量

//int Words[500][10];

char ch;//當(dāng)前讀入字符

int sr,to=0;//數(shù)組str, strtaken 的指針

int st=0,dcount=0;

int id=0;

static int line=1;

int h,l;

typedef struct Words /*放置二元組*/

{

int num;

char letters[20];

}DS;

DS Words[500];

typedef struct words

{

char word[20];

int type;

}WORDS;

WORDS words[]={

{"program",0},

{"not",1},

{"begin",2},

{"end",3},

{"if",4},

{"then",5},

{"var",6},

總結(jié)

以上是生活随笔為你收集整理的html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。