编译程序设计艺术理论与实践

编译程序设计艺术理论与实践
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Pittman T.)
2010-01
版次: 1
ISBN: 9787111288107
定价: 55.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 341页
正文语种: 简体中文
原版书名: The Art of Compiler Design: Theory and Practice
29人买过
  •   《编译程序设计艺术理论与实践》详细介绍了编译程序设计中的词法分析(扫描程序)、语法分析(分析程序)、语义分析(约束程序)、中间代码优化以及代码生成等内容。作为颇受好评的编译原理优秀入门教材,《编译程序设计艺术理论与实践》的最大特色是在全书贯穿了一种基于文法的指导思路:在语法分析阶段,该书遵循了一般教材采用的上下文无关文法;在语义分析阶段,采用以上下文无关文法为基础的属性文法;而在代码优化和代码生成阶段,则采用了变换属性文法。书中最后还给出变换属性文法的一种自编译实现。此外,《编译程序设计艺术理论与实践》还探讨了面向不同计算机体系结构的代码生成技术以及非过程式语言的编译问题。
      《编译程序设计艺术理论与实践》适合作为高等院校计算机科学与技术、软件工程以及相关专业编译原理课程的教学参考书,同时也可供计算机语言及其处理技术爱好者参考。 出版者的话
    译者序
    前言
    第1章编译程序理论概述
    1.1简介
    1.2语言与翻译程序
    1.3文法的作用
    1.4若干例子
    1.5编译程序的结构
    1.5.1词法分析
    1.5.2字符串表
    1.5.3语法分析
    1.5.4约束
    1.5.5符号表
    1.5.6代码生成
    1.5.7优化
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第2章文法:乔姆斯基层次
    2.1简介
    2.2文法
    2.2.1字母表与串
    2.2.2非终结符与产生式
    2.2.3若干文法例子
    2.3乔姆斯基层次
    2.4文法及其机器
    2.4.1图灵机
    2.4.2线性有界自动机
    2.4.3下推自动机
    2.4.4删除空产生式
    2.4.5比较上下文无关文法和上下文敏感文法
    2.4.6有穷状态自动机
    2.5空串与空语言
    2.6规范推导
    2.7二义性
    2.8文法思维的艺术
    2.8.1有穷状态自动机的局限性
    2.8.2上下文无关文法的计数
    2.8.3对上下文敏感
    小结
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第3章扫描程序和正则语言
    3.1词法分析简介
    3.2正则表达式
    3.2.1正则表达式代数
    3.2.2正则表达式的形式化特性
    3.3文法与正则表达式的转换
    3.4有穷状态自动机
    3.5不确定的有穷状态自动机
    3.6将文法转换为自动机
    3.7自动机的转换
    3.7.1删除空环路
    3.7.2删除空变迁
    3.7.3自动机的确定化
    3.7.4自动机的约简
    3.8将自动机转换为文法
    3.9左线性文法
    3.10在计算机上实现有穷状态自动机
    3.11扫描程序的特殊实现问题
    3.11.1输入字母表的大小
    3.11.2扫描程序自动机中的停机状态
    3.11.3过滤空格与注释
    3.11.4单词的输出
    3.12字符串表的实现
    3.12.1基于线性查找的实现
    3.12.2基于散列表的实现
    3.12.3基于查找树的实现
    3.12.4不同实现的性能比较
    3.13保留字
    3.14使用扫描程序生成工具
    小结
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第4章分析程序和上下文无关语言
    4.1简介
    4.2下推自动机
    4.2.1停机条件的等价性
    4.2.2根据上下文无关文法构造下推自动机
    4.3LL(k)条件
    4.3.1First和和Follow集
    4.3.2选择集
    4.4左递归
    4.5公共左因子
    4.6为上下文无关文法扩展正则表达式运算符
    4.7使用分析程序生成工具
    4.7.1使用TAG编译程序
    4.7.2使用YACC
    4.8递归下降分析程序
    4.9递归下降分析程序作为下推自动机
    小结
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第5章语义分析与属性文法
    5.1简介
    5.2属性文法
    5.2.1继承属性和综合属性
    5.2.2属性值流
    5.3非终结符作为属性求值函数
    5.4符号表作为属性
    5.5Micro-Modula的属性文法
    5.6在TAG编译程序中使用属性
    5.7作用域与标识符类别
    5.7.1标识符作用域的文法
    5.7.2标识符作用域例子分析
    5.7.3符号表的其他问题
    5.8在递归下降中实现属性
    5.9实现符号表
    小结
    符号
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第6章语法制导代码生成
    6.1简介
    6.2计算机硬件体系结构
    6.3栈机器的表达式求值
    6.4IttyBitty栈机器
    6.5带属性的代码生成
    6.5.1运算符优先级与结合性质
    6.5.2程序结构的语义
    6.5.3向前分支问题
    6.6过程和函数的代码生成
    6.7块结构的栈帧管理
    6.7.1帧与帧指针
    6.7.2静态链与动态链
    6.7.3帧指针的Display向量
    6.8其他数据类型
    6.9结构化数据类型
    6.9.1指针类型
    6.9.2记录结构
    6.9.3数组的语义
    6.10其他数据结构
    6.11IttyBitty栈机器的输入和输出
    6.12语法制导语义的局限
    6.13手工编写编译程序的代码生成
    6.14语法制导语义的应用
    6.14.1TinyBASIC解释程序
    6.14.2Micro-Modula美化打印工具
    小结
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第7章自底向上分析程序的自动化
    设计
    7.1简介
    7.2LR(k)分析程序
    7.2.1构造LR(k)状态机
    7.2.2一个LR(2)分析程序
    7.2.3归约与移进操作
    7.3冲突
    7.4例子:文法G2的冲突解析
    7.5在栈中保存状态
    7.6其他LR(k)分析程序:SLR
    7.7LALR(k)分析程序
    7.8自底向上分析程序的实现
    7.9出错恢复
    7.10LR分析程序中的属性求值
    小结
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第8章变换属性文法
    8.1简介
    8.2程序的树表示
    8.3树变换文法
    8.3.1非生成的文法
    8.3.2一个TAG例子
    8.3.3求值次序
    8.3.4信息流与存储
    8.3.5带树值的属性
    8.3.6不确定的分析
    8.4.组合串文法与树文法
    8.5TAG中的类型检查
    8.6基于变换的代码优化
    8.6.1数据流分析
    8.6.2数据流分析中使用属性文法
    8.7中间代码树表示的替代方案
    8.7.1四元式的数据流
    8.7.2循环的数据流分析
    8.8实用优化变换综述
    8.8.1模拟执行优化的类别
    8.8.2常量折叠分析
    8.8.3使用值编号检测公共子表达式
    8.8.4左移动提升
    8.8.5右移动提升
    8.8.6无用代码以及其他从右到左的数据流分析
    8.8.7数学等式与代码选择
    8.8.8循环结构分析
    8.9实现抽象语法树
    8.10实现TAG驱动的树变换
    小结
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第9章代码生成与优化
    9.1简介
    9.2循环优化
    9.2.1循环的范围分析
    9.2.2归纳变量
    9.2.3循环展开
    9.3寄存器与内存分配
    9.3.1寄存器分配算法
    9.3.2表达式中的寄存器分配
    9.3.3更好的寄存器分配数据流分析
    9.3.4循环的寄存器分配
    9.3.5寻址模式
    9.3.6分支寻址选择
    9.3.7分支链
    9.4代码生成的复杂性
    9.4.1指令选择
    9.4.2强度削弱
    9.5专用指令
    9.5.1RISC和流水线处理器调度
    9.5.2向量处理器
    9.6代码优化的变形
    9.6.1代码优化的分类
    9.6.2窥孔优化
    小结
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第10章非过程式语言
    10.1简介
    10.2应用式语言的编译
    10.2.1Lisp语言的一些概念
    10.2.2尾递归
    10.2.3实现一个应用式语言的编译程序
    10.3变换属性文法的编译程序
    10.3.1TAG编译程序的组成部分
    10.3.2文法中的迭代运算符
    10.3.3向用户报告语法错误
    10.3.4自动构造扫描程序
    10.3.5TAG编译程序的语法分析
    10.3.6树变换
    10.3.7语法错误停机
    小结
    关键术语
    练习
    复习小测验
    进一步阅读
    附录AIttyBittyModula语法图
    附录BTAG编译程序的TAG
    附录CIttyBitty栈机器的指令集
    附录D四种计算机的代码生成表
  • 内容简介:
      《编译程序设计艺术理论与实践》详细介绍了编译程序设计中的词法分析(扫描程序)、语法分析(分析程序)、语义分析(约束程序)、中间代码优化以及代码生成等内容。作为颇受好评的编译原理优秀入门教材,《编译程序设计艺术理论与实践》的最大特色是在全书贯穿了一种基于文法的指导思路:在语法分析阶段,该书遵循了一般教材采用的上下文无关文法;在语义分析阶段,采用以上下文无关文法为基础的属性文法;而在代码优化和代码生成阶段,则采用了变换属性文法。书中最后还给出变换属性文法的一种自编译实现。此外,《编译程序设计艺术理论与实践》还探讨了面向不同计算机体系结构的代码生成技术以及非过程式语言的编译问题。
      《编译程序设计艺术理论与实践》适合作为高等院校计算机科学与技术、软件工程以及相关专业编译原理课程的教学参考书,同时也可供计算机语言及其处理技术爱好者参考。
  • 目录:
    出版者的话
    译者序
    前言
    第1章编译程序理论概述
    1.1简介
    1.2语言与翻译程序
    1.3文法的作用
    1.4若干例子
    1.5编译程序的结构
    1.5.1词法分析
    1.5.2字符串表
    1.5.3语法分析
    1.5.4约束
    1.5.5符号表
    1.5.6代码生成
    1.5.7优化
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第2章文法:乔姆斯基层次
    2.1简介
    2.2文法
    2.2.1字母表与串
    2.2.2非终结符与产生式
    2.2.3若干文法例子
    2.3乔姆斯基层次
    2.4文法及其机器
    2.4.1图灵机
    2.4.2线性有界自动机
    2.4.3下推自动机
    2.4.4删除空产生式
    2.4.5比较上下文无关文法和上下文敏感文法
    2.4.6有穷状态自动机
    2.5空串与空语言
    2.6规范推导
    2.7二义性
    2.8文法思维的艺术
    2.8.1有穷状态自动机的局限性
    2.8.2上下文无关文法的计数
    2.8.3对上下文敏感
    小结
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第3章扫描程序和正则语言
    3.1词法分析简介
    3.2正则表达式
    3.2.1正则表达式代数
    3.2.2正则表达式的形式化特性
    3.3文法与正则表达式的转换
    3.4有穷状态自动机
    3.5不确定的有穷状态自动机
    3.6将文法转换为自动机
    3.7自动机的转换
    3.7.1删除空环路
    3.7.2删除空变迁
    3.7.3自动机的确定化
    3.7.4自动机的约简
    3.8将自动机转换为文法
    3.9左线性文法
    3.10在计算机上实现有穷状态自动机
    3.11扫描程序的特殊实现问题
    3.11.1输入字母表的大小
    3.11.2扫描程序自动机中的停机状态
    3.11.3过滤空格与注释
    3.11.4单词的输出
    3.12字符串表的实现
    3.12.1基于线性查找的实现
    3.12.2基于散列表的实现
    3.12.3基于查找树的实现
    3.12.4不同实现的性能比较
    3.13保留字
    3.14使用扫描程序生成工具
    小结
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第4章分析程序和上下文无关语言
    4.1简介
    4.2下推自动机
    4.2.1停机条件的等价性
    4.2.2根据上下文无关文法构造下推自动机
    4.3LL(k)条件
    4.3.1First和和Follow集
    4.3.2选择集
    4.4左递归
    4.5公共左因子
    4.6为上下文无关文法扩展正则表达式运算符
    4.7使用分析程序生成工具
    4.7.1使用TAG编译程序
    4.7.2使用YACC
    4.8递归下降分析程序
    4.9递归下降分析程序作为下推自动机
    小结
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第5章语义分析与属性文法
    5.1简介
    5.2属性文法
    5.2.1继承属性和综合属性
    5.2.2属性值流
    5.3非终结符作为属性求值函数
    5.4符号表作为属性
    5.5Micro-Modula的属性文法
    5.6在TAG编译程序中使用属性
    5.7作用域与标识符类别
    5.7.1标识符作用域的文法
    5.7.2标识符作用域例子分析
    5.7.3符号表的其他问题
    5.8在递归下降中实现属性
    5.9实现符号表
    小结
    符号
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第6章语法制导代码生成
    6.1简介
    6.2计算机硬件体系结构
    6.3栈机器的表达式求值
    6.4IttyBitty栈机器
    6.5带属性的代码生成
    6.5.1运算符优先级与结合性质
    6.5.2程序结构的语义
    6.5.3向前分支问题
    6.6过程和函数的代码生成
    6.7块结构的栈帧管理
    6.7.1帧与帧指针
    6.7.2静态链与动态链
    6.7.3帧指针的Display向量
    6.8其他数据类型
    6.9结构化数据类型
    6.9.1指针类型
    6.9.2记录结构
    6.9.3数组的语义
    6.10其他数据结构
    6.11IttyBitty栈机器的输入和输出
    6.12语法制导语义的局限
    6.13手工编写编译程序的代码生成
    6.14语法制导语义的应用
    6.14.1TinyBASIC解释程序
    6.14.2Micro-Modula美化打印工具
    小结
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第7章自底向上分析程序的自动化
    设计
    7.1简介
    7.2LR(k)分析程序
    7.2.1构造LR(k)状态机
    7.2.2一个LR(2)分析程序
    7.2.3归约与移进操作
    7.3冲突
    7.4例子:文法G2的冲突解析
    7.5在栈中保存状态
    7.6其他LR(k)分析程序:SLR
    7.7LALR(k)分析程序
    7.8自底向上分析程序的实现
    7.9出错恢复
    7.10LR分析程序中的属性求值
    小结
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第8章变换属性文法
    8.1简介
    8.2程序的树表示
    8.3树变换文法
    8.3.1非生成的文法
    8.3.2一个TAG例子
    8.3.3求值次序
    8.3.4信息流与存储
    8.3.5带树值的属性
    8.3.6不确定的分析
    8.4.组合串文法与树文法
    8.5TAG中的类型检查
    8.6基于变换的代码优化
    8.6.1数据流分析
    8.6.2数据流分析中使用属性文法
    8.7中间代码树表示的替代方案
    8.7.1四元式的数据流
    8.7.2循环的数据流分析
    8.8实用优化变换综述
    8.8.1模拟执行优化的类别
    8.8.2常量折叠分析
    8.8.3使用值编号检测公共子表达式
    8.8.4左移动提升
    8.8.5右移动提升
    8.8.6无用代码以及其他从右到左的数据流分析
    8.8.7数学等式与代码选择
    8.8.8循环结构分析
    8.9实现抽象语法树
    8.10实现TAG驱动的树变换
    小结
    符号
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第9章代码生成与优化
    9.1简介
    9.2循环优化
    9.2.1循环的范围分析
    9.2.2归纳变量
    9.2.3循环展开
    9.3寄存器与内存分配
    9.3.1寄存器分配算法
    9.3.2表达式中的寄存器分配
    9.3.3更好的寄存器分配数据流分析
    9.3.4循环的寄存器分配
    9.3.5寻址模式
    9.3.6分支寻址选择
    9.3.7分支链
    9.4代码生成的复杂性
    9.4.1指令选择
    9.4.2强度削弱
    9.5专用指令
    9.5.1RISC和流水线处理器调度
    9.5.2向量处理器
    9.6代码优化的变形
    9.6.1代码优化的分类
    9.6.2窥孔优化
    小结
    缩略词
    关键术语
    练习
    复习小测验
    编译程序实验项目
    进一步阅读

    第10章非过程式语言
    10.1简介
    10.2应用式语言的编译
    10.2.1Lisp语言的一些概念
    10.2.2尾递归
    10.2.3实现一个应用式语言的编译程序
    10.3变换属性文法的编译程序
    10.3.1TAG编译程序的组成部分
    10.3.2文法中的迭代运算符
    10.3.3向用户报告语法错误
    10.3.4自动构造扫描程序
    10.3.5TAG编译程序的语法分析
    10.3.6树变换
    10.3.7语法错误停机
    小结
    关键术语
    练习
    复习小测验
    进一步阅读
    附录AIttyBittyModula语法图
    附录BTAG编译程序的TAG
    附录CIttyBitty栈机器的指令集
    附录D四种计算机的代码生成表
查看详情
12
系列丛书 / 更多
编译程序设计艺术理论与实践
Java编程思想(第4版)
[美]Bruce Eckel 著;陈昊鹏 译
编译程序设计艺术理论与实践
数据挖掘:概念与技术(原书第3版)
[美]Jiawei、[美]Micheling、[美]Jian Pei 著;范明、孟小峰 译
编译程序设计艺术理论与实践
算法导论(原书第3版)
[美]Thomas、[美]Charles、[美]Ronald、[美]Clifford Stein 著;殷建平、徐云、王刚 译
编译程序设计艺术理论与实践
数据结构与算法分析:Java语言描述
[美]马克·艾伦·维斯 著;陈越 译
编译程序设计艺术理论与实践
C程序设计语言(第2版·新版) 习题解答
吉米拜尔 著;杨涛 译;[美]汤朵
编译程序设计艺术理论与实践
C程序设计语言(第二版)
[美]Brian(布莱恩·克尼汉)、[美]Dennis M.Ritchie(丹尼斯·里奇) 著;徐宝文、李志 译
编译程序设计艺术理论与实践
深入理解计算机系统(原书第3版)
[美]兰德尔 E.布莱恩特(Randal E.·Bryant) 著;龚奕利、贺莲 译
编译程序设计艺术理论与实践
计算机科学丛书·云计算:概念、技术与架构
[美]Thomas、[英]Zaigham、[巴西]Ricardo Puttini 著;龚奕利、贺莲、胡创 译
编译程序设计艺术理论与实践
数据库系统概念:(原书第6版)
[美]Abraham、Henry、S.Sudarshan 著;杨冬青、李红燕、唐世渭 译
编译程序设计艺术理论与实践
计算机科学导论:原书第3版
[美]Behrouz Forouzan 著;刘艺 译
编译程序设计艺术理论与实践
编译原理:原理、技术与工具
[美]阿霍 著;赵建华 译
编译程序设计艺术理论与实践
软件工程:实践者的研究方法(原书第8版 本科教学版)
[美]罗杰 S. 普莱斯曼 著;郑人杰、马素霞 译
相关图书 / 更多
编译程序设计艺术理论与实践
编译原理与实践
鲁斌
编译程序设计艺术理论与实践
编译器设计原理
谌志群 著
编译程序设计艺术理论与实践
编译方法导论
史涯晴 贺汛
编译程序设计艺术理论与实践
编译原理及编译程序构造(第3版)/普通高校计算机专业精品教材系列
云挺、秦振松、薛联凤 著
编译程序设计艺术理论与实践
编译技术与应用(微课视频版·题库版)
杨金民 陈果 黎文伟
编译程序设计艺术理论与实践
编译原理简明教程
费蓉
编译程序设计艺术理论与实践
编译原理
刘茂福、黄革新、胡慧君 编
编译程序设计艺术理论与实践
编译原理及实现(第2版)
姜淑娟;谢红侠;张辰;刘兵
编译程序设计艺术理论与实践
编译原理教程(第五版)
李玉军 著
编译程序设计艺术理论与实践
编译原理
李维华;岳昆;周小兵
编译程序设计艺术理论与实践
编译原理(英文版)
雷向东、龙军、雷振阳 编
编译程序设计艺术理论与实践
编译原理及编译程序构造
薛联凤
您可能感兴趣 / 更多
编译程序设计艺术理论与实践
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
编译程序设计艺术理论与实践
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
编译程序设计艺术理论与实践
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
编译程序设计艺术理论与实践
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
编译程序设计艺术理论与实践
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
编译程序设计艺术理论与实践
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
编译程序设计艺术理论与实践
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
编译程序设计艺术理论与实践
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
编译程序设计艺术理论与实践
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
编译程序设计艺术理论与实践
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
编译程序设计艺术理论与实践
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
编译程序设计艺术理论与实践
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译