实验四 递归下降语法分析程序设计
2015-12-30 17:29
197 查看
#include<stdio.h> char curr; char LL1[1000]; int N=0; void scaner(); int digital(){ //panduanshifouweishuzi if(curr >= '0' && curr <= '9') { return 1; } else { return 0; } } int english(){ if(curr >= 'a' && curr<='z' || curr >= 'A' && curr <= 'Z') { return 1; } else return 0; } int yuansuanf(){ if(curr=='+'||curr=='-'||curr=='*'||curr=='/') { return 1; } else{ return 0; } } int end(){ if(curr!='#'){ return 1; } else return 0; } int check(){ if(digital()==1){ scaner(); if(end()==1){ if(yuansuanf()==1){ return 1; } else if(yuansuanf()==0){ return 0; } } else if(end()==0){ return 1; } } return 0; } void checking(){ int number; qq: scaner(); if(digital()==1){ while(curr!='#'){ number=check(); if(number==1){ goto qq; } else if(number==0){ break; } } } if(number==1){ printf("无错误"); } else printf("%c错误",curr); } void main() { char ch; int i=0; printf("请输入需要分析的语法:(#结束)\n"); do{ scanf("%c",&ch); LL1[i] = ch; i++; }while(ch != '#'); scaner(); checking(); } void scaner(){ //用于读取源函数的下一个字符 N++; if(LL1 == ' '){ N++; }else { curr = LL1 ; } }
相关文章推荐
- js 排序
- 关于genymotion 不能创建模拟器(包括安卓模拟器)的解决方法
- c#中的通配符怎么用???
- unity set texture offset
- UITextField 限制字数与输入内容
- JAVA系列教程
- THINK PHP自动完成,填充时间的一个“坑”
- 自定义View之简单顶部标题栏
- MySQL Server has gone away报错原因汇总
- iOS面试题11- NSThread/NSOperation/GCD的优缺点总结
- 常用网址记录
- jdbc操作Blob和Clob字段与字符串的转换
- 掌握需求过程(三)
- natural join 为何物
- Win7 x64系统下PHP开发环境搭建(Apache2.4.18+PHP5.6.16+MySQL5.7.10+phpMyAdmin4.5.3.1)
- C#中String如何判断是否为空
- Excel公式=SUM(COUNTIF(data,">"&{10,15})*{1,-1})的含义
- ARCHIVELOG 手动清理
- Hibernate回调函数
- Unity3D-对象池GameObjectPool