| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 380 人关注过本帖
标题:请帮我看看我写的程序哪里不对
只看楼主 加入收藏
zj0718
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-23
收藏
 问题点数:0 回复次数:2 
请帮我看看我写的程序哪里不对

这是词法分析的一个程序,请帮我看看!

#include <stdio.h>
#include <string.h>

char prog[80],token[8];
char ch;
int syn,p,m,n,sum;
char *rwtab[6]={"begin","if","then","while","do","end"};

//******************************
//词法扫描程序
//******************************

void scaner()
{
for(n=0;n<8;n++) token[n]=NULL;
ch=prog[p++];
while(ch==' ') ch=prog[p++];
if(ch>='a' || ch<='z' || ch>='A' || ch<='Z')
{
while(ch>='a' || ch<='z' || ch>='A' || ch<='Z' || ch>='0' || ch<='9')
{
token[m++]=ch;
ch=prog[p++];
}
token[m++]='\0';
ch=prog[p--];
syn=10;
for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0)
{
syn=n+1;
break;
}
}
else
if(ch>='0' || ch<='9')
{
while(ch>='0' || ch<='9')
{
sum=sum*10+ch-'0';
ch=prog[p++];
}
ch=prog[p--];
syn=11;
}
else
switch(ch)
{
case '<' :m=0;
token[m++]=ch;
ch=prog[p++];
if(ch=='>')
{
syn=21;
token[m++]=ch;
}
else if(ch=='=')
{
syn=22;
token[m++]=ch;
}
else
{
syn=20;
ch=prog[p--];
}
break;
case '>' :token[m++]=ch;
ch=prog[p++];
if(ch=='=')
{
syn=24;
token[m++]=ch;
}
else
{
syn=23;
ch=prog[p--];
}
break;
case ':' :token[m++]=ch;
ch=prog[p++];
if(ch=='=')
{
syn=18;
token[m++]=ch;
}
else
{
syn=17;
ch=prog[p--];
}
break;
case '+' :syn=13;
token[0]=ch;
break;
case '-' :syn=14;
token[0]=ch;
break;
case '*' :syn=15;
token[0]=ch;
break;
case '/' :syn=16;
token[0]=ch;
break;
case ';' :syn=26;
token[0]=ch;
break;
case '(' :syn=27;
token[0]=ch;
break;
case ')' :syn=28;
token[0]=ch;
break;
case '#' :syn=0;
token[0]=ch;
break;
default :syn=-1;
}
}

void main()
{
p=0;
printf("\n please input string:");
do{
scanf("%s",prog);
gets(prog);
ch=prog[p++];
}while(ch!='#');
// printf("%s\t",prog);
p=0;
do{
scaner();
switch(syn)
{
case 11:printf("数的二元组:\n %d",sum);
break;
case -1:printf("含有未识别的符号!");
break;
default:printf("单词的二元组:\n %s",token);
}
}while(syn!=0);
}

搜索更多相关主题的帖子: include 
2007-03-23 13:26
w362034710
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2006-12-2
收藏
得分:0 
自己再调下,,问题比较的多,,,,,
2007-03-23 21:32
zj0718
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-3-23
收藏
得分:0 

请问能否举个例子 我是初学者
代码是照着书本填空的

2007-03-23 21:41
快速回复:请帮我看看我写的程序哪里不对
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022216 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved