编译原理——编译基础知识

编译基础知识

语言是什么

1.1,高级语言

  • 语言就是一个记号系统
    • 通过语法来组成语义

1.2,语法规则

  • 如何语言程序可以看成一定字符集
  • 语法使得这串字符串形成一个形式上正确的程序

1.3,词法规则

  • 规定了那些字符串是单词符号

  • 单词符号一般包括:常数,标识符,基本字,算符等等

  • 可以使用正规式和有限自动机理论来描述词法结构进行词法分析

    • 正规式:正确的单词符号
    • 有限自动机:用来比较编写的程序符号和正规式是否一样

1.4,语义

  • 离开语义,语言就是一堆符号的集合

字符

字母表和符号串
  1. 字母表
    • 是符号的非空有穷集合
    • 用∑,V表示
  2. 符号
    • 语言中最基本的单位
  3. 符号串
    • 符号串是字母表中符号组成的又穷序列
    • 空串:不含任何符号的串为空串,记作ε表示
  4. 句子
    • 字母表上符合某种规则构成的串
    • 这种规则可以是构成单词的构造也可以是构成语句的规则
  5. 语言
    • 字母表上句子的集合
  6. 使用a,b,c表示符号;使用α,β,γ表示符号串;使用A,B,C表示集合
符号串集合的运算
  1. 连接(乘积)运算:
    • 定义:若串集A={α1,α2,α3},串集B={β1,β2,β3},则乘积AB={αβ|α∈A and β∈B}
      • 串集自身的乘积称为串集的方幂
      • A的0次方={ε}
  2. 闭包运算
    • 闭包:字母表A的闭包(A*):
      • A* =A0∪A1∪A2∪A3……=A*
      • A上所有符号组成的所有串的集合
    • 正闭包:字符表A的正闭包(A+):
      • A+ =A1∪A2∪A3……=A*-{ε}
      • A上所有符号组成的所有串的集合(不包括空串)
    • 语言:字母表上符合某种规则的语句组成的
      • 字母表上的语言就是字母表上正闭包的子集

文法和语言的关系

  1. 文法的概念

    1. 文法就是描述语言的语法结构的形式规则
  2. 相关概念

    1. 非终结符

      • 出现在规则的左部,用<>括起来,表示一定语法概念的词
      • 非终结符使用VN表示
    2. 终结符

      • 语言中不可分割的字符串,使用终结符集合VT包含
    3. 开始符

      1. 表示所定义的语法范畴的非终结符
      2. 开始符称为识别符号
    4. 产生式

      • 用来定义符号串之间的关系的一组语法规则
      • 形式:A->α(A产生α)
    5. 推导

      • 从开始符号开始,通过使用产生式的右部取代左部,最终产生语言的一个句子的过程
      • 最左(右)推导:每次使用一个规则,以其右部取代符号串最左(右)非终结符
        • 最左推导和最右推导称为规范推导
    6. 规约

      • 规约就是推导的逆过程,从给定的源语言的句子开始,通过产生规则的左部替换右部,最终达到开始符号的过程
      • 最左(右)规约是最右(左)推导的逆过程
        • 最左规约和最右规约为规范规约
    7. 句型

      • 句型是从文法的开始符号S开始的,每步推导(包括0步推导)所得到的字符串α
      • 记作:S-* ->α,其中α属于(VN∪VT)*
      • α是终结符和非终结符并集的闭包
      • 句子:是仅含终结符的句型
    8. 过程
      在这里插入图片描述其中的形容词和名词的组成可以成为主语或者宾语,使用的是深度优先搜索算法,进行逐个的遍历语法,当发现语法不对就进行回溯
      在这里插入图片描述图形化的最左规约方式,这个图就是语法树

    9. 语言:

      • 从S开始通过1步或者1步以上推导得到的句子的集合
      • 记作L(G)。L(G)={α|S-±>α,且α∈VT*}
      • 句型:必须包含非终结符;句子:只有终结符
    10. 巴斯克范式:

      • 使用()提取因子:U->ax|ay|az U->a(x|y|z)

      • 使用{}表示重复次数:<标识符>-><字母>{<字母>|<数字>}上5下0

      • []任选符号:<整数>->[+|-]<数字>{<数字>}文法与语言的形式定义

  3. Chomsky对文法的定义:(VN,VT,P,S)

    • VN非终结符的集合,VT终结符的集合,P文法规则的集合,S开始符号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值