软考之文法
来源:互联网 发布:js包装函数是什么 编辑:程序博客网 时间:2024/04/30 19:20
要软考了,文法是一个考点,有的同学感觉这部分不太好理解,之所以不太好理解,很大的原因是教程里的叙述 ——云里雾里,可能是为了表明自己身为“教程”、具有不可动摇的地位,所以狐假虎威了一次吧;明天周四活动技术分享,本person自告奋勇地要讲关于这方面的东西,所以私下里做了一个PPT,感觉PPt不是很差,所以直接写成博客(*^__^*)
【基础】
终结符:
不能单独出现在推导式左边,为最终状态;a/b/c/d……
非终结符:
推导过程中的占位符;一般大写A/B/C/D/……
α—>β 非终结符—>终极符
【0型文法】
短语文法
设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而β∈(VN∪VT)*,则G是一个0型文法;
其实就一句话:α至少有一个大写字母
【1型文法】
上下文有关文法
对应于线性有界自动机。它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。有一个特例α→ε也满足1型文法,这个很容易理解吧;
也是一句话:|β|>=|α|【2型文法】
上下文无关文法
它对应于下推自动机;在1型文法的基础上,再满足:每一个α→β都有α是非终结符。
what's this‘s’“一句话”?
【3型文法】
正规文法
对应于有限状态自动机;在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性)
第一点:左边必须只有一个非终结符;
第二点:右边最多只能有两个字符,且当有两个字符时必须有一个为终结符而另一个为非终结符;当右边只有一个字符时,此字符必须为终结符。
第三点:右边有两个字符的产生式,两个字符中终结符和非终结符的相对位置一定要固定,也就是说如果一个产生式右边的两个字符的排列是:终结符+非终结符,那么所有产生式右边只要有两个字符的,都必须前面是终结符而后面是非终结符。反之亦然,要么,就全是:非终结符+终结符。
右线性 和 左线性
两套规则不能同时出现在一个语法中;
只能完全满足其中的一个,才能算 3型文法
小结:
0型:α 至少包含一个非终结符
1型: |β|>=|α|
2型: α→β都有α是非终结符
3型:A→α|αB(右线性)orA→α|Bα(左)
- 软考之文法
- 软考之路——文法
- 【软考总结】——编译原理之文法
- 软考编译原理:文法
- 【软考】(一)编译原理-文法
- 软考笔记-编译原理-文法
- 【软考】——编译原理:文法的简单理解
- 软考——编译原理中的文法以及自动机
- 【软考之路】软考总结
- 软考之路
- 软考之计算机病毒
- 软考之软件工程
- 软考之J2SE
- 软考之数据结构
- 软考之算法
- 软考之数据结构
- 软考之操作系统
- 软考之---数据库
- 仅此而已的8,9月の总结
- NOIP2016提高组 五校联考1 总结
- 3.6 响应系统设置的事件(Configuration类)
- DEVC++(2)多文件实现重载运算符的十六进制数类
- Makefile
- 软考之文法
- 前端面试题汇总(二)含解答
- UOJ 58 [WC2013]糖果公园
- 天天写业务代码,如何成为技术大牛?
- 地域性与忽略大小写的字符串比较
- Codeforces 230B
- jzoj 4812. 【NOIP2016提高A组五校联考2】string 排列组合+乘法逆元
- nginx.org的Using nginx as HTTP load balancer页面翻译
- Leetcode 286. Walls and Gates (Google面试题 BFS,记忆化搜索)