《递归下降分析法》实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《编译原理》课程实验报告
实验名称:递归下降分析法
姓名: LZ
学号: 110
地点:机房
教师:老师
院系:计通
专业:计算机
时间:一.实验目的
(1) 掌握递归下降语法分析的基本原理和方法。

(2) 掌握自上而下语法分析的要求与特点。

(3)掌握相应数据结构的设计方法。

二.实验内容
#include<stdio.h>
char scaner(char*input,int* p);
void S(char*input,int* p);
void T(char*input,int* p);
void T1(char*input,int* p);
void error();
int sym=0;
int main()
{
int p=0;
char input[200]={0};
printf("提示:单词只能由 ( ) a ^ , 组成,且单词必须以$#结尾\n"); printf("请输入你要识别的单词\n");
scanf("%[^#]s",input);
printf("the word you input is : %s\n",input);
sym=scaner(input,&p);
S(input,&p);
if(sym=='$')
printf("sucess\n");
else
printf("fail");
do
{
; }while(1);
return 0;
}
char scaner(char*input,int *p) {
char temp=input[*p];
(*p)++;
return temp;
}
void S(char*input,int* p)
{
if(sym=='a'||sym=='^')
sym=scaner(input,p);
else if(sym=='(')
{
sym=scaner(input,p);
T(input,p);
if(sym==')')
sym=scaner(input,p); else
error();
}
return ;
}
void T(char*input,int* p) {
S(input,p);
T1(input,p);
return ;
}
void T1(char*input,int* p) {
if(sym==','){
sym=scaner(input,p); S(input,p);
T1(input,p);}
else if(sym!=')')
error(); }
void error()
{
printf("error!");
return ;
}
三.实验步骤
四.总结与回顾
通过该实验的操作,我了解了语法分析器的内部工作原理,并掌握自上而下语法分析的要求与特点。

了解了每个函数的功能是识别由该终结符所表示的语法成分,通过在实验中运用一定的编程技巧,掌握对表达式进行处理的一种方法;在实验最后的调试中让我对该实验有了更全面的知识掌握,从中进步了不少。

相关文档
最新文档