C语言语法分析器

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:00:06
各位:
求用C语言编C的语法分析器!
只要求实现简单的+,-,*就行了!
要原代码啊!时间就是金钱!各位拜托了!要快啊!!
希望有原代码的,方法我也知道!就是实现不出来,所来才来拜托大家的!!

采用递归下降语法分析方法实现

输入一个表达式,输出结果,不包括()这
种。
例如可以输入的形式:
3*3-6/2+70+1/3
代码:
#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