?? my_syn_f.h
字號:
/*-----------------------------------*\
--幾種正確的F形式-------
human(x).
human(x,y,z).
human(abc_9,x).
human(abc9).
human(as,abc9_).
human(address(a,b),cc).
human(x,z,school(z,class(a,kko)),p).
\*-----------------------------------*/
/*-----------------------------------*\
--幾種錯誤的F形式-------
human(X).
human(X);
human(x);
human(x)
human(xx,yy,zz)09
Phuman(abc,x).
human(xx,123,yy).
human(9_,xx,abc,yy).
human(abc9)..
human(abc9).ol
human
human.
#human(aa).
human(aa)
human(address(a,xx),yy)
human(x,z,school(z,class(a,kko),p).
human(abc9
humanabc9)
\*-----------------------------------*/
/*-----------------------------------*\
--正確的F形式的結構-------
F_Factor=F_predicate+F_end
F_predicate=C+(+F_A+F_Asuff+F_Aend
F_A=C
F_A=F_predicate
F_Asuff=,+F_A+F_Asuff
F_Asuff=0
F_Aend=)
\*-----------------------------------*/
//下表為腳本語言程序(詢問部分)的遞歸結構
void F_Factor();
void F_predicate();
void F_A();
void F_end();
void F_Asuff();
void F_Aend();
//
////////////////////////////////////////////////////////////////
//
void F_Factor()
{
F_predicate();
F_end();
}
//
////////////////////////////////////////////////////////////////
//
void F_predicate()
{
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++;
F_A();
F_Asuff();
F_Aend();
}
else
{
f_error(2);
//謂詞的第二個單詞不是(,出錯
}
}
else
{
f_error(1);
//謂詞的第一個單詞不是標識符,出錯
}
}
//
////////////////////////////////////////////////////////////////
//
void F_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++;
F_A();
F_Asuff();
F_Aend();
}
else
//參數的第一個單詞或者是標識符,而參數第二個單詞不是(
//則說明參數是常量,需要回退一個單詞.
{
//回退一個單詞.
//!!!!!!!!!!!!!!!-------------
return;
}
}
else
{
f_error(3);
//參數的第一個單詞不是標識符,出錯
}
}
//
////////////////////////////////////////////////////////////////
//
void F_Asuff()
{
if(Code_F[Code_I]==COM)
//如果參數后綴的第一個單詞是COM
{
Code_I++;
F_A();
F_Asuff();
}
else
{
if(Code_F[Code_I]==RBR)
//如果參數后綴的第一個單詞不是COM,而是RBR
{
//回退一個單詞.
//!!!!!!!!!!!!!!!-------------
return;
}
else
{
f_error(4);
//參數后綴的第一個單詞不是COM,也不是RBR,則出錯
}
}
}
//
////////////////////////////////////////////////////////////////
//
void F_Aend()
{
if(Code_F[Code_I]==RBR)
//參數尾的第一個單詞一定是RBR
{
Code_I++;
return;
}
else
{
f_error(5);
//參數尾的第一個單詞不是RBR,則出錯
}
}
//
////////////////////////////////////////////////////////////////
//
void F_end()
{
if(Code_F[Code_I]==DOT)
//事實尾的第一個單詞一定是DOT
{
if(Code_I!=Syn_Lines-1)
//說明DOT以后還有其他的字符
{
f_error(7);
//說明DOT以后還有其他的字符,則出錯
}
else
{
return;
}
}
else
{
f_error(6);
//事實尾的第一個單詞不是DOT,則出錯
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -