ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ε-产生式的消除

2022-09-09 15:32:33  阅读:127  来源: 互联网

标签:文法 Xi 推导 产生 算法 空串 节点 消除


参考书: 编译原理(第3版)  西北工业大学出版社  第2.4节内容

试图理解书上内容,完全意识流,捏造名词,不保证叙述正确


 ε-产生式:右部为空符号串的产生式,例如A→ε

题意:将ε-产生式消除,而不改变文法所定义的语言。已知如果语言中不含ε,那么可以把ε-产生式全部消除,反之不可以。

算法2.3 

目的:找出所有满足 A=>ε 的非终结符号A。

终极目的:判断语言是否含有ε

定义此处推导的格式A→aB|cD|eF

*追踪*:令推导式左侧为父节点,该父节点有三种子节点的可能,三种可能同时只能出现一种。每种可能中不同的字符为不同子节点。当一个结点任意一种可能的所有子节点被选择时,其父节点也被选择,则称追踪至父节点。

算法流程:选出所有ε作为子节点,一路追踪,所形成的一棵或多棵子树为所求结果。

书上的新定义:当整颗树被选择,即S(根节点)被选中时,称ε属于这种语言,反之不属于。于是算法2.3可以用来判断一个文法是否产生空符号串ε。

算法2.4

条件和目的:空串不属于语言时消除空串。

算法流程:先定义一下这里用到推导的样子:A→X1X2X3...

开始构造新文法,新文法叫P‘;把旧语法树的结点们分为两类,算法2.3追踪出的结点,分成一类,这一类就叫W;剩下的一类叫不属于W。

对于每一条推导,细分右式的X1X2X3...,也就是那些结点们,依次看新推导式Y每一位取什么:

如果 X不属于W,很好啊,Yi = Xi.

如果 X属于W,那这个位置可以取Xi或空,产生两种可能,都放进P';假设W里有 j 个元素,那这个式子就会产生 2个生成式放到P'里。特别地,如果每个 X都属于W,那不要把空串放进去了,只能生成 2- 1 个式子。

算法2.5

条件和目的:空串属于语言时,除了根节点直接推导出空串,其他都不会变成空串。

算法流程:先把原来的文法复制一个出来,执行算法2.4,然后再加一条S→ε,结束了。

标签:文法,Xi,推导,产生,算法,空串,节点,消除
来源: https://www.cnblogs.com/capterlliar/p/16670967.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有