• 编译原理随堂作业四—文法和语言知识梳理


    1.梳理第二章的内容,写一篇理解与总结。

    第二章,我们学习了文法和语言

    1)首先,我们得先了解一下文法的概念。类似于平常说的汉语,也都是有语法的。简单一句“我是大学生”,就包含了主语、谓语、和宾语,用EBNF来表示的话就是如下这样

      <句子>::=<主语>|<谓语>

      <主语>::=<代词>|<名词>

      <代词>::=我|你|他|它

      <名词>::=教师|大学生|.....

      <谓语>::=<动词>|<直接宾语>

      <动词>::=是|学习.....

      <直接宾语>::=<代词>|<名词>

    一个句子的成分有很多,符合上述规则的句子才能成为结构合法的句子。这种规则和对语言的描述我们称之为文法

    2)规则

    规则也称重写规则、产生式或生成式。举个栗子,比如有一个规则A-->a,则称它是一条关于A的产生式。在这块便要提到文法四元组

    先定义一个文法G为文法四元组(VN,VT,P,S),其中

    VN为非终结符集;VT为终结符集;P为规则或产生式的集合;S称作识别符或开始符。VN,VT,P是非空有穷集!

    举个例子

    给定一个文法G=(VN,VT,P,S),VN={S},VT={0,1},P={S-->0S1,S-->01},S为开始符号

    S可以接下去产生0S1,0S1可以接着产生00S11,可以接着生成下去的S就是非终结的、

    而当S-->01的时候式子就终结了,因此0,1称作终结符,以上生成的式子就是生成式,S开始符的意思就不用多作解释了,字面意思

    3)推导

    对一个文法(如上)不断展开就能得到所相应的语言,如上面的文法描述的就是一个0n1n的语言,这个过程,也叫推导

    还是上面的例子G(S):S-->01 | 0S1

    0S1-->0011一步到位,换掉左边一个非终结符变成右边终极符形式,叫做直接推导,也称作一步推导

    最左推导:如果在推导过程中每次都优先换掉最左边的非终结符,就是最左推导啦

    最右推导:就是最左反过来,每次都先换最右边的非终结符。

    举个例子,有文法:    找 i+i

           G(E):

      E=> E + T | T

      T=>T * F | F

      F=>(E)| i

    最左:E --> E+T--->T+T--->F+T--->i+T -->i+F -->i+i

    最右:E -->E+T -->E+F -->E+i -->T+i -->F+i -->i+i

    4)分析树

    分析树,又称推导树,是推导过程的图示化方法,是一棵有序有向树,因此具有树的性质。

    还是上面的例子,找 i*i+i

    最左推导:E=>E+T=>E+F=>E+i=>T+i=>T*F+i=>T*i+i=>F*i+i=>i*i+i

    最右推导:E=>E+T=>T+T=>T*F+T=>F*F+T=>i*F+T=>i*i+T=>i*i+F=>i*i+i

    推导树:

                 

    如上,每个叶节点按顺序排列,便能构成句型。其中,每个子节点往下都构成一个短语,而类似F-->i这种成为直接短语,最左边的直接短语称为句柄

    而且从上面这个例子中能看出,最左推导和最右推导得出的推导树是一样的!

    5)文法的类型

    2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)

    整数n      n-->0|1|2|3|……|8|9

    标识符i     i->a|b|c|……|y|z|A|B|C|……|Y|Z (<字母>{<字母>|<数字>} )

    表达式e     ::= [+|-] <项> {<加减运算符><项>}

    条件语句    ::= if <条件> then <语句>

    赋值语句    ::= <id> :=<表达式>

    复合语句    :: = begin<语句>{;<语句>} end

    函数        ::= =<主函数>

    程序       ::=<分程序>::=[<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句>

  • 相关阅读:
    [转]linux top 命令
    [转]Linux下实用的查看内存和多核CPU状态命令
    Totem ring protocal
    qemu qemusystemx86_64 qemukvm kvm 四个命令
    jsp>过滤器 小强斋
    jsp>Tomcat 6.0数据源配置记录 小强斋
    jsp>过滤器 小强斋
    jsp>监听器 小强斋
    jsp>Tomcat 6.0数据源配置记录 小强斋
    jsp>jsp执行过程 小强斋
  • 原文地址:https://www.cnblogs.com/xiaoAP/p/11597703.html
Copyright © 2020-2023  润新知