博客
关于我
编译原理_复习笔记1-2章
阅读量:74 次
发布时间:2019-02-26

本文共 967 字,大约阅读时间需要 3 分钟。

引论与语法描述介绍

编译程序的主要任务是将一种高级语言程序转换为低级语言程序(如汇编或机器码)。在描述语言的词法和语法规则时,正规式(Regular Expression)和有限自动机(Finite Automaton)是非常有效的工具。

关键概念解析

  • 标识符与名字:标识符是语义概念,而名字是语法概念。
  • 词法与语法
    • 词法规则主要定义语言中的基本元素,如常数、标识符、算符等,通常用有限自动机来描述。
    • 语法规则定义语言的结构,涵盖表达式、语句、分程序等,通常用上下文无关文法来描述。

语法推导

  • 最左推导:在任何推导步骤中,首先替换最左边的非终结符。
  • 最右推导(规范推导):在任何推导步骤中,首先替换最右边的非终结符,所得句型称为规范句型。

文法分类

语言的文法可以分为以下几种类型:

  • 0型文法(最宽泛):产生式形如 α → ß,其中 α 是由终结符和非终结符组成的任意长度的串,且至少包含一个非终结符。
  • 1型文法(上下文无关文法):产生式形如 α → ß,且 α 的长度不超过 ß 的长度(仅 S → ℇ 例外)。
  • 2型文法(非确定下推自动机):产生式形如 A → ß,其中 A 是非终结符,ß 是终结符和非终结符的任意长度的串。
  • 3型文法(有限自动机):产生式形如 A → αB、A → Bα 或 A → α,其中 α 是一个单一的终结符或非终结符。
  • 文法应用

    • 2型文法:常用于语法分析,编译器在解析源程序时通常使用非确定性下推自动机。
    • 3型文法:常用于词法分析,其限制更为严格,适用于需要更强类型检查的语言。

    语言与句型

    • 句型:由文法产生的由终结符和非终结符组成的序列。
    • 句子:仅由终结符组成的句型。
    • 语言:由文法产生的所有句子的集合。

    关键概念

    • :从头到尾扫描源文本。
    • 开始符:非终结符,通常用大写字母表示。
    • 终结符:无法再进行推导的符号。
    • 文法推导:从句型推导到句子,因为句子只能由终结符组成。

    闭包与推导树

    • *V^ 和 V^+**:V 的闭包和正规闭包。
    • 语法树:描述句型推导的图形。
    • 语言的二义性:如果无二义性文法无法描述该语言,则该语言为二义语言。

    本文旨在提供语言结构的基础知识,帮助理解编译原理中的关键概念。编译器开发者在实际工作中通常会专注于2型和3型文法的实现,这两种文法类型在语法分析和词法分析中各有优势。

    转载地址:http://rhck.baihongyu.com/

    你可能感兴趣的文章
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>
    python 使用filetype校验文件
    查看>>
    Python 使用flush函数将缓冲区数据立即写磁盘
    查看>>
    python 使用in判断不准确,in不好使
    查看>>
    Python 使用pandas 进行查询和统计详解
    查看>>
    Redis 配置文件redis.conf详细解释
    查看>>
    python网络爬虫(2)——scrapy框架的基础使用
    查看>>
    python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
    查看>>
    Python 使用哈希函数用于加密
    查看>>
    Python 依赖管理的革新——Poetry 深度解析
    查看>>
    python 保留精度及增加去除数字的千位分隔符(金额化数字)
    查看>>
    python 倒计时 9,8,7,。。。。。。0
    查看>>
    Python 入门开发学习笔记之数据的增删改查
    查看>>
    Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
    查看>>
    Python 八大排序算法合集
    查看>>
    python 关于epoll的学习
    查看>>
    Python 内存管理
    查看>>
    Python 内嵌函数:它们有什么用处?
    查看>>