html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx
編譯原理實(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html怎么自动设为底部,让底部永远在页
- 下一篇: html判断数字数据的大小写,大小写字母