来个语法分析器,TC2.0的

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:20:00
请在元旦前给我,如果做不到的话,就不用来了,记得是TC2.0的,是C语言,不是C++和C#,切记不是C++
要求可以产生四元式或三元式中间代码

#include<stdio.h>
void main()
{
int i,o,j=0,m=0,z=-1; char str[30]; int number=0;
float d[31]={0};
begin:
gets(str);
for(i=0;str[i];i++)
if(str[i]<40||str[i]>57||str[i]==46||str[i]==44)
{printf("bad input agian\n");goto begin;}
for(i=0;str[i];i++)
{if(str[i]<48||str[i]>57)
number=0;
else if(number==0)
{number=1;j++;}
if(number==1)
{d[j-1]=d[j-1]*10+str[i]-48;}
m=j;
}
o=m;
j=0;
for(i=0;str[i];i++)
if(str[i]==42||str[i]==47||str[i]==43||str[i]==45)
str[j++]=str[i];
str[j]='\0';
for(i=0;str[i];i++)
{
if(str[i]==42)
{
z++;
d[i-z]=d[i-z]*d[i+1-z];
for(j=i;j<o-1;j++) d[j+1-z]=d[j+2-z];
m--;
}
if(str[i]==47)
{
z++;
d[i-z]=d[i-z]/d[i+1-z];
for(j=i;j<o-1;j++) d[j+1-z]=d[j+2-z];
m--;
}
}
j=0;z=-1