
实验三 语法分析程序实验
专业 商软2班 姓名 黄仲浩 学号 201506110166
一、 实验目的
编制一个部分文法分析程序。
二、 实验内容和要求
输入:源程序字符串
输出:正确或者错误
三、 实验方法、步骤及结果测试
-
源程序名:递归下降分析.c
可执行程序名:递归下降分析.c
- 原理分析及流程图
#include<stdio.h>
#include<string.h>
char Token[];//存储输入的字符
char sym;//记录下一个字符
char s;//输入字符的传递
static int p= ;//下一个字符的下标
void S();
void T();
void U();
void scaner();//下一个字符
void error();//错误结束
//以此文法为基础作此程序
//S->a|^|(T)
//T->SU
//U->,SU|$
int main()
{
int i=-;
printf("Please input :\n");
do
{ scanf("%c",&s);i++;
Token[i]=s; }while(Token[i]!='#');
scaner();
S();
if(sym=='#')
printf("Success!\n");
else
printf("fail!\n");
return ; }
void scaner()
{
sym=Token[p];
p++;
}
void error()
{
printf("error!");
}
void S()
{
if(sym=='a'||sym=='^')//如果是a或者是^
scaner();
else if(sym=='(')
{
scaner();
T();
if(sym==')')
scaner();
else
error();
}
}
void T()
{
S();
U();
}
void U()
{
if(sym==',')
{
scaner();
S();
U();
}
else if(sym!=')')
error();
}
- 主要程序段及其解释:
S().T().U()//只是分析c语言的部分
scaner()//进行下一个字符的记录
error()//结束的标志
- 运行结果及分析
四、 实验总结
此程序只是以部分为主做出来,是为了慢慢地做好全部c语言的分析。我会慢慢以此思考LL(1)文法来进行最终的文法改写分析。