1 / 18
文档名称:

语法分析实验报告(实验二).docx

格式:docx   大小:33KB   页数:18页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

语法分析实验报告(实验二).docx

上传人:cc 2022/8/16 文件大小:33 KB

下载得到文件列表

语法分析实验报告(实验二).docx

文档介绍

文档介绍:
语法分析实验报告(实验二)
  . . . .
 . . ..
 编译语句> |<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&