您的位置:首页 > 其它

编译原理[笔记] 第二章-文法和语言的概念和表示

2019-01-06 03:00 218 查看

文法和语言的概念和表示

  • 文法和语言的形式定义
  • 语法树与二义性文法
  • 文法相关的其它知识
  • 第二章 文法和语言的概念和表示

    文法的非形式讨论

    1.文法

    文法是对语言结构的定义与描述。即从形式上用于描述和规定语言结构的称为“文法”(或称为“语法”)。
    所谓文法是在 形式上 对句子结构的定义与描述,而未涉及语义问题。

    2.语法规则

    我们通过建立一组规则,来描述句子的语法结构。规定用“::=”表示“由……组成”。
    例如:
    <句子>::=<主语><谓语>
    <主语>::=<代词>|<名词>
    <代词> ::=你|我|他
    <名词>::= 王民|大学生|工人|英语
    <谓语>::=<动词><直接宾语>
    <动词>::=是|学习
    <直接宾语>::=<代词>|<名词>

    3.由规则推导句子

    有了一组规则之后,可以按照一定的方式用它们去推导或产生句子。
    推导方法:从一个要识别的符号开始推导,即用相应规则的右部来替代规则的左部,每次仅用一条规则去进行推导。
    <句子> => <主语><谓语>
    <主语><谓语> => <代词><谓语>
    …… ……
    这种推导一直进行下去,直到所有带< >的符号都由终结符号替代为止。
    说明:
    (1) 有若干语法成分同时存在时,我们总是从 最左的语法成
    分进行推导,这称之为最左推导。类似地还有最右推导(一般推导、规范推导)。
    (2) 除了最左和最右推导,还可能存在其它形式的推导。
    (3) 从一组规则可推出不同的句子

    4.语法树

    我们用语法树来描述一个句子的语法结构。语法树的叶子节点是句子的单词,非叶子节点的是语法成分。

    文法和语言的形式定义

    1.文法的形式定义

    文法G =(Vn,Vt,P,Z)
    Vn:非终结符号集
    Vt:终结符号集
    P:产生式或规则的集合
    Z:开始符号(识别符号) Z∈Vn
    注:
    ①V=Vn ∪ Vt 称为文法的字汇表
    ②规则:规则是一个有序对(U, x), 通常写为 U ::= x 或U→x(其中U∈Vn, x∈V* 因此也有|U| = 1且|x| >= 0)
    ③给定一个文法,实际只需给出产生式集合,并指定识别符号。(识别符号一般约定为第一条规则的左部符号)

    例:无符号整数的文法:
    G[<无符号整数>]=(Vn,Vt,P,Z)
    Vn={<无符号整数>,<数字串>, <数字>}
    Vt = { 0, 1, 2, 3, … 9 }
    P = {<无符号整数> → <数字串>
    <数字串> → <数字串> <数字>
    <数字串> → <数字>
    <数字> →0
    <数字> →1
    …………
    <数字> →9 }
    Z = <无符号整数>

    2.推导的形式定义

    一步推导

    注:当符号串已没有非终结符号时,推导就必须终止。因为终结符不可能出现在规则左部,所以将在规则左部出现的符号称为非终结符号。
    多步推导

    任意步推导

    规范推导

    直观意义上:规范推导=最右推导

    3.语言的形式定义

    对于文法G[Z]:
    (1)句型x:由开始符号Z经任意步推导得到x,且x∈V*;
    (2)句子x:由开始符合Z经1多步推导得到x,且x∈Vt*
    (3)语言L:所有根据该文法推到得到的句子组成的集合

    形式语言理论可以证明以下两点:
    (1)G →L(G):已知文法,求语言,通过推导;
    (2)L(G)→G1,G2,……,Gn:已知语言,构造文法,无形式化方法,更多是凭经验。

    等价文法:G和G’是两个不同的文法,若 L(G) = L(G’) ,
    则G和G’为等价文法。

    4.递归文法

    ①递归规则:规则右部有与左部相同的符号
    对于 U::= xUy
    若x=ε,即U::= Uy,左递归;
    若y=ε,即U::= xU,右递归。

    ②递归文法:文法G,存在U ∈Vn
    if U=+=>…U…, 则G为递归文法(自嵌入递归);
    if U=+=>U…, 则G为左递归文法;
    if U=+=>…U, 则G为右递归文法。

    ③左递归文法的缺点:不能用自顶向下的方法来进行语法分析

    ④递归文法的优点:可用有穷条规则,定义无穷语言

    5.句型的短语、简单短语和句柄

    给定文法G[Z], w::=xuy∈V+,为该文法的句型,
    若 Z==> xUy, 且U=+=>u, 则u是句型w相对于U的短语;
    若 Z==> xUy, 且U==>u, 则u是句型w相对于U的简单短语。
    其中U ∈Vn,u ∈V+,x, y ∈V*

    短语的直观理解:短语是前面句型中的某个非终结符所能推出
    符号串
    句柄:任一句型的最左简单短语称为该句型的句柄

    给定句型找句柄的步骤:
    短语-> 简单短语-> 句柄

    注意:短语、简单短语是相对于句型而言。一个句型
    可能有多个短语、简单短语,但句柄只能有一个。

    语法树与二义性文法

    1.判断二义性文法
    依据:文法所能产生的句子,可以用不同的推导原则(使用产生式顺序不同)将其推导出来。如果文法是非二义性文法,那么语法树的生成规律不同,但最终生成的语法树形状完全相同;如果文法是二义性文法,那么最终生成的语法树形状有可能不相同。
    方法1:若对于一个文法的某一句子存在两棵不同的语法树(或两个不同的 规范推导);或者自底向上看,对于同一个规范句型,存在两个不同的句柄。则该文法是二义性文法,否则是无二义性文法。
    方法2:即不改变二义性文法,而是确定一种编译算法,使该算法满足无二义性充分条件。
    文法二义性的判定??:在理论上已经证明:文法的二义性是不可判定的,即不可能构造出一个算法,通过有限步骤来判定任一文法是否有二义性。解决方法:提出一些限制条件,称为无二义性的充分条件。当文法满足这些条件时,就可以判定文法是无二义性的。
    2.子树与短语
    子树:子树由语法树中的某个结点(子树的根)连同它向下派生的部分所组成。
    关系:某子树的末端结点按自左向右顺序为句型中的符号串,则该符号串为该句型的相对于该子树根的短语。
    3.规约:自下而上地修剪子树的末端结点,直至把整棵树剪掉(留根),每剪一次对应一次规约。
    规范规约:对句型中最左简单短语(句柄)进行的规约称为规范规约。
    注:规范规约与规范推导 互为逆过程

    规范句型:通过规范推导或规范规约所得到的句型称为规范句型。

    文法相关的其它知识

    句子的分析

    句子的分析是词法分析和语法分析所要做的工作
    任务:给定G[Z]: S ∈ Vt*, 判定是否有S ∈ L(G[E])

    文法的实用限制

    有害规则:若文法中有如U::=U的规则,则这就是有害规则,它会引起二义性。(我推我自己)
    多余规则:
    (1)在推导文法的所有句子中,始终用不到的规则。即该规则的左部非终结符不出现在任何句型中。(用不到)
    (2)在推导句子的过程中,一旦使用了该规则,将推不出任何终结符号串。即该规则中含有推不出任何终结符号串的非终结符。(死胡同)
    若某文法中无有害规则或多余规则,则称该文法是 压缩过的

    文法的其他表示法

    1.扩充的BNF表示:

    BNF的元符号: <, >, ::=, |
    扩充的BNF的元符号: <, >, ::=, |, {, }, [, ] (, )
    1.{ t }:t可重复连接0到任意多次。如果有限制(上标m,下标n),则可重复连接n到m次。
    2.[ t ]:t可有可无。
    3.( ):元符号,注意不要与Vt混淆。

    2.语法图

    3.文法和语言的分类

    形式语言:用文法和自动机所描述的没有语义的语言。
    语言定义: L(G[Z]) = { x | x∈Vt*, Z =+=> x }
    文法定义:乔姆斯基将所有文法都定义为一个四元组:
    G=(Vn,Vt,P,Z)
    Vn:非终结符号集
    Vt:终结符号集
    P:产生式或规则的集合
    Z:开始符号(识别符号) Z∈Vn
    文法和语言分类
    文法和语言分类:0型、1型、2型、3型
    这几类文法的差别在于对产生式施加不同的限制。

    文法类型 别称 对产生式的限制 可被接受目标
    0型文法 短语结构文法 P:u::=v 其中 u∈V+,v∈V* 图灵机(Turing)
    1型文法 上下文敏感(有关)文法 P: xUy::= xuy 其中 U∈Vn,x、y、u∈V* 线性界限自动机
    2型文法 上下文无关文法 P: U::= u 其中 U∈Vn,u∈V* 下推自动机
    3型文法 正则文法 ①P: U::=T 或 U::=wT 其中 U、w∈VnT∈Vt(右线性) ②P:U::=T 或 U::=Tw 其中 U、w∈Vn T∈Vt(左线性) 有穷自动机


    (1)2型文法与BNF表示相等价。
    (2)3型语言(L3)又称正则语言、正则集合
    (3)四种语言的关系:

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: