编译原理-递归下降分析法 c程序部分的分析
2024-09-04 11:18:24
实验三 语法分析程序实验
专业 商软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)文法来进行最终的文法改写分析。
最新文章
- Django进阶(三)
- C# 的 Dictionary 寫入前應注意事項
- PHP设计模式
- cassandra的源代码的入口
- ffmpeg-20160520-git-bin
- meanshift和camshift
- li有无缩略图样式调取
- struts2视频学习笔记 24-27(国际化)
- Sqlserver 还原那些事
- Android 内核初识(6)SystemServer进程
- JavaMail组件实现邮件功能
- 读书笔记之 - javascript 设计模式 - 代理模式
- 从客户端(content=";<;span class=";Apple-s...";)中检测到有潜在危险的 Request.Form 值。
- Python爬虫【解析库之beautifulsoup】
- Shell编程实战
- 双击启动tomcat中的startup.bat闪退原因及解决方法
- 21天打造分布式爬虫-Spider类爬取糗事百科(七)
- redis其他相关知识
- oracle学习笔记一:用户管理(3)用户口令管理
- 最好最实用的二次开发教程 cms