数据库之编译原理

0\1\2\3文法参考网页

文法

认识终结符和非终结符

终结符,通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行
推。

例如:
有文法G2[S]为:
S->Ap
S->Bq
A->a
A->cA
B->b
B->dB
则表示:S 为开始符,S,A,B 为非终结符,而p,q,a,b,c,d 为终结符

文法的类型
  • 0型文法,也称短语文法,能力相当于图灵机,任何0型文法都是递归可枚举的。它是几类文法中限制最少的,所以能见到的文法至少是0型文法。
  • 1型文法,也称上下文有关文法,对应于线性有界自动机,它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。

例,如有A->Ba则|β|=2,|α|=1符合1型文法要求
α→ε也满足1型文法,ε为空

  • 2型文法,也称上下文无关文法,它对应下推自动机。2型文法是在1型文法的基础上,再满足:每一个α→β都有α是非终结符。
  • 3型文法,也称正规文法,它对应于有限状态自动机

第一点:左边必须只有一个字符,且必须是非终结符;
第二点:其右边最多只能有两个字符,且当有两个字符时必须有一个为终结符而另一个为非终结符。当右边只有一个字符时,此字符必须为终结符。
第三点:对于3型文法中的所有产生式,其右边有两个字符的产生式,这些产生式右边两个字符中终结符和非终结符的相对位置一定要固定,也就是说如果一个产生式右边的两个字符的排列是:终结符+非终结符,那么所有产生式右边只要有两个字符的,都必须前面是终结符而后面是非终结符。反之亦然,要么,就全是:非终结符+终结符。

如何判断一个串是否为某个文法的句型

α → β \alpha \rightarrow \beta αβ

正规式

正规式又叫正则表达式,每个正规式对应一个正规文法(3型文法)。

文法产生式正则表达式
规则1A->xB,B->yA=xy
规则2A->xA or yA=x*y
规则3A->x,A->yA=x or y

有穷自动机(有限自动机)

NFA与DFA的定义

NFA,不确定的有限自动机;DFA,确定的有限自动机

  • 一个确定的有限自动机实质为一个五元组。
    M = ( S , ϵ , f , S 0 , Z ) M=\left ( S,\epsilon,f,S_{0},Z \right ) M=(S,ϵ,f,S0,Z)
    其中,S,有限状态集合;ϵ,是一个字母表,每个元素称为输入字符;f,单值状态映射
    f ( s , a ) = s ′ f\left ( s,a \right )=s' f(s,a)=s
    意味着,当前状态s,遇到输入a时,状态会转化为s’。s’会是s的后继状态。
    S0,是S中的一个元素,称为唯一初态;Z是S的子集,称为终极态集合(终态集)。从状态转移图中可以看出,初态为只出不入,终态集为只入不出。

  • 不确定的有限自动机(NFA)与DFA的不同点在于。

  1. NFA的初态并不是唯一确定的。
  2. 确定有限状态自动机对每一个可能的输入只有一个状态的转移,不确定有限状态自动机对每一个可能的输入可以有多个状态转移,接受到输入时从这多个状态转移中非确定地选择一个。

NFA与DFA的转化

  • NFA转化为DFA
Created with Raphaël 2.2.0 根据状态转移图进行集合转化 将每个集合节点化 根据转移情况绘制新的状态转移图
  • 正规式到DFA的转换
    在这里插入图片描述

语法推导树

关注推导树、短语、直接短语、句柄四个概念。
参考网站

算符优先*

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值