实验三 语法分析程序实验

专业 商软2班   姓名 黄仲浩  学号 201506110166

一、 实验目的

     编制一个部分文法分析程序。

二、 实验内容和要求

输入:源程序字符串

输出:正确或者错误

三、 实验方法、步骤及结果测试

  1. 源程序名:递归下降分析.c

可执行程序名:递归下降分析.c

  1. 原理分析及流程图
#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();
}
  1. 主要程序段及其解释:

     S().T().U()//只是分析c语言的部分

     scaner()//进行下一个字符的记录

     error()//结束的标志

  1. 运行结果及分析

四、 实验总结

此程序只是以部分为主做出来,是为了慢慢地做好全部c语言的分析。我会慢慢以此思考LL(1)文法来进行最终的文法改写分析。

 

 

最新文章

  1. Django进阶(三)
  2. C# 的 Dictionary 寫入前應注意事項
  3. PHP设计模式
  4. cassandra的源代码的入口
  5. ffmpeg-20160520-git-bin
  6. meanshift和camshift
  7. li有无缩略图样式调取
  8. struts2视频学习笔记 24-27(国际化)
  9. Sqlserver 还原那些事
  10. Android 内核初识(6)SystemServer进程
  11. JavaMail组件实现邮件功能
  12. 读书笔记之 - javascript 设计模式 - 代理模式
  13. 从客户端(content=&quot;&lt;span class=&quot;Apple-s...&quot;)中检测到有潜在危险的 Request.Form 值。
  14. Python爬虫【解析库之beautifulsoup】
  15. Shell编程实战
  16. 双击启动tomcat中的startup.bat闪退原因及解决方法
  17. 21天打造分布式爬虫-Spider类爬取糗事百科(七)
  18. redis其他相关知识
  19. oracle学习笔记一:用户管理(3)用户口令管理
  20. 最好最实用的二次开发教程 cms

热门文章

  1. LC 275. H-Index II
  2. CentOS7出现Unit iptables.service could not be found
  3. 异步IO和协程
  4. #dokcer部署code-server web版vscode+golang
  5. Pytorch-拼接与拆分
  6. Asp.Net调用后台变量的三种写法
  7. ajax将数组或list集合传到后台 的 【坑】
  8. 如何创建一个img文件并且mount 它
  9. Linux下部署FastDFS
  10. sql server凭据