📄 cifafenxi.h
字号:
char prog[80],token[8];
char ch ;
int syn , p =0, m = 0, n = 0,sum = 0 ; /* p是缓冲区prog的指针,m是token的指针,为全局变量*/
char *rwtab[6] = {"and","or","not","rop","i","end"}; /*关键字表*/
int letter(ch) /*判断是否为字母*/
{
if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))
return 1; /*是字母则返回1(真)*/
else
return 0; /*不是则返回0(假)*/
}
int num(ch) /*判断是否为数字字符*/
{
if(ch>='0' && ch<='9')
return 1;
else
return 0;
}
/*******词法扫描子程序:识别出一个具有独立意思的单词符号********/
void scaner()
{
for (n = 0 ; n < 8; n++) token[n] = NULL; /*token置空*/
m=0; /*m是token指针,置0*/
ch=prog[p++]; /*读取一个字符*/
while (ch==' ' || ch =='\n' || ch =='\t' ) /*忽涅空格和换行符*/
ch=prog[p++] ; /*读下一个字符*/
if (letter(ch)) /*如果ch是字母字符*/
{
token[m++] = ch; /*字母放入token中*/
ch = prog[p++]; /*读入下一个字符*/
while (letter(ch) || num(ch) ) /*ch 为字母字符或者数字字符*/
{
token[m++] = ch ; /* ch=>token */
ch = prog[p++]; /*读下个字符*/
}
token [m++]='\0'; /*token字符串结束*/
p-- ; /*回退一个字符*/
syn=10;
for (n = 0 ; n<6 ; n++) /*查找是否在关键字表中*/
{
if(strcmp(token,rwtab[n])==0)
{
syn = n +1 ; /*给出syn值*/
break;
}
}
}
else
if (num(ch)) /*ch 是数字字符*/
{
sum = 0 ;
do{
token[m++] = ch;
sum = sum * 10 + ch -'0'; /*转换为数字*/
ch = prog[p++];
}while(num(ch));
p-- ; /*回退一个字符*/
syn=7;
}
else
switch(ch)
{
case '<' :
m = 0; token[m++]= ch;
ch=prog[p++]; /*读入下个字符*/
if (ch == '>')
{
syn = 21;
token[m++] = ch;
}
else if(ch=='=')
{
syn=22;
token[m++] = ch;
}
else
{
syn = 20;
p-- ; /*回退一个字符*/
}
break;
case '>' :
m = 0; token[m++]= ch;
ch=prog[p++]; /*读入下个字符*/
if(ch=='=')
{
syn = 24 ; /*将>=的种别码 ==> syn*/
token[m++] = ch;
}
else
{
syn =23 ; /*将>的种别码=>syn*/
p-- ; /*回退一个字符*/
}
break;
case ':' :
m = 0; token[m++]= ch;
ch=prog[p++]; /*读入下个字符*/
if(ch=='=')
{
syn = 18 ; /*将:=的种别码=>syn*/
token[m++] = ch;
}
else
{
syn = 17 ; /*将:的种别码=>syn*/
p-- ; /*回退一个字符*/
}
break;
case '+': syn = 13; token[m++]= ch;break;
case '-': syn = 14; token[m++]= ch;break;
case '*': syn = 15; token[m++]= ch;break;
case '/': syn = 16; token[m++]= ch;break;
case '=': syn = 25; token[m++]= ch;break;
case ';': syn = 26; token[m++]= ch;break;
case '(': syn = 5; token[m++]= ch;break;
case ')': syn = 6; token[m++]= ch;break;
case '$': syn = 0; token[m++]= ch;break;
default : syn = -1; token[m++]= ch;
}
token[m] = '\0'; /*字符串结束*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -