📄 table.h
字号:
#ifndef TABLE_H
#define TABLE_H
#include<string.h>
struct SignTab{
int ID; //名字入口地址
int LEN;
int TYPE;
char VAL[MAX/2];
int ADDR;
};
static SignTab Table[100]={0,}; //符号表,初始化0号单元
static char namesign[100][MAX/2]={0,};//初始化0号单元
static int k=1;
static FILE*sign=fopen("sign.txt","w");
static FILE*nmsign=fopen("namesign.txt","w");
static int SearchTab(char str[])//查填符号表
{
int ss;
for(int i=1;i<=100;i++)
{
ss=strcmp(namesign[Table[i].ID],str);//上面已经初始化了0号单元为0
if(!ss)
{
return(i);
}
ss=strcmp(Table[i].VAL,str);
if(!ss)
{
return(i);
}
}
return 0;
}
int AddTab(int kind,char str[])
{
int temp,temp1; // ______
temp1=SearchTab(str); // |标识符| _____________________________________________
if(temp1) // |名表__|| 名字 |类型 |值 |地址 |
{ // /\ |_______________________| | | |
temp=temp1; // | |ID(名字表入口) |名字长 | | | |
} // |_____|_______________|_______|_______|_____|_______|
if(!temp1) // | 1 | 6 | 36 bsf| - | |
{ // |_______________|_______|_______|_____|_______|
if(kind==36) // | 2 | 0 | 38bool| abc | |
{ // |_______________|_______|_______|_____|_______|
Table[k].ID=k; // | 3 | 0 | 37 int| 37 | |
Table[k].LEN=strlen(str); //|_______________|_______|_______|_____|_______|
Table[k].TYPE=kind;
}
else
{
Table[k].ID=k;
Table[k].LEN=0;
Table[k].TYPE=kind;
}
if(kind==37||kind==38)
{
strcpy(Table[k].VAL,str);
}
else
{
strcpy(Table[k].VAL,"-");
strcpy(namesign[Table[k].ID],str);
}
//写标识符名字表
fwrite(namesign[Table[k].ID],strlen(namesign[Table[k].ID]),1,nmsign);
//写符号表项(包括标识符,整数和字符常数)
fwrite((char*)&Table[k],sizeof(SignTab),1,sign);
temp=k;
k++;
}
return(temp);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -