📄 my_syn_g.h
字号:
/*-----------------------------------*\
--几种正确的询问形式-------
human(X).---ok
human(X,Y,Z).---ok
human(abc,X).---ok
human(X,abc,Y).---ok
human(_,X,abc,Y).---ok
human(abc9).---ok
human.---ok
human(address(a,X),Y).---ok
human(X,z,school(z,class(A,kko)),P).---ok
\*-----------------------------------*/
/*-----------------------------------*\
--几种错误的询问形式-------
human(X);---ok
human(X,Y,Z)09---ok
Phuman(abc,X).---ok
human(X,123,Y).---ok
human(9_,X,abc,Y).---ok
human(abc9)..---ok
human(abc9).ol---ok
human---ok
human(address(a,X),Y)---ok
human(X,z,school(z,class(A,kko),P).---ok
human(abc9---ok
humanabc9)---ok
\*-----------------------------------*/
/*-----------------------------------*\
--正确的询问形式的结构-------
quest=C+.
quest=structure+.
structure=C+(+A+Asuff+Aend
A=C
A=V
A=structure
Asuff=,+A+Asuff
Asuff=0
Aend=)
\*-----------------------------------*/
//下表为脚本语言程序(询问部分)的递归结构
void quest();
void A();
void Asuff();
void Aend();
void structure();
/////////////////////////////////////////////////////////////////
//
//
void quest()
{
if(Code_F[Code_I]>=BY_BEGIN_OF_C+1&&Code_F[Code_I]<=BY_BEGIN_OF_C+BY_MAX_NUM_OF_C)
//询问的第一个单词一定要是标识符
{
Code_I++;
if(Code_F[Code_I]==DOT)
//如果询问的第二个单词是DOT
{
return;
//则询问结束
}
else
{
if(Code_F[Code_I]==LBR)
//当询问的第二个单词不是DOT,而是(
{
Code_I++;
A();
Asuff();
Aend();
if(Code_F[Code_I]==DOT)
//询问的最后一个单词一定要是DOT
{
if(Code_I!=Syn_Lines-1)
//说明DOT以后还有其他的字符
{
error(9);
//说明DOT以后还有其他的字符,则出错
}
else
{
return;
//则询问结束
}
}
else
{
error(8);
//询问的最后一个单词不是DOT,则出错
}
}
else
{
error(2);
//询问的第二个单词即不是DOT,也不是(,则出错
}
}
}
else
{
error(1);
//询问的第一个单词不是标识符,出错
}
}
//
////////////////////////////////////////////////////////////////
//
void structure()
{
if(Code_F[Code_I]>=BY_BEGIN_OF_C+1&&Code_F[Code_I]<=BY_BEGIN_OF_C+BY_MAX_NUM_OF_C)
//结构的第一个单词一定要是标识符
{
Code_I++;
if(Code_F[Code_I]==LBR)
//结构的第二个单词一定要是(
{
Code_I++;
A();
Asuff();
Aend();
}
else
{
error(4);
//结构的第二个单词不是(,出错
}
}
else
{
error(3);
//结构的第一个单词不是标识符,出错
}
}
//
////////////////////////////////////////////////////////////////
//
void A()
{
if(Code_F[Code_I]>=BY_BEGIN_OF_C+1&&Code_F[Code_I]<=BY_BEGIN_OF_C+BY_MAX_NUM_OF_C)
//参数的第一个单词或者是标识符
{
Code_I++;
if(Code_F[Code_I]==LBR)
//参数的第一个单词或者是标识符,并且参数第二个单词是(
{
Code_I++;
A();
Asuff();
Aend();
}
else
//参数的第一个单词或者是标识符,而参数第二个单词不是(
//则说明参数是常量,需要回退一个单词.
{
//回退一个单词.
//!!!!!!!!!!!!!!!-------------
return;
}
}
else
{
if(Code_F[Code_I]>=BY_BEGIN_OF_V+1&&Code_F[Code_I]<=BY_BEGIN_OF_V+BY_MAX_NUM_OF_V)
//参数的第一个单词不是标识符,而是变量
{
Code_I++;
Num_V++;
return;
}
else
{
error(5);
//参数的第一个单词不是标识符,也不是变量,出错
}
}
}
//
////////////////////////////////////////////////////////////////
//
void Asuff()
{
if(Code_F[Code_I]==COM)
//如果参数后缀的第一个单词是COM
{
Code_I++;
A();
Asuff();
}
else
{
if(Code_F[Code_I]==RBR)
//如果参数后缀的第一个单词不是COM,而是RBR
{
//回退一个单词.
//!!!!!!!!!!!!!!!-------------
return;
}
else
{
error(6);
//参数后缀的第一个单词不是COM,也不是RBR,则出错
}
}
}
//
////////////////////////////////////////////////////////////////
//
void Aend()
{
if(Code_F[Code_I]==RBR)
//参数尾的第一个单词一定是RBR
{
Code_I++;
return;
}
else
{
error(7);
//参数尾的第一个单词不是RBR,则出错
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -