91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

自己實現的編譯原理的詞法分析器,是自己的實驗作業,用Vs2017實現,可以直接運行,代碼注釋豐富,希望與大家交流學習!歡迎大家下載!

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
using?namespace?std;
#define?NR?32//保留字數量
#define NU?20//單目運算符界符數量
#define?NB?18//雙目運算符界符數量

//保留字
static?char?ReverseW[NR][15]?=?{
“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“
};
//單目界符與運算符
static?char?UnaryOperatorADelimiter[NU][10]?=?{
?“*“?“/“??
?“;“?“(“?“)“?“^“?““?“\““?“\‘“?“#“?“%“?“~““[“?“]“?“{“
“}“?“\\“?“.“?“\?“?“:“
};
//雙目界符與運算符
static?char?BinaryOperatorADelimiter[NB][10]?=?{
??“!““&““|““<“?“>“?“=““!=““<=“?“>=“?“==“?“&&“?“||“?“<<“?“>>““+“?“-““++““--“
};
//標識符表
static?char?IDTable[1000][50]?=?{?““?};
//整數表
static?char?NUMintTable[1000][50]?=?{?““?};
//浮點數表
static?char?NUMfloatTable[1000][50]?=?{?““?};
//16進制表
static?char?NUMhexTable[1000][50]?=?{?““?};
//8進制數表
static?char?NUMoctalTable[1000][50]?=?{?““?};


//保留字查找
int?FindReverse(char?ReserverW[][15]?char?s[])
{
for?(int?i?=?0;?i? {
//成功匹配,返回屬性值
if?(strcmp(ReserverW[i]?s)?==?0)
{
return?i?+?1;
}
}
//未成功匹配返回-1
return?-1;
}
//單目運算符界符查找
int?FindUOAD(char?UnaryOperatorADelimiter[][10]?char?s[])
{
for?(int?i?=?0;?i? {
//成功匹配,返回屬性值
if?(strcmp(UnaryOperatorADelimiter[i]?s)?==?0)
{
return?i?+?1;
}
}
//未成功匹配返回-1
return?-1;
}
//雙目運算符界符查找
int?FindBOAD(char?BinaryOperatorADelimiter[][10]?char?s[])
{
for?(int?i?=?0;?i? {
//成功匹配,返回屬性值
if?(strcmp(BinaryOperatorADelimiter[i]?s)?==?0)
{
return?i?+?1;
}
}
//未成功匹配返回-1
return?-1;
}

//判斷是否是字母和下劃線
bool?IsLetter_(char?l)
{
if?((l?>=?‘a‘&&l?<=?‘z‘)?||?(l?>=?‘A‘&&l?<=?‘Z‘)?||?l?==?‘_‘)
{
return?true;
}
return?false;
}

//判斷是否為數字
bool?IsDigit(char?d)
{
if?(d?>=?‘0‘&&d?<=?‘9‘)
return?true;
return?false;
}
//判斷是否為數字1-9
bool?IsDigit9(char?d)
{
if?(d?>=?‘1‘&&d?<=?‘9‘)
return?true;
return?false;
}
//判斷是否為數字0-9及A-F
bool?IsDigitX(char?d)
{
if?((d?>=?‘0‘&&d?<=?‘9‘)||(d>=‘A‘&&d<=‘F‘))
return?true;
return?false;
}
//刪除空格和注釋
void?Filter(char?r[]?int?Pcode)
{
char?temp[10000];
int?count?=?0;
for?(int?i?=?0;?i?<=?Pcode;?i++)
{
//刪除單行‘//’注釋
if?(r[i]?==?‘/‘&&r[i?+?1]?==?‘/‘)
{
while?(r[i]?!=?‘\n‘)
{
i++;
}//換行符在后面空白字符中統一處理
}
//刪除多行注釋
if?(r[i]?==?‘/‘&&r[i?+?1]?==?‘*‘)
{
i?=?i?+?2;//指針移到‘*’后面
while?(r[i]?!=?‘*‘&&r[i?+?1]?!=?‘/‘)
{
i++;
if?(r[i]?==?‘$‘)
{
printf(“程序出錯,多行注釋負號不匹配!“);
exit(0);
}
}
i?=?i?+?2;//指針移到‘*’后面
}
//除換行符、制表符、回車之外,全部加載
if?(r[i]?!=?‘\n‘&&r[i]?!=?‘\t‘&&r[i]?!=?‘\r‘)
{
temp[count++]?=?r[i];
}
}
temp[count]?=?‘\0‘;
strcpy(r?temp);//將過濾后的程序寫回源程序
}

void?Scan

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

????..A..H.?????36352??2019-01-05?13:29??Project2\.vs\Project2\v15\.suo

?????文件????5804032??2019-01-05?13:29??Project2\.vs\Project2\v15\Browse.VC.db

?????文件???39190528??2018-12-09?18:38??Project2\.vs\Project2\v15\ipch\AutoPCH\6118facd8172655f\LL.ipch

?????文件???30408704??2019-01-05?13:27??Project2\.vs\Project2\v15\ipch\AutoPCH\b897107968fe6c44\FEX.ipch

?????文件??????63488??2019-01-05?13:28??Project2\Debug\Project2.exe

?????文件?????439788??2019-01-05?13:28??Project2\Debug\Project2.ilk

?????文件?????643072??2019-01-05?13:28??Project2\Debug\Project2.pdb

?????文件??????87774??2019-01-05?13:28??Project2\Project2\Debug\fex.obj

?????文件????????326??2019-01-05?13:28??Project2\Project2\Debug\Project2.log

?????文件????????732??2019-01-05?13:28??Project2\Project2\Debug\Project2.tlog\CL.command.1.tlog

?????文件??????18792??2019-01-05?13:28??Project2\Project2\Debug\Project2.tlog\CL.read.1.tlog

?????文件????????496??2019-01-05?13:28??Project2\Project2\Debug\Project2.tlog\CL.write.1.tlog

?????文件???????1184??2019-01-05?13:28??Project2\Project2\Debug\Project2.tlog\link.command.1.tlog

?????文件???????3502??2019-01-05?13:28??Project2\Project2\Debug\Project2.tlog\link.read.1.tlog

?????文件????????476??2019-01-05?13:28??Project2\Project2\Debug\Project2.tlog\link.write.1.tlog

?????文件????????217??2019-01-05?13:28??Project2\Project2\Debug\Project2.tlog\Project2.lastbuildstate

?????文件?????158720??2019-01-05?13:28??Project2\Project2\Debug\vc141.idb

?????文件?????364544??2019-01-05?13:28??Project2\Project2\Debug\vc141.pdb

?????文件??????18726??2019-01-05?13:28??Project2\Project2\fex.cpp

?????文件?????????37??2019-01-05?13:28??Project2\Project2\floatlist.txt

?????文件?????????23??2019-01-05?13:28??Project2\Project2\hexlist.txt

?????文件?????????54??2019-01-05?13:28??Project2\Project2\idlist.txt

?????文件?????????19??2019-01-05?13:28??Project2\Project2\octallist.txt

?????文件????????978??2019-01-05?13:28??Project2\Project2\output.txt

?????文件???????6125??2018-12-09?19:27??Project2\Project2\Project2.vcxproj

?????文件????????948??2018-12-09?19:27??Project2\Project2\Project2.vcxproj.filters

?????文件????????165??2018-11-14?10:08??Project2\Project2\Project2.vcxproj.user

?????文件????????358??2018-12-10?15:04??Project2\Project2\resource.txt

?????文件?????????30??2019-01-05?13:28??Project2\Project2\uintlist.txt

?????文件???????1438??2018-11-14?10:08??Project2\Project2.sln

............此處省略15個文件信息

評論

共有 條評論