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

資源簡介

符號(hào)表設(shè)計(jì)與實(shí)現(xiàn) 編譯原理 湖南大學(xué)

資源截圖

代碼片段和文件信息

#include?
#include?
#include?

using?namespace?std;

const?int?MaxSize=1000000;
const?int?MaxP=999983;
const?int?SHIFT=2;
const?string?Td[8]={“常量““變量““數(shù)組““結(jié)構(gòu)體““文件““標(biāo)號(hào)““指針““函數(shù)“};
const?string?Ad[6]={“整型““實(shí)型““字符型““布爾型““枚舉型““void“};

class?Tag?{
public:
Tag(){}
Tag(string?name){
?????Name?=?name;
?????cout<<“\n請輸入標(biāo)識(shí)符的種類:“<?????cout<<“1.常量\t2.變量\t3.數(shù)組\t4.結(jié)構(gòu)體\n5.文件\t6.標(biāo)號(hào)\t7.指針\t8.函數(shù)“<?????cin>>Type;
?????cout<<“\n請輸入標(biāo)識(shí)符的屬性:“<?????cout<<“1.整型\t2.實(shí)型\t3.字符型\t4.布爾型\n5.枚舉型\t6.void“<?????cin>>Attr;
?????cout<<“\n請輸入標(biāo)識(shí)符的地址:“;
?????cin>>Addr;
?????if?(?Type==3?)
?????{
??????????cout<<“\n請輸入數(shù)組的維數(shù):“;
??????????cin>>Dim;
??????????Numd?=?new?int[Dim];
??????????cout<<“請依次輸入個(gè)維元素個(gè)數(shù):“;
??????????for?(?int?i=0;i>Numd[i];
?????}
?????else?{
??????????Numd?=?new(int);
??????????Dim?=?Numd[0]?=?1;
?????}
?????cout<????}
Tag(string?nameint?typeint?attrvoid*?addrint?dim=1int*?numd=NULL)
{
Name?=?name;
Type?=?type;
Attr?=?attr;
Addr?=?addr;
Dim?=?dim;
Numd?=?new?int[Dim];
if?(?Dim>1?)
????????????for?(?int?i=0;i????????else??Numd[0]?=?1;
}
string?Name; //標(biāo)識(shí)符的名字
int?TypeAttrScopDim; //標(biāo)識(shí)符的類型,屬性,作用域,維數(shù)
//?作用域如何記錄?
void*?Addr; //標(biāo)識(shí)符的地址
int*?Numd; //各維元素個(gè)數(shù)
};

Tag*?TagHash[MaxSize];

unsigned?int?APHash(string?s)
{
????unsigned?int?ret=0;
????for?(?int?i=0;i????{
????????if?(?i&1?)??ret?^=?(~((ret<<11)^s[i]^(ret>>5)));
????????else??ret?^=?((ret<<7)^s[i]^(ret>>3));
????}
????return?ret%MaxP;
}

void?InsertTag(Tag*?T)
{
int?p=APHash(T->Name);
while?(?TagHash[p]!=NULL?)??p?=?(p+1)%MaxSize;
TagHash[p]?=?T;
}

int?SearchTag(string?Name)
{
int?p=APHash(Name);
while?(?TagHash[p]!=NULL?&&?(TagHash[p]->Name)!=Name?)??p?=?(p+1)%MaxSize;
if?(?TagHash[p]==NULL?)??return?-1;
else??return?p;
}

void?DeleteTag(string?Name)
{
int?p=SearchTag(Name);
if?(?p!=-1?)
{
delete?TagHash[p];
TagHash[p]?=?NULL;
cout<<“刪除成功“< }
else??cout<<“標(biāo)識(shí)符未找到“<}

void?PrintTag()
{
????cout<<“\n打印表:“< cout<<“名字\t種類\t屬性\t地址“< for?(?int?i=0;i ?if?(?TagHash[i]!=NULL?)
?{
?cout<Name<<“\t“<Type-1]<<“\t“
?<Attr-1]<<“\t“<Addr< ?}
cout<}

bool?ShowSelTab()
{
cout<<“請選擇符號(hào)表操作:“< cout<<“1.插入標(biāo)識(shí)符\t2.查找標(biāo)識(shí)符\t3.刪除標(biāo)識(shí)符“< cout<<“4.打印全部標(biāo)識(shí)符信息\t0.退出“< int?opt;
cin>>opt;
if?(?opt==0?)??return?false;
if?(?opt==4?)
{
?????????PrintTag();return?true;
????}
cout<<“\n請輸入標(biāo)識(shí)符的名字:“;
string?Name;
cin>>Name;
int?p;
Tag*?T;
switch?(opt)
{
case?1:T=new?Tag(Name);InsertTag(T);break;
case?2:p=SearchTag(Name);
if?(?p!=-1?)
{
cout<<“名字\t種類\t屬性\t地址“< cout<Name<<“\t“<Type-1]<<“\t“
<Attr-1]<<“\t“<

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-05-12?22:38??符號(hào)表設(shè)計(jì)與實(shí)現(xiàn)\
?????文件????????3910??2012-04-09?20:56??符號(hào)表設(shè)計(jì)與實(shí)現(xiàn)\main.cpp
?????文件????????1892??2012-03-31?19:31??符號(hào)表設(shè)計(jì)與實(shí)現(xiàn)\OptTag.h
?????文件????????1446??2012-04-09?12:23??符號(hào)表設(shè)計(jì)與實(shí)現(xiàn)\Tag.h
?????文件???????50688??2012-05-21?14:09??編譯原理實(shí)驗(yàn)指導(dǎo)書.doc

評(píng)論

共有 條評(píng)論

相關(guān)資源