-
大小: 319KB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 2021-07-20
- 語(yǔ)言: 其他
- 標(biāo)簽: 編譯原理??課程設(shè)計(jì)??張芃??
資源簡(jiǎn)介
編譯原理 課程設(shè)計(jì) 小子集程序 南工大計(jì)軟
代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define?NULL?0
struct?Stack??//??棧結(jié)構(gòu)體:?序號(hào)、內(nèi)容、連接下一結(jié)點(diǎn)指針
{
int?num;
char?name;
struct?Stack?*next;
};
struct?Guiyue//?規(guī)則集結(jié)構(gòu)體:序號(hào)、規(guī)則長(zhǎng)度、符號(hào)、連接下一結(jié)點(diǎn)指針
{
int?num;
int?count;
char?name;
struct?Guiyue?*next;
};
struct?Relation?//?分析表結(jié)構(gòu)體:狀態(tài)序號(hào)、對(duì)應(yīng)符號(hào)列、操作類型的對(duì)應(yīng)序號(hào)、操作類型、連接下一結(jié)點(diǎn)指針
{??
int?line_States?;
char?rank_Letter;
int?relationship;
char?name;
struct?Relation?*next;
};
??
struct?Sign?//?符號(hào)表結(jié)構(gòu)體:?自變量名、標(biāo)識(shí)類型、連接下一結(jié)點(diǎn)指針
{
char?name[20];
char?kind;
struct?Sign?*next;
};
???
struct?Word?//?單詞表結(jié)構(gòu)體:?單詞名字、標(biāo)識(shí)類型、狀態(tài)、序號(hào)、行號(hào)、連接符號(hào)表指針、連接下一結(jié)點(diǎn)指針
{
char?name[20];
char?mark_name;
int?state;
int?num;
int?line;
struct?Sign?*link;
struct?Word?*next;
};
FILE?*fp1;//文件指針
int?row=1line[10000]Lin[300]w_num;//字符行變量、字符行、單詞所在行、字符數(shù)
char?buffer[10000];//字符串緩沖區(qū)
Stack?*MarkPush(Stack?*ipchar?markint?I_i)//壓棧
{
Stack?*s;
s=(Stack?*)malloc(sizeof(Stack));
s->name=mark;
s->num=I_i;
s->next=ip;
ip=s;
return?ip;
}
void?MarkPop(Stack?*ip)//出棧
{
Stack?*q;
char?name;
name=ip->name;
q=ip->next;
if(ip->next!=NULL)
{
ip->name=ip->next->name;
ip->num=ip->next->num;
ip->next=ip->next->next;
free(q);
}
}
int?judge(char?ch)//?接收ch判斷字符,變量flag返回字符類別
{
int?flag;
if(ch==‘!‘||ch==‘$‘||ch==‘&‘||ch==‘*‘||ch==‘(‘||ch==‘)‘||ch==‘-‘||ch==‘_‘||
???ch==‘+‘||ch==‘=‘||ch==‘|‘||ch==‘{‘||ch==‘}‘||ch==‘[‘||ch==‘]‘||ch==‘;‘||
???ch==‘:‘||ch==‘“‘||ch==‘<‘||ch==‘‘||ch==‘>‘||ch==‘.‘||ch==‘/‘||ch==‘\‘‘)??
flag=1;
else?if(‘0‘<=ch&&ch<=‘9‘)??????????????????????????
flag=2;
else?if((‘a(chǎn)‘<=ch&&ch<=‘z‘)||(‘A‘<=ch&&ch<=‘Z‘))????
flag=3;
else?if(ch==‘?‘)???????????????????????????????????
flag=4;
else?if(ch==‘\n‘)??????????????????????????????????
flag=5;
else?if(ch==‘?‘)???????????????????????????????????
flag=6;
else?if(feof(fp1))
????????flag=7;//結(jié)束
else???????????????????????????????????????????????
flag=0;??????//illegal?character
return(flag);
}
//======================================================================================================
//??詞法分析函數(shù):?void?scan()
//??????數(shù)據(jù)傳遞:?形參fp接收指向文本文件頭的文件指針;
//????????????????全局變量buffer與line對(duì)應(yīng)保存源文件字符及其行號(hào),char_num保存字符總數(shù)。
void?scan()
{
char?ch;
int?flagj=0i=-1;
while(!feof(fp1))
{
ch=fgetc(fp1);
flag=judge(ch);
printf(“%c“ch);//顯示打開(kāi)的文件
?? ????if(flag==1||flag==2||flag==3)????{i++;buffer[i]=ch;line[i]=row;}
??else?if(flag==4)?????????????????{i++;buffer[i]=‘?‘;line[i]=row;}
? ????else?if(flag==5)?????????????????{i++;buffer[i]=‘~‘;row++;}
else?if(flag==7)??continue;
???????else??cout<<“\n請(qǐng)注意,第“<
}?????????????????????????????????????????
w_num=i;
/*****************確定單詞所在的行*****************/
int?onetwok=0;
for(i=0;i one=judge(buffer[i]);
two=judge(buffer[i+1
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????58368??2009-01-08?14:31??C編譯器\Debug\vc60.idb
?????文件??????69632??2009-01-08?14:31??C編譯器\Debug\vc60.pdb
?????文件?????237636??2009-01-08?14:31??C編譯器\Debug\簡(jiǎn)單C編譯器.exe
?????文件?????283256??2009-01-08?14:31??C編譯器\Debug\簡(jiǎn)單C編譯器.ilk
?????文件??????63710??2009-01-08?14:31??C編譯器\Debug\簡(jiǎn)單C編譯器.obj
????I.A....????347176??2009-01-08?14:31??C編譯器\Debug\簡(jiǎn)單C編譯器.pch
?????文件?????484352??2009-01-08?14:31??C編譯器\Debug\簡(jiǎn)單C編譯器.pdb
?????文件????????143??2009-01-08?12:47??C編譯器\li.txt
?????文件????????159??2009-01-08?13:23??C編譯器\liyoubu.txt
?????文件????????664??2009-01-07?11:49??C編譯器\LR.txt
?????文件??????31320??2009-01-08?13:20??C編譯器\簡(jiǎn)單C編譯器.cpp
?????文件???????3463??2009-01-08?14:31??C編譯器\簡(jiǎn)單C編譯器.dsp
?????文件????????547??2009-01-08?14:32??C編譯器\簡(jiǎn)單C編譯器.dsw
?????文件??????41984??2009-01-08?14:32??C編譯器\簡(jiǎn)單C編譯器.ncb
?????文件??????48640??2009-01-08?14:32??C編譯器\簡(jiǎn)單C編譯器.opt
?????文件????????256??2009-01-08?14:31??C編譯器\簡(jiǎn)單C編譯器.plg
?????目錄??????????0??2009-01-08?14:31??C編譯器\Debug
?????目錄??????????0??2009-01-08?14:32??C編譯器
-----------?---------??----------?-----??----
??????????????1671306????????????????????18
評(píng)論
共有 條評(píng)論