📄 语法分析.cpp
字号:
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少变量标识符。\n",count++,p->hang);
}
}
else if(p!=NULL&&p->zhi==38)
{
//正确
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ) 符号。\n",count++,p->hang);
}
}
void dan()
{
if(p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==44)
{
//正确
}
else if(p!=NULL&&p->zhi==43)
{
p=p->next;
dan();
}
else if(p!=NULL&&p->zhi==71)
{
p=p->next;
if(p!=NULL&&(p->zhi==76||p->zhi==77))
{
p=p->next;
if(p!=NULL&&p->zhi==44)
{
//正确
}
else if(p!=NULL&&p->zhi==43)
{
p=p->next;
dan();
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行变量没有赋值。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else if(p->zhi==55)
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==44)
{
//正确
}
else if(p!=NULL&&p->zhi==43)
{
p=p->next;
dan();
}
else if(p!=NULL&&p->zhi==71)
{
p=p->next;
if(p!=NULL&&(p->zhi==76||p->zhi==77))
{
p=p->next;
if(p!=NULL&&p->zhi==44)
{
//正确
}
else if(p!=NULL&&p->zhi==43)
{
p=p->next;
dan();
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行变量没有赋值。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 变量名。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少合法标识符。\n",count++,p->hang);
}
}
void dy()
{
while(p!=NULL)
{
if(p->zhi==8||p->zhi==13||p->zhi==17||p->zhi==21||p->zhi==22||p->zhi==25)//char
{
p=p->next;
if(p!=NULL)dan();
else
{
fprintf(out,"Error %d : 第 %d 行缺少变量。\n",count++,p->hang);
}
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else if(p->zhi==26||p->zhi==33)//unsigned
{
p=p->next;
if(p!=NULL&&(p->zhi==8||p->zhi==13||p->zhi==17||p->zhi==21||p->zhi==22||p->zhi==25))//char
{
p=p->next;
if(p!=NULL)dan();
else
{
fprintf(out,"Error %d : 第 %d 行缺少变量。\n",count++,p->hang);
}
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else if(p!=NULL)
{
dan();
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少合法标识符。\n",count++,p->hang);
}
}
else if(p->zhi==29)//struct
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==41)
{
p=p->next;
dy();
if(p!=NULL&&p->zhi==42)
{
p=p->next;
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 } 符号。\n",count++,p->hang);
}
}
else if(p!=NULL&&(p->zhi==76||p->zhi==55))//*
{
dan();
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 { 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少结构体名称。\n",count++,p->hang);
}
}
else
{
break;
}
}
}
void start()
{
while(p!=NULL)
{
if(p->zhi==0)
{
p=p->next;
if(p!=NULL&&p->zhi==61)
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==48)
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==60)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 > 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少文件后缀名。\n",count++,p->hang);
}
}
else if(p!=NULL&&p->zhi==60)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 > 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少文件名。\n",count++,p->hang);
}
}
else if(p!=NULL&&p->zhi==45)
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==48)
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==45)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 \" 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少文件后缀名。\n",count++,p->hang);
}
}
else if(p!=NULL&&p->zhi==45)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 \" 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少文件名。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 \" 或者 < 符号。\n",count++,p->hang);
}
}
else if(p->zhi==1)
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少赋值。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少标识符。\n",count++,p->hang);
}
}
else if(p->zhi==8||p->zhi==13||p->zhi==17||p->zhi==21||p->zhi==22||p->zhi==25)//char
{
p=p->next;
if(p!=NULL&&(p->zhi==55||p->zhi==76))dan();
else
{
fprintf(out,"Error %d : 第 %d 行缺少变量。\n",count++,p->hang);
}
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else if(p->zhi==26||p->zhi==33)//unsigned
{
p=p->next;
if(p!=NULL&&(p->zhi==8||p->zhi==13||p->zhi==17||p->zhi==21||p->zhi==22||p->zhi==25))//char
{
p=p->next;
if(p!=NULL&&(p->zhi==55||p->zhi==76))dan();
else
{
fprintf(out,"Error %d : 第 %d 行缺少变量。\n",count++,p->hang);
}
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else if(p!=NULL&&(p->zhi==55||p->zhi==76))
{
dan();
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少合法标识符。\n",count++,p->hang);
}
}
else if(p->zhi==34)//void*******************************************************
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==37)
{
p=p->next;
can();
if(p!=NULL&&p->zhi==38)
{
p=p->next;
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else if(p!=NULL&&p->zhi==41)
{
p=p->next;
dy();
yu();
if(p!=NULL&&p->zhi==42)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 } 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ) 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ( 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少合法标识符。\n",count++,p->hang);
}
}
else if(p->zhi==29)//struct
{
p=p->next;
if(p!=NULL&&p->zhi==76)
{
p=p->next;
if(p!=NULL&&p->zhi==41)
{
p=p->next;
dy();
if(p!=NULL&&p->zhi==42)
{
p=p->next;
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 } 符号。\n",count++,p->hang);
}
}
else if(p!=NULL&&(p->zhi==76||p->zhi==55))//*
{
dan();
if(p!=NULL&&p->zhi==44)
{
//正确
p=p->next;
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 ; 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少 { 符号。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少结构体名称。\n",count++,p->hang);
}
}
else
{
fprintf(out,"Error %d : 第 %d 行缺少关键字。\n",count++,p->hang);
p=p->next;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -