编译原理第一章概述,文法,语言学习总结

1.编译程序:

        翻译程序,源语言翻译为目标语言

        C语言 ——>汇编语言

2.逻辑过程

词法分析        语法分析        语义分析        中间代码生成优化        目标代码生成优化

词法分析: 最基本的单词分析出来

语法分析:看组成的句子是否有语法错误

语义分析: 分析所写程序具体的含义

3.字母表(符号的集合) 

∑ = {a,b,c} 

aa,ab,aac 都是∑上的符号串                空串ε                长度|ab|=2

对于x=abc,a,ab,abc都是子串,ε不是子串

      4.符号串的头,尾,固有头,固有尾

        符号串的头使得尾不为空,头为固有头,固有尾类似

        5.符号串连接

        x,y为符号串,则他们的连接就是xy

        6.符号串的方幂

        x的n次幂就是把x写n次,x的0次幂等于空串

        7.符号串的集合

        若集合A中的一切元素都是某字母表上的符号串,则A为该字母表上的符号串的集合

        8.空集

        没有任何元素的集合(连空串都没有)

        9.符号串集合的乘积

        AB={x|x∈A,y∈B};        A={1,2}        B={5,6,7}        AB={15,16,17,25,26,27}

        10.字母表∑的闭包(∑*)

        ∑*=∑的零次∪∑的一次∪∑的二次∪∑的三次∪...

        ∑*表示∑上一切长度为n(n>=0)的符号串所组成的集合

        ∑={a,b,c}        ∑*={ε,a,b,c,aa,ab,ac,ba,bb,bc,ca,cb,cc.....}

        ∑的正闭包就是∑*去除ε

        ∑+=∑∑*

        11.文法和语言

        文法G[<标识符>]  :   <标识符> -> <字母>

         (上下文无关文法    <标识符> -> <标识符><数字>

                                            <标识符> -> <标识符><字母>

                                            <字母> -> a/b...../z

                                            <数字> -> 0/1/2...../9

                                                左部        右部

                                              非终结符        除了非终结符都是终结符

        重写规则(产生式):

        元语言符号 ——>和::= 表示“定义为”

        G定义为四元组(VN非终结符集合,VY终结符集合,P重写规则集合,S识别符号)

        VN={<标识符>,<字母>,<数字>}

        VT={只在右边出现的}

        P={<标识符> -> <字母>                默认第一条是文法的开始符号

                      ...

            }

        S=<标识符>

        很多时候,只将四元组的产生式写出来,就可以表示四元组

        v = 233<字母>666        w = 233a666

        <字母> ::= a        v直接推导/产生出w        v => w

                                    w直接归约为v

        如果只用了一步,推到长度为1        没有用规则,推导长度为0

        G[Z]        推导出的x只含有终结符,x为句子        既含有终结符也含有非终结符,x为句型

        文法描述的语言是该文法一切句子的集合

        L (G[S]) = {x | S = >X,且x是句子}

        递归规则:右边出现了左部,在右部中标识符出现在最左边就是左递归,最右边就是右递归

        12.2型文法(上下文无关文法)

                对于文法G        每个规则都有如下性质:非终结符 ——> 终结符或非终结符

        13.语法分析树

                每个节点都是某一终结符/非终结符

                树根        文法的开始符

                分支        有分支的节点一定是非终结符

                子树        这个节点的树根连同向下射出的部分

                简单子树        只含有单层分支的子树

        14.最左推导

        每次的推导都替换最左边的非终结符

        最右推导(规范推导):每一步都是替换最右边的非终结符

        最左归约(规范归约):从最左边开始归约

        规范句型:在最右推导中推导出来的句型

        15.二义性

        一个语法中存在某个句子有两个不同的语法树,就是二义性的

        16.句型分析

        定义:识别一个符号串是否为某文法的句型

        分类:自上而下(推导),自下而上(归约)

        自下而上:

                子树的末端节点的符号串是相对于子树根的短语

                简单子树的末端节点组成的符号串是相对于简单子树根的简单短语(直接短语)

                最左简单子树的末端节点组成的符号串是句柄

  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值