1220-递归下降语义分析程序
2015-12-30 16:29
176 查看
#include<stdio.h> #include<string.h> char str[10]; int index=0; void E(); //E->TX; void X(); //X->+TX|-TX| e void T(); //T->FY void Y(); //Y->*FY |/fy| e void F(); //F->(E) | id int id(); //id int main() { int len; int m; printf("请输入算数表达式:"); scanf("%s",str); len=strlen(str); str[len]='#'; str[len+1]='\0'; E(); printf("正确语句!\n"); strcpy(str,""); index=0; return 0; } void E() { T(); X(); } void X() { if(str[index]=='+') { index++; T(); X(); } else if(str[index]=='-') { index++; T(); X(); } } void T() { F(); Y(); } void Y() { if(str[index]=='*') { index++; F(); Y(); } else if(str[index]=='/') { index++; F(); Y(); } } void F() { if(id()) { index++; } else if (str[index]=='(') { index++; E(); if(str[index]==')') { index++; }else{ printf("\n分析失败!\n"); exit (0); } } else{ printf("分析失败!\n"); exit(0); } } int id() { if(str[index]>='0'&&str[index]<='9') { while( str[index+1]>='0'&&str[index+1]<='9' ) { index++; } if(str[index+1]>='a'&&str[index+1]<='z' ) return 0; return 1; } else if(str[index]>='a'&&str[index]<='z' ) { return 1; } else return 0; }
相关文章推荐
- phpcms中的RBAC权限系统
- OkHttp 源码分析
- 色环电阻
- 在windows下直接使用Mysql压缩包的操
- 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 2
- Android Studio中如何引用图片资源
- 10个你必须掌握的超酷VI命令技巧
- market排名-wp
- 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1
- [CSS3 Practice] Avatar
- 问题解决
- hbase数据迁移的mapreduce代码
- length,length()和size()区别
- 设置TextView文字的颜色
- 网络请求
- 1-基本建表sql语句
- C学习笔记(八)字符输入输出和输入确认
- html,js简单保存textarea换行格式
- 递归下降分析法--算数语法分析
- TPS、并发用户数、吞吐量关系