RG识别关键技术钻研(2)
作者:佚名; 更新时间:2014-12-05
3 文法的识别主要算法分析
识别的关键是对所输入的符号串的格式上的判断,左部需要满足为单个的大写英文,而右部应是单个小写或是一个小写和一个大写的组合,只有这样才满足RG的要求,此处给出对右部的进行识别的部分主要过程。
if(rlen==1)
{
char va=rs.GetAt(0);
findvalue(va,End,C);
rlen=-1;
}
以上算法是对文法右部的检查,即判断右部为单个小写的情况.
if(rlen==2)
{
char VT1=rs.GetAt(0);
char VT2=rs.GetAt(1);
int fa=0;
while(fa<=maxlen)
{
if(fa==maxlen)
{D=0;fa++;}
else
{
if(VT1==Noend[fa].value)
{
int fb=0;
while(fb<=maxlen)
{
if(fb==maxlen){D=0;fb++;fa=maxlen+1;}
else
{
if(VT2==End[fb].value)//是终结符号:
{fb=maxlen+1;fa=maxlen+1;}//检查全部完毕:
else{fb++;}
}
}
}
else{fa++;}
}
以上是对小写加大写的情况的分析。对经过判断后的文法存储,便可由接下的步骤完成文法到自动机的转换。这样就完成了一个较为完整的RG识别过程。
4 结论
本文主要根据RG的特点,在设计了一个识别过程的基础上,完成文法判断及到自动机的转换。希望能够对词法分析的初学者提供一些帮助。下步待继续的工作是在自动机的基础上完成对输入句子的运行识别.
参考文献:
[1] 张幸儿.计算机编译原理[M].2版.北京:科学出版社,2003:31-34.
[2] 陈火旺,等.程序设计语言编译原理[M].3版.北京:国防工业出版社,2000:34-35.
[3] 王育坚.VC++面向对象编程教程[M].北京:清华大学出版社,2003.
下一篇:论我国电子政务发展模式初探
热门论文