資源簡介
大連理工大學 軟件學院 編譯技術 上機代碼
六次上機全
代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
char?Input[100];
char?token[20];//連續的詞法單元
int?mark=-1;??????????????????????????????????????????????????????//詞法記號
char?*Keytoken[6]?=?{?“for““if““then““else““while““do“?};//關鍵字數組,用于判斷
char?ch;
int?p?=?0?n?sum;
int?m;//m為token下標
void?Scanner()
{
sum?=?0;
for?(m?=?0;?m<20;?m++)
token[m++]?=?NULL;
m?=?0;
ch?=?Input[p++];
while?((ch?==?‘?‘)?||?(ch?==?‘\n‘))//跳過空格和換行
{
ch?=?Input[p++];
}
if?(((ch?<=?‘z‘)?&&?(ch?>=?‘a‘))?||?((ch?<=?‘Z‘)?&&?(ch?>=?‘A‘)))
{
while?(((ch?<=?‘z‘)?&&?(ch?>=?‘a‘))?||?((ch?>=?‘A‘)?&&?(ch?<=?‘Z‘))?||?((ch?>=?‘0‘)?&&?(ch?<=?‘9‘)))
{
if?(ch?==?‘?‘)
break;
token[m++]?=?ch;//將連續讀入的字母存到token中
ch?=?Input[p++];
}
p--;
mark?=?10;
for?(n?=?0;?n<6;?n++)
{
if?(strcmp(token?Keytoken[n])?==?0)//判斷token存的字符串是否是關鍵字
{
mark?=?n?+?1;
break;
}
}
}
else?if?((ch?>=?‘0‘)?&&?(ch?<=?‘9‘))
{
while?((ch?>=?‘0‘)?&&?(ch?<=?‘9‘))//判斷是否是數字
{
sum?=?sum?*?10?+?ch?-?‘0‘;
ch?=?Input[p++];
}
p--;
mark?=?11;
}
else?switch?(ch)//其他字符用switch判斷之
{
case?‘<‘:
token[m++]?=?ch;
ch?=?Input[p++];
if?(ch?==?‘=‘)
{
mark?=?22;
token[m++]?=?ch;
}
else?if?(ch?==?‘>‘)
{
mark?=?21;
token[m++]?=?ch;
}
else
{
mark?=?20;
p--;
}
break;
case?‘>‘:
token[m++]?=?ch;
ch?=?Input[p++];
if?(ch?==?‘=‘)
{
mark?=?24;
token[m++]?=?ch;
}
else
{
mark?=?23;
p--;
}
break;
case?‘+‘:
token[m++]?=?ch;
ch?=?Input[p++];
if?(ch?==?‘+‘)
{
mark?=?17;
token[m++]?=?ch;
}
else
{
mark?=?13;
p--;
}
break;
case?‘-‘:
token[m++]?=?ch;
ch?=?Input[p++];
if?(ch?==?‘-‘)
{
mark?=?29;
token[m++]?=?ch;
}
else
{
mark?=?14;
p--;
}
break;
case?‘=‘:
mark?=?25;
token[m++]?=?ch;
break;
case?‘*‘:
mark?=?15;
token[m++]?=?ch;
break;
case?‘/‘:
mark?=?16;
token[m++]?=?ch;
break;
case?‘(‘:
mark?=?27;
token[m++]?=?ch;
break;
case?‘)‘:
mark?=?28;
token[m++]?=?ch;
break;
case?‘;‘:
mark?=?26;
token[m++]?=?ch;
break;
case?‘\“‘:
mark?=?30;
token[m++]?=?ch;
case‘:‘:
token[m++]?=?ch;
ch?=?Input[p++];
if?(ch?==?‘=‘)
{
mark?=?18;
token[m++]?=?ch;
}
else
{
mark?=?17;
p--;
}
break;
case?‘#‘:
mark?=?0;
token[m++]?=?ch;
break;
case?‘\0‘:
mark?=?-2;
break;
default:
mark?=?-1;
break;
}
token[m++]?=?‘\0‘;
}
int?main()
{
int?i?=?0;
cout?<“輸入代碼以‘#‘結束:“?< while?((cin>>noskipws>>ch)&&ch?!=?‘#‘)//輸入代碼
{
Input[i++]?=?ch;
}
while?(mark?!=?0)
{
Scanner();//掃描代碼
switch?(mark)
{
case?11:
cout?<“(“?< break;
case?-1:
cout?<“InputError“?< exit(0);
case?-2:
ex
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-04-20?15:23??第一次上機\
?????文件????????3219??2017-04-06?20:01??第一次上機\test.cpp
?????文件???????67953??2017-04-06?20:01??第一次上機\test.exe
?????文件??????358782??2017-03-26?14:51??第一次上機\第一次上機作業-lex實驗.zip
?????目錄???????????0??2017-04-20?18:28??第一次上機\第一次上機作業-lex實驗\
?????目錄???????????0??2004-08-30?17:21??第一次上機\第一次上機作業-lex實驗\lex_實驗\
?????文件????????1374??2015-04-01?18:47??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex?說明.txt
?????目錄???????????0??2017-04-06?20:46??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\
?????文件?????????190??2004-08-30?16:08??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\example.l
?????文件?????????207??2004-08-30?15:31??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\example.l.bak
?????文件??????167936??1998-04-07?21:12??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\flex.exe
?????文件????????8628??2004-08-30?16:45??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\flex.GID
?????文件???????79089??1998-01-04?13:01??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\flex.hlp
?????文件???????36490??2017-04-06?20:46??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\lex.yy.c
?????文件????????1108??1998-04-07?21:12??第一次上機\第一次上機作業-lex實驗\lex_實驗\flex\libfl.lib
?????目錄???????????0??2017-04-20?15:51??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\
?????目錄???????????0??2017-04-20?15:51??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\.vs\
?????目錄???????????0??2017-04-20?15:51??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\.vs\lex.yy\
?????目錄???????????0??2017-04-20?15:51??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\.vs\lex.yy\v14\
?????文件???????20480??2017-04-20?15:51??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\.vs\lex.yy\v14\.suo
?????目錄???????????0??2017-04-20?15:50??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Backup\
?????目錄???????????0??2017-04-20?15:50??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\
?????文件??????????51??2004-08-28?11:50??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\12.txt
?????文件??????163897??2004-08-30?16:09??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\lex.yy.exe
?????文件??????175892??2004-08-30?16:09??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\lex.yy.ilk
?????文件???????25472??2004-08-30?16:09??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\lex.yy.obj
?????目錄???????????0??2017-04-20?15:51??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\lex.yy.tlog\
?????文件???????33792??2004-08-30?16:09??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\vc60.idb
?????文件???????53248??2004-08-30?16:09??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\Debug\vc60.pdb
?????文件???????36489??2004-08-30?16:09??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\lex.yy.c
?????文件????????3437??2004-08-28?11:51??第一次上機\第一次上機作業-lex實驗\lex_實驗\lex_yy\lex.yy.dsp
............此處省略184個文件信息
評論
共有 條評論