資源簡(jiǎn)介
詞法分析
語法分析
編譯器的構(gòu)造和設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?br/>設(shè)計(jì)、編制并調(diào)試一個(gè)詞法分析程序,加深對(duì)詞法分析原理的理解。
二、基本知識(shí)
1、正則表達(dá)式
2、正則表達(dá)式到有限自動(dòng)機(jī)的轉(zhuǎn)換
3、有限自動(dòng)機(jī)的確定化與最小化
三、實(shí)驗(yàn)環(huán)境
1、Windows操作系統(tǒng)
2、C/C++/Java語言
四、實(shí)驗(yàn)要求
1、做好實(shí)驗(yàn)預(yù)習(xí),掌握并熟悉本實(shí)驗(yàn)中所使用的編程、測(cè)試環(huán)境及相應(yīng)的軟件
2、寫出實(shí)驗(yàn)報(bào)告
語法分析
編譯器的構(gòu)造和設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?br/>設(shè)計(jì)、編制并調(diào)試一個(gè)詞法分析程序,加深對(duì)詞法分析原理的理解。
二、基本知識(shí)
1、正則表達(dá)式
2、正則表達(dá)式到有限自動(dòng)機(jī)的轉(zhuǎn)換
3、有限自動(dòng)機(jī)的確定化與最小化
三、實(shí)驗(yàn)環(huán)境
1、Windows操作系統(tǒng)
2、C/C++/Java語言
四、實(shí)驗(yàn)要求
1、做好實(shí)驗(yàn)預(yù)習(xí),掌握并熟悉本實(shí)驗(yàn)中所使用的編程、測(cè)試環(huán)境及相應(yīng)的軟件
2、寫出實(shí)驗(yàn)報(bào)告

代碼片段和文件信息
#define?_CRT_SECURE_NO_WARNINGS
#include?“stdio.h“
#include?“stdlib.h“
#include?“string.h“
#include?“iostream“
using?namespace?std;
//詞法分析程序
//首先定義種別碼
/*
第一類:標(biāo)識(shí)符???letter(letter?|?digit)*??無窮集
第二類:常數(shù)????(digit)+??無窮集
第三類:保留字(32)
auto???????break????case?????char????????const??????continue
default????do???????double???else????????enum???????extern
float??????for??????goto?????if??????????int????????long
register???return???short????signed??????sizeof?????static
struct?????switch???typedef??union???????unsigned???void
volatile????while
第四類:界符??‘/*’、‘//’、?()?{?}?[?]?“?“??‘
第五類:運(yùn)算符?<、<=、>、>=、=、+、-、*、/、^、
對(duì)所有可數(shù)符號(hào)進(jìn)行編碼:
<$0>
...
<+,33>
<-34>
<*35>
36>
<<37>
<<=38>
<>39>
<>=40>
<=41>
<==42>
<;44>
<(45>
<)46>
<^47>
<48>
<“49>
<‘50>
<#51>
<&52>
<&&53>
<|54>
<||55>
<%56>
<~57>
<<<58>左移
<>>59>右移
<[60>
<]61>
<{62>
<}63>
<\64>
<.65>
66>
<:67>
“[““]““{““}“
<常數(shù)99??數(shù)值>
<標(biāo)識(shí)符100?,標(biāo)識(shí)符指針>
*/
/****************************************************************************************/
//全局變量,保留字表
static?char?reserveWord[32][20]?=?{
“auto“?“break“?“case“?“char“?“const“?“continue“
“default“?“do“?“double“?“else“?“enum“?“extern“
“float“?“for“?“goto“?“if“?“int“?“l(fā)ong“
“register“?“return“?“short“?“signed“?“sizeof“?“static“
“struct“?“switch“?“typedef“?“union“?“unsigned“?“void“
“volatile“?“while“
};
//界符運(yùn)算符表根據(jù)需要可以自行增加
static?char?operatorOrDelimiter[36][10]?=?{
“+“?“-“?“*“?“/“?“<“?“<=“?“>“?“>=“?“=“?“==“
“!=“?“;“?“(“?“)“?“^“?““?“\““?“\‘“?“#“?“&“
“&&“?“|“?“||“?“%“?“~“?“<<“?“>>“?“[“?“]“?“{“
“}“?“\\“?“.“?“\?“?“:“?“!“
};
static??char?IDentifierTbl[1000][50]?=?{?““?};//標(biāo)識(shí)符表
/****************************************************************************************/
/********查找保留字*****************/
int?searchReserve(char?reserveWord[][20]?char?s[])
{
for?(int?i?=?0;?i?32;?i++)
{
if?(strcmp(reserveWord[i]?s)?==?0)
{//若成功查找,則返回種別碼
return?i?+?1;//返回種別碼
}
}
return?-1;//否則返回-1,代表查找不成功,即為標(biāo)識(shí)符
}
/********查找保留字*****************/
/*********************判斷是否為字母********************/
bool?IsLetter(char?letter)
{//注意C語言允許下劃線也為標(biāo)識(shí)符的一部分可以放在首部或其他地方
if?(letter?>=?‘a(chǎn)‘&&letter?<=?‘z‘?||?letter?>=?‘A‘&&letter?<=?‘Z‘?||?letter?==?‘_‘)
{
return?true;
}
else
{
return?false;
}
}
/*********************判斷是否為字母********************/
/*****************判斷是否為數(shù)字************************/
bool?IsDigit(char?digit)
{
if?(digit?>=?‘0‘&&digit?<=?‘9‘)
{
return?true;
}
else
{
return?false;
}
}
/*****************判斷是否為數(shù)字************************/
/********************編譯預(yù)處理,取出無用的字符和注釋**********************/
void?filterResource(char?r[]?int?pProject)
{
char?tempString[10000];
int?count?=?0;
for?(int?i?=?0;?i?<=?pProject;?i++)
{
if?(r[i]?==?‘/‘&&r[i?+?1]?==?‘/‘)
{//若為單行注釋“//”則去除注釋后面的東
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-06-07?11:04??實(shí)驗(yàn)1-詞法分析器-1606100068陳家樂\
?????文件?????????162??2019-06-07?11:04??實(shí)驗(yàn)1-詞法分析器-1606100068陳家樂\~$1-詞法分析器-1606100068陳家樂.doc
?????文件??????298496??2019-05-19?06:28??實(shí)驗(yàn)1-詞法分析器-1606100068陳家樂\實(shí)驗(yàn)1-詞法分析器-1606100068陳家樂.doc
?????文件????????9731??2019-05-06?04:20??實(shí)驗(yàn)1-詞法分析器-1606100068陳家樂\源.cpp
?????目錄???????????0??2019-06-17?21:42??實(shí)驗(yàn)2-語法分析器-1606100068陳家樂\
?????文件??????134144??2019-06-07?19:45??實(shí)驗(yàn)2-語法分析器-1606100068陳家樂\實(shí)驗(yàn)2-語法分析器-1606100068陳家樂.doc
?????文件????????9969??2019-06-07?19:43??實(shí)驗(yàn)2-語法分析器-1606100068陳家樂\源.cpp
?????目錄???????????0??2019-06-22?20:52??實(shí)驗(yàn)3-編譯器的構(gòu)造和設(shè)計(jì)-1606100068陳家樂\
?????文件?????6175093??2013-04-18?13:14??實(shí)驗(yàn)3-編譯器的構(gòu)造和設(shè)計(jì)-1606100068陳家樂\model.txt
?????文件????????1948??2019-06-17?19:35??實(shí)驗(yàn)3-編譯器的構(gòu)造和設(shè)計(jì)-1606100068陳家樂\SpellingCorrection.cpp
?????文件?????????223??2013-04-18?12:19??實(shí)驗(yàn)3-編譯器的構(gòu)造和設(shè)計(jì)-1606100068陳家樂\stdafx.cpp
?????文件???????99784??2019-06-22?20:52??實(shí)驗(yàn)3-編譯器的構(gòu)造和設(shè)計(jì)-1606100068陳家樂\實(shí)驗(yàn)3-編譯器的構(gòu)造和設(shè)計(jì)-1606100068陳家樂.doc
評(píng)論
共有 條評(píng)論