12.16_实验四 递归下降语法分析程序设计
2015-12-30 17:36
288 查看
#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("没有错误\n");
}
else
printf("%c\n错误\n",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
;
}
}
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("没有错误\n");
}
else
printf("%c\n错误\n",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
;
}
}
相关文章推荐
- Matlab的学习
- GIT 学习
- cacti 监控
- 黑盒测试用例设计方法
- 如果hashCode中返回常量1,会有什么结果?
- 【学习】CommonJS规范和实现
- session序列化的问题
- android - Content-Type大全
- 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 4
- 【FAQ】如何在新打git tag入库后自动触发Jenkins任务?
- 吐槽有礼!说说2015最让你遗憾的事儿
- [TwistedFate]UIWebView的简单使用
- 提高C++程序运行效率的10个简单方法
- 关于如何拍摄瓷器(转)
- CSS兼容常用技巧
- C++ Primer 第15章句柄类clone函数的意义
- SQL Server: 解决链接服务器中 CASE WHEN 不能超过10级
- Linux组、用户操作
- C++对象模型
- uva10041