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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

編譯原理實驗報告詞法分析器(內含源代碼)

編譯原理實驗(一)

——詞法分析器

實驗描述

運行環境:vc++2008

對某特定語言A ,構造其詞法規則。

該語言的單詞符號包括:

1該程序能識別的單詞符號及類別說明表

單詞

類別

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

標識符

13

常數

14

+

15

-

16

(

17

)

18

,

19

;

20

=

21

<

22

>

23

*

24

**

25

>=

26

<=

27

!=

28

2狀態轉換圖

3程序流程:

詞法分析作成一個子程序,由另一個主程序調用,每次調用返回一個單詞對應的二元組,輸出標識符表、常數表由主程序來完成。

實驗目的

通過動手實踐,使學生對構造編譯系統的基本理論、編譯程序的基本結構有更為深入的理解和掌握;使學生掌握編譯程序設計的基本方法和步驟;能夠設計實現編譯系統的重要環節。同時增強編寫和調試程序的能力。

實驗任務

編制程序實現要求的功能,并能完成對測試樣例程序的分析。

實驗原理

char set[1000],str[500],strtaken[20];//set[]存儲代碼,strtaken[]存儲當前字符

char sign[50][10],constant[50][10];//存儲標識符和常量

定義了一個Analyzer類

class Analyzer{

public:

Analyzer();//構造函數 ~Analyzer();//析構函數

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

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

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

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

若是,則調用GetChar直至ch進入一個非空白字符。

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

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

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

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

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

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

代碼實現

// cifa.cpp : 定義控制臺應用程序的入口點。

//

#include "stdafx.h"

#include "stdio.h"

#include "string.h"

#include "iostream"

using namespace std;

char set[1000],str[500],strtaken[20];//set[]存儲代碼,strtaken[]存儲當前字符

char sign[50][10],constant[50][10];//存儲標識符和常量

//int Words[500][10];

char ch;//當前讀入字符

int sr,to=0;//數組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},

總結

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

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