博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1230递归下降语法分析程序设计
阅读量:4975 次
发布时间:2019-06-12

本文共 1029 字,大约阅读时间需要 3 分钟。

#include<stdio.h>

#include<string.h>
int i,t=1;
char a[100];

void E();

void E1();
void T();
void T1();
void F();

void E()
{
T();
E1();
}
void T()
{
F();
T1();
}
void E1()
{
if(a[i]=='+'||a[i]=='-')
{
i++;
T();
E1();
}
else if(a[i]=='#'||a[i]==')')
{
i++;
}
}
void T1()
{
if(a[i]=='*'||a[i]=='/')
{
i++;
F();
T1();
}
else if(a[i]=='#'||a[i]==')')
{
i++;
}

}

void F()
{
int d;
if((a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))
{
if((a[i++]<='z'&&a[i++]>='a')||(a[i++]<='Z'&&a[i++]>='A'))
i++;
else 
{
printf("\n分析失败!\n");
t=0;
}
}
if(a[i]<='9'&&a[i]>='0')
{
if(a[i++]<='9'&&a[i++]>='0')
i++;
else 
{
printf("\n分析失败!\n");
t=0;
}
}
else if(a[i]=='(')
{
E();
if(a[i]==')')
{
i++;
}
else
printf("\n分析失败!\n");
exit (0);
}
}
else
printf("\n分析失败!\n");
exit (0);
}
}
int main()
{
int len,d;
start:printf("请输入表达式:\n");
scanf("%s",a);
len=strlen(a);
a[len]='#';
a[len+1]='\0';
E();
if(t==1)
{
printf("是正确的表达式\n");
}
printf("是否重试?重试输入1:");
scanf("%d",&d);
if(d=1)
goto start;
return 0;

转载于:https://www.cnblogs.com/huaziyi666/p/5106102.html

你可能感兴趣的文章
Forbidden You don't have permission to access / on this server.
查看>>
Intellij Idea新建web项目(转)
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
centos iptables
查看>>
unity3d 移动与旋转 2
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>