热搜关键词: matlab人工智能算法嵌入式雷达电机驱动

pdf

编程语言实现模式

  • 1星
  • 2023-10-04
  • 28.13MB
  • 需要2积分
  • 3次下载
标签: 编程

编程

本书旨在传授构建语言应用(工具)的经验和理念,教读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出31种易于理解且常用的设计模式(每种都包括通用数据结构、算法、策略)。虽然示例是用Java编写的,但相信读者可以触类旁通,利用这些设计模式构建针对其他编程语言(既包括特定领域语言,也包括通用编程语言)的应用。

第1部分  读取输入

第1章  初探语言应用  3

1.1  大局观  3

1.2  模式概览  5

1.3  深入浅出语言应用  9

1.4  为语言应用选择合适的模式  17

第2章  基本解析模式  21

2.1  识别式子的结构  22

2.2  构建递归下降语法解析器  24

2.3  使用文法DSL来构建语法解析器  26

2.4  词法单元和句子  27

第3章  高阶解析模式  49

3.1  利用任意多的向前看符号进行解析  50

3.2  记忆式解析  52

3.3  采用语义信息指导解析过程  52

第2部分  分析输入

第4章  从语法树构建中间表示  73

4.1  为什么要构建树  75

4.2  构建抽象语法树  77

4.3  简要介绍ANTLR  84

4.4  使用ANTLR文法构建AST  86

第5章  遍历并改写树形结构  101

5.1  遍历树以及访问顺序  102

5.2  封装访问节点的代码  105

5.3  根据文法自动生成访问者  107

5.4  将遍历与匹配解耦  110

第6章  记录并识别程序中的符号  131

6.1  收集程序实体的信息  132

6.2  根据作用域划分符号  134

6.3  解析符号  139

第7章  管理数据聚集的符号表  155

7.1  为结构体构建作用域树  156

7.2  为类构建作用域树  158

第8章  静态类型检查  181

第3部分  解释执行

第9章  构建高级解释器  219

9.1  高级解释器存储系统的设计  220

9.2  高级解释器中的符号记录  222

9.3  处理指令  224

第10章  构建字节码解释器  239

10.1  设计字节码解释器  241

10.2  定义汇编语言语法  243

10.3  字节码机器的架构  245

10.4  如何深入  250

第4部分  生成输出

第11章  语言的翻译  278

11.1  语法制导的翻译  280

11.2  基于规则的翻译  281

11.3  模型驱动的翻译  283

11.4  创建嵌套的输出模型  291

第12章  使用模板生成DSL  312

12.1  熟悉StringTemplate  313

12.2  StringTemplate的性质  316

12.2  从一个简单的输入模型生成模板  317

12.4  在输入模型不同的情况下复用模板  320

12.5  使用树文法来创建模板  323

12.6  对数据列表使用模板  330

12.7  编写可改变输出结果的翻译器  336

第13章  知识汇总  348

13.1  在蛋白质结构中查找模式  348

13.2  使用脚本构建三维场景  349

13.3  处理XML  350

13.4  读取通用的配置文件  352

13.5  对代码进行微调  353

13.6  为Java添加新的类型  354

13.7  美化源代码  355

13.8  编译为机器码  356

参考文献  359

索引  361

展开预览

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

开源项目推荐 更多

热门活动

热门器件

随便看看

  • wince5.0 定时器驱动失败求助
    需要实现2ms一次的定时器3精确中断,修改了platform.reg与platform.bib文件,添加了timer.c与timer.h,makefile与source,在oalintr.h中设置了中断号,在armint.c中使能与禁止设置,dir文件也修改了,但是编译系统后没有timer。dll生成,请大家帮忙解答一下,谢谢
  • 血拼中关村!打造正牌“商务人士”之实地测试篇(二)
    卡也买了,老大也用上了,前些天从上海归来,大赞上网卡如何如何好用~~这几天借故把卡借出来,自己也好好玩玩3G。拿到手里,已经没有前些日子刚拿到时的兴奋,更多的是想看看它实地的表现。其实3G目前的发展无非就是速度更快了,三家运营商的配套服务真还有待提高,尤其是目前都在主打的商用这块儿。[img]http://p6.images22.51img1.com/6000/tianjiawo/646d332d
  • MSP430F5529,USB+LCD相关问题,大神进来看一下啊
    在超级终端中键入指令控制单片机(其实就是官网上的例程C1改进了一下),现在我想加一个功能,就是在超级终端中键入字符,同时显示到LCD中,官网例程中有这一实验,可是我自己移植的时候总是出错(各种错误),我是初学者,检查很久也不知道哪里有错。。。。我把这两个例程发在附件里,大神们帮我看看应该怎么做才行。。。谢啦具体问题都在文件价里了,不方便下载的给个思路也行啊
  • wince6.0 键盘驱动中按键复用的问题
    我是新手,正在编写wince键盘驱动,有个问题:如何实现手机键盘那种功能,按第一下是数字,再按一下是字母,在按一下变个字母?请各位高手指点一下,谢谢。
  • 补数问题
    我上学前班的时候,老师让我们背这么一个题目:一位数的补数。比如:1的补数是9、2的补数是8....。那时候不理解,是死记住的。现在想来,应该是这样的,正数没有补数,负数才有。负数和它的补数的绝对值相加等于这个负数所在数制的模(权值)。对于以为十进制数,模是10,两位数,模是100。。。对于一个字节表示的二进制数,模是256,以此类推来理解补数的问题,应该是可以的。前几天我提了一个BCD码的加减问题
  • 电源环路稳定性评价方法
  • 向高手真诚提问:关于AT91SAM7X256 开发的问题
  • 电容降压
  • 基于LM2577的升压式开关电源实例解析
  • 性价比超高的STM3210E开发板

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×