+递归下降语法分析程序设计
2015-12-30 16:27
281 查看
消除左递归后的文法是:
E→TE'
E'→+TE'|-TE'|ε
T→FT'
T'→*FT'|/FT'|ε
F→(E)|i
E→TE'
E'→+TE'|-TE'|ε
T→FT'
T'→*FT'|/FT'|ε
F→(E)|i
#include<stdio.h> #include<string> char str[10]; int index=0; void E(); void X(); void T(); void Y(); void F(); int main() { int len; int m; printf("请输入要测试的次数:"); scanf("%d",&m); while(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]=='+'||str[index]=='-') { index++; T(); X(); } } void T() { F(); Y(); } void Y() { if(str[index]=='*'||str[index]=='/') { index++; F(); Y(); } } void F() { if(str[index]=='i') { index++; } else if (str[index]=='(') { index++; E(); if(str[index]==')') { index++; }else{ printf("\n分析失败!\n"); exit (0); } } else{ printf("分析失败!\n"); exit(0); } }
相关文章推荐
- ORA-01153: an incompatible media recovery is active
- 关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
- 仿IOS效果-带弹簧动画的ListView
- 解决android-support-v4.jar 冲突
- OkHttp上传文件,服务器端请求解析找不到文件信息的问题
- grep以及正则表达式
- Java中的static关键字解析
- 仿IOS效果-带弹簧动画的ListView
- RIENX格式(上):2.10版本内容解析和说明
- 去掉Xcode工程中的 某种类型的警告
- MySQL慢查询开启及分析方法
- lib和dll的区别和联系
- 使用git上传代码
- 百度笔试
- 1216 递归下降分析法
- PhantomJS
- 一段代码,演示Win32下超大文件读写
- nginx proxy_next_upstream导致的一个重复提交错误
- stdClass类转换成数组
- iOS字符串GBK编码转UTF-8