我的C代码不知道错在哪里???气!!!都弄了好几天!!!

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:27:31
(编译原理)实验题目:设计以下文法的递归下降分析程序,并判断任意输入的符号串是否合法。
S-->aSe
S-->B
B-->bBe
B-->C
C-->cCc
C-->d
我想实现:输入一串字符,按ENTER键,如果不合法就显示“wrong”,合法不做任何输出。
我的苦恼:我的C代码不知道错在哪里???气!!!都弄了好几天!!!
如果能解决了这个问题,我将送完我的所有的分数给你。
我写的C代码如下:
#include "stdio.h"
void main()
{ char *str;
void get(char *p);
void S(char sym);
void B(char sym);
void C(char sym);
gets(str);
S(*str);
getch();
}
void error()
{printf("error");
}
void token(char *sy,char a)
{if((*sy)==a)
(*sy) = (*(sy+1)); /*转到下一个字符*/
else error();
}
void S(char sym)
{ switch(sym)
{ case 'a':token( &sym,'a'); S(sym); token( &sym,'e'); break;
case 'b':B(sym); break;
case 'c':B(sym); break;
case 'd':B(sym); break;
default :error();}
}

大概明白你的意思.其实就是输入一个字串,看用以上的推导方法能不能得到该目的串是不是!

不过你的程序好像有点复杂!顺便研究了一下...写了段代码不知道合不合你意!
只是针对该语法而已哦!

研究了一个小时,才50分....还不知道会不会给我.~也不知道值不值!

如下:测试结果附在后面

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

char conver(char *buf);
char conver(char ch);
int sortA(char *buf, int nLen);

void main()
{
char buf[1024];
char ch;
while(1)
{
printf("pls input an buffer...\n");
gets(buf);
if(sortA(buf, strlen(buf)) == 0)
printf("Wrong\n");
else
{
printf("This OK!\n if you want continue press 'Y'\n");
ch = getch();
if(ch != 'Y' && ch != 'y')
break;
}
}

}

int sortA(char *buf, int nLen)
{
char temp[1024];
char ch;

for(int i=0; i<nLen; i++)
{
if((ch