【编译原理】LR(1)分析法:C/C++实现

2024-06-04 9347阅读

【编译原理】LR(1)分析法:C/C++实现 第1张
🔖墨香寄清辞:空谷幽篁风动,梦中仙鹤月明。 辗转千秋豪情在,乘风翱翔志不移。

【编译原理】LR(1)分析法:C/C++实现 第2张

【编译原理】LR(1)分析法:C/C++实现 第3张

目录

1. 编译原理之LR(1)分析法概念

1.1 编译原理

1.2 LR(1)分析法

2. 逆波兰式的产生及计算

2.1 实验目的

2.2 实验要求

2.3.1 算法流程图

2.3.2 参考程序代码

2.3 实验内容

2.3.1 实验解决代码

2.3.2 程序解释

2. 实验心得


1. 编译原理之LR(1)分析法概念

1.1 编译原理

编译原理是计算机科学领域的一个重要分支,它研究如何将高级编程语言的源代码转化成计算机能够执行的机器代码或中间代码的过程。编译原理涵盖了编译器的设计和实现,其中编译器是一种将源代码翻译成目标代码的软件工具。编译器的主要任务包括语法分析、词法分析、语义分析、优化和代码生成等环节。

1.2 LR(1)分析法

LR(1)(Left-to-Right, Rightmost derivation with 1 symbol lookahead)分析法是一种用于构建分析器的语法分析方法,通常用于分析上下文无关文法的语法结构,属于LR分析法的一种变种。它是一种强大的自底向上语法分析方法,适用于具有一定复杂性的上下文无关文法,通过使用向前查看符号来处理文法中的二义性,使得可以更精确地分析和理解输入。

🔥资源获取:关注公众号【科创视野】回复  LR分析法源码


2. 逆波兰式的产生及计算

2.1 实验目的

(1)构造LR(1)分析程序,并进行语法分析,判断给出的符号串是否为该文法识别的句子;

(2)了解LR(K)分析方法是严格的从左向右扫描,和自底向上的语法分析方法。

2.2 实验要求

1.对下列文法,用LR(1)分析法对任意输入的符号串进行分析:

(0)E->S

(1)S->BB

(2)B->aB

(3)B->b

2.LR(1)分析表为:

【编译原理】LR(1)分析法:C/C++实现 第4张

(1)若输入

baba#

则输出为:

【编译原理】LR(1)分析法:C/C++实现 第5张

(2)若输入

bb#

则输出为:

【编译原理】LR(1)分析法:C/C++实现 第6张

2.3.1 算法流程图

【编译原理】LR(1)分析法:C/C++实现 第7张

2.3.2 参考程序代码

参考代码(不完整):

/* ACTION表*/
char *action[10][3]={"S3#","S4#",NULL,
		      NULL,NULL,"acc",
		      "S6#","S7#",NULL,
		      "S3#","S4#",NULL,
		      "r3#","r3#",NULL,
		       NULL,NULL,"r1#",
		      "S6#","S7#",NULL,
		       NULL,NULL,"r3#",
		      "r2#","r2#",NULL,
		       NULL,NULL,"r2#"};
/* GOTO表*/
int goto1[10][2]={1,2,
		  0,0,
		  0,5,
		  0,8,
		  0,0,
		  0,0,
		  0,9,
		  0,0,
		  0,0,
		  0,0};
char vt[3]={'a','b','#'};  /*存放终结符*/
char vn[2]={'S','B'};   /*存放非终结符*/
char *LR[4]={"E->S#","S->BB#","B->aB#","B->b#"};  /*存放产生式*/
/*输出状态栈、输出符号栈、输出输入串*/
do{	    y=z;m=0;n=0;              /*y,z指向状态栈栈顶*/	             
               g=top;j=0;k=0;		
              x=c[top];		
              count++;	 printf("%d\t",count);		
             while(m

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]