📄 claretype.c
字号:
#include "world.h"
void const_declare();
void const_def();
void const_def()
{
char temps[BSIZE],tempval[BSIZE];
if(seehead==ID) //ID为标示符
{
strcpy(temps,buffer); // 缓冲区,接收一个词
tokenget(0);
if(seehead==EQ)
{
tokenget(0);
}
else
{
/*
if(Char[a].type==12)
if(generate(1,Char[a].type-2,Char[a].uchar.baschar))
return 1;
sym=gsm();
*/
existerror("probably missing a '='when defining",lineno);
if(seehead!=NUM)
return ;
}
strcpy(tempval,buffer); //临时value
if(seehead==NUM)
{
tokenget(0);
}
else
{
existerror("const define existerror",lineno);
tokenget(0);
}
if(lookforward(temps,funNum) == -1) //之前是否有重定义
{
writetable(temps,CON,atoi(tempval),funNum);
nodeadd(nodegenerate("ConstDefine",temps,tempval,""));
// while(1);
}
else
{
existerror("repeatly defined!",lineno);
}
}
else
{
existerror("const define existerror!",lineno);
}
}
void const_declare()
{
if(seehead == CONST)
{
tokenget(0);
const_def();
while(seehead==douhao)
{
tokenget(0);
const_def();
}
/*if(j==ML)
{
printf("warning!字符串过长\n");
bbsstring[--j]='\0';
putc(ch1,FOUT);
ch1=fgetc(FIN);
while(ch1!='"')
{
putc(ch1,FOUT);
j++;
if(ch1==EOF||j>100)
{
erline[ernum]=linenumber;
error[ernum++]=5;
return -1;
}
}
*/
if(seehead == fenghao)
{
tokenget(0);
}
else
{
existerror("probably missing ';'",lineno);
tokenget(0);
}
}
else
{
;
}
}
void parameter() //参数表
{
int i=0;
char temp[BSIZE];
while(seehead==INT)
{
tokenget(0);
strcpy(temp,buffer);
//i++;
if(seehead==ID)
{
tokenget(0);
}
else
{
existerror("funcRegist parameter define existerror",lineno);
tokenget(0);
}
strcpy(funTable[funNum].paraname[i++],temp); //函数记录
writetable(temp,INT,0,funNum);
if(seehead==RK)
{
break ;
}
else
{
if(seehead==douhao)
{
tokenget(0);
}
else
{
existerror("funcRegist define existerror!",lineno);
tokenget(0);
}
}
}
funTable[funNum].paranum = i;
if(seehead==RK)
{
return ;
}
else
{
existerror("funcRegist parameter existerror!",lineno);
while(seehead!=RK)
{
tokenget(0);
}
}
}
/*
int asss(int a)
{
sym=gsm();
if(expn())
return 1;
if(typeofexp1!=Char[a].type)
{
erline[ernum]=linenumber;
error[ernum++]=28;
return 1;
}
if(generate(22,Char[a].lev,Char[a].adr))
return 1;
if(sym!=38)
{
erline[ernum]=linenumber;
error[ernum++]=22;
return 1;
}
sym=gsm();
return 0;
}
*/
void val_declear()
{
char temp[BSIZE];
if(seehead==INT)
{
tokenget(0);
strcpy(temp,buffer);
if(seehead==ID)
{
tokenget(0);
}
else
{
existerror("varibale define existerror!",lineno);
tokenget(0);
}
if(lookforward(temp,funNum)==-1)
{
writetable(temp,VAR,0,funNum);
nodeadd(nodegenerate("VarDefine",temp,"",""));
}
else
{
existerror("variable define existerror",lineno);
}
while(seehead==douhao)
{
tokenget(0);
strcpy(temp,buffer);
if(seehead==ID)
{
tokenget(0);
}
else
{
existerror("varialbe declaration existerror",lineno);
tokenget(0);
}
if(lookforward(temp,funNum)==-1)
{
writetable(temp,VAR,0,funNum);
nodeadd(nodegenerate("VarDefine",temp,"",""));
}
else
{
existerror("variably define repeatly ",lineno);
tokenget(0);
}
//printf("变量 %s\n",temp);
}
if(seehead==fenghao)
{
tokenget(0);
}
else
{
existerror("probably missing a ';'",lineno);
}
}
else
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -