第一范文网 - 专业文章范例文档资料分享平台

算符优先分析方法

来源:用户分享 时间:2025/10/1 2:22:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

{

w.E=s.base[s.top].E; w.e=s.base[s.top].e; s.top--; }

int IsEmpty(charstack s) {

if(s.top==-1) return 1; else return 0; }

int IsLetter(char ch) {

if(ch>='A'&&ch<='Z') return 1; else return 0; }

//judge1是判断是否是算符文法:若产生式中含有两个相继的非终结符则不是算符文法 int judge1(int n) {

int j=3,flag=0; for(int i=0;i<=n;i++) while(str[i][j]!='\\0') {

char a=str[i][j]; char b=str[i][j+1];

if(IsLetter(a)&&IsLetter(b)) {flag=1;break;} else j++; }

8

if(flag==1) return 0; else return 1; }

//judge2是判断文法G是否为算符优先文法:若不是算符文法或若文法中含空字或终结符的优先级不唯一则不是算符优先文法 void judge2(int n) {

for(int i=0;i<=n;i++)

if(str[i][3]=='~'||judge1(n)==0||FLAG==1)//'~'代表空字 {cout<<\该文法不是算符优先文法!\ if(i>n)

cout<<\该文法是算符优先文法!\}

//search1是查看存放终结符的数组r中是否含有重复的终结符 int search1(char r[],int kk,char a) {

for(int i=0;i

if(i==kk) return 0; else return 1; }

//createF函数是用F数组存放每个终结符与非终结符和组合,并且值每队的标志位为0;F数组是一个结构体 void createF(int n) {

int k=0,i=1;char g;

char t[10];//t数组用来存放非终结符

9

t[0]=str[0][0]; while(i<=n) {

if(t[k]!=str[i][0])

{k++;t[k]=str[i][0];g=t[k];i++;} else i++; } kk=0; char c; for(i=0;i<=n;i++) { int j=3;

while(str[i][j]!='\\0') {

c=str[i][j]; if(IsLetter(c)==0) {

if(!search1(r,kk,c))

r[kk]=c;kk++;//r数组用来存放终结符 } j++; } } m=0;

for(i=0;i

for(int j=0;j

F[m].R=t[i]; F[m].r=r[j]; F[m].flag=0; m++;

10

} }

//search函数是将在F数组中寻找到的终结符与非终结符对的标志位值为1 void search(charLode w) {

for(int i=0;i

if(F[i].R==w.E&&F[i].r==w.e) {F[i].flag=1;break;} }

void FirstVT(int n)//求FirstVT {

charstack sta; charLode w; int i=0; Initstack(sta); while(i<=n) {

int k=3; w.E=str[i][0]; char a=str[i][k]; char b=str[i][k+1];

if(!IsLetter(a))//产生式的后选式的第一个字符就是终结符的情况 { w.e=a; push(sta,w); search(w); i++; }

else if(IsLetter(a)&&b!='\\0'&&!IsLetter(b))//产生式的后选式的第一个字符是非终结符的情况

11

搜索更多关于: 算符优先分析方法 的文档
算符优先分析方法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5s6qq517te4mn0g1ludc_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top