1217 递归下降语法分析程序设计
2015-12-31 16:58
344 查看
#include<stdio.h> #include<string> char str[10]; //记录要分析的字符串 int x=0; //记录第一个字符 void E(); void X(); void T(); void Y(); void F(); int main() { int len; printf("请输入算数表达式:"); scanf("%s",str); len=strlen(str); str[len]='#'; str[len+1]='\0'; E(); printf("\n是正确表达式!\n"); strcpy(str,""); x=0; return 0; } void E() { T(); X(); } void X() { if(str[x]=='+'||str[x]=='-') { x++; T(); X(); } } void T() { F(); Y(); } void Y() { if(str[x]=='*'||str[x]=='/') { x++; F(); Y(); } } void F() { if(str[x]>='a'&&str[x]<='z') { x++; } else if(str[x]>=0&&str[x]<=9) { x++; } else if (str[x]=='(') { x++; E(); if(str[x]==')') { x++; } else { printf("\n有语法错误!\n"); exit(0); } } else { printf("\n有语法错误!\n"); exit(0); } }
相关文章推荐
- Maven常用命令
- Week7-2POS tagging
- RHEL6.3 yum源更新
- angularjs 当transclude:true or elemet时如何在link函数中取得要替代模板中ng-transclude的那部分内容
- 智能设备相关Arduino+esp8266 +阿里云eds + 百度云推动 流程 简约 配置指南
- jvm学习总结
- c++之我们为什么选择使用智能指针
- Storyboard
- Lua 中改变console的输出字体颜色
- android中Invalidate和postInvalidate的用法
- Mac系统MySQL安装、设置及卸载
- 史上最易懂的Android jni开发资料--NDK环境搭建
- Android中dip、dp、sp、pt和px的区别详解
- lib 库 vs搜索路径的添加
- 从朴素贝叶斯分类器到贝叶斯网络(上)
- ASC(22)H(大数+推公式)
- 教你四招辨别强庄股见顶
- 预处理语句
- 转型 2015
- 查看计算机位数以及操作系统位数