文档介绍:
语法分析实验报告(实验二)
. . . .
. . ..
编译语句> |<if条件语句> | <while循环语句>
<赋值语句>à <表达式>
<表达式>à<项>{ +<项> | -<项> }
<项>à<因子>{*<因子>|/<因子>}
<因子>àID | NUM | (<表达式>)
<if条件语句>?(<表达式>)| (ID) |(NUM)?<语句>
<while条件循环语句>?(<表达式>)| (ID) |(NUM)?<语句>
备注:红色字体部分为我对代码实现功能的主要修改与扩展部分。
/*语法分析源代码*/
#include<>
#include<>
char prog[80],token[8];
char ch;
int syn,p,m=0,n,sum,kk=0;
char *rwtab[6]={function,if,then,while,do,endfunc};
void yucu();
void expression();
void statement();
void factor();
void term();
void irparser();
void scaner()
{for (n=0;n<8;n++)
token[n]=NULL;
while(ch==' ' || ch=='\n')
ch=prog[p++];
m=0;
if((ch<='z' ch>='a') || (ch<='Z' ch>='A'))
{while((ch<='z' ch>='a') || (ch<='Z' ch>='A') || (ch<='9' ch>='0'))
{token[m++]=ch;
ch=prog[p++];
}
syn=10;
for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0)
{syn=n+1;
break;
}
token[m++]='\0';}
else
if(ch<='9' ch&