书籍 深入解析JAVA编译器  源码剖析与实例详解的封面

深入解析JAVA编译器 源码剖析与实例详解PDF电子书下载

马智著

购买点数

20

出版社

出版时间

2020

ISBN

标注页数

0 页

PDF页数

669 页

图书目录

第1章 Javac介绍 1

1.1 初识Javac 1

1.2 Javac源码与调试 4

1.3 Javac命令 7

第2章 Javac文件系统 12

2.1 文件相关实现类 12

2.2 文件的管理 25

2.2.1 获取JavacFileManager对象 25

2.2.2 StandardLocation类 28

2.2.3 JavacFileManager类 31

第3章 词法分析 38

3.1 字符编码 38

3.2 获取字符输入流 40

3.3 Token与Name 43

3.3.1 Token介绍 44

3.3.2 Name对象的生成与存储 47

3.3.3 Name映射为Token 51

3.4 生成Token流 52

第4章 语法分析之认识树节点 67

4.1 定义及声明 68

4.1.1 JCCompilationUnit类 68

4.1.2 JCImport类 69

4.1.3 JCClassDecl类 70

4.1.4 JCModifiers类 71

4.1.5 JCTypeParameter类 72

4.1.6 JCVariableDecl类 72

4.1.7 JCMetbodDecl类 74

4.2 语句 75

4.2.1 JCBlock类 75

4.2.2 JCIf类 76

4.2.3 JCWhileLoop、JCDoWhileLoop、JCForLoop与JCEnhancedForLoop类 78

4.2.4 JCSwitch与JCCase类 79

4.2.5 JCTry、JCCatch与JCThrow类 81

4.2.6 JCLabeledStatement、JCRetum、JCContinue与JCBreak类 82

4.2.7 JCSynchronized类 83

4.2.8 JCAssert类 83

4.3 表达式 83

4.3.1 基本表达式 84

4.3.2 含运算符的表达式 88

4.3.3 类型相关表达式 94

4.3.4 注解表达式 97

4.4 生成树节点 98

第5章 语法分析之建立抽象语法树 101

5.1 定义及声明的抽象语法树 101

5.2 语句的抽象语法树 112

5.3 表达式的抽象语法树 121

5.3.1 基本表达式 122

5.3.2 含有运算符的表达式 134

5.4 遍历抽象语法树 140

第6章 符号表的组织 143

6.1 符号的定义 143

6.1.1 Symbol类 144

6.1.2 TypeSymbol及其子类 150

6.1.3 VarSymbol类 154

6.1.4 MethodSymbol及OperatorSymbol类 154

6.2 符号表的组织 160

6.2.1 Env类介绍 160

6.2.2 AttrContext类介绍 162

6.2.3 Scope类介绍 163

6.2.4 符号表的建立 164

6.3 类型的定义 169

6.3.1 普通类型的定义 169

6.3.2 泛型相关类型的定义 175

第7章 填充符号表 180

7.1 依赖的处理 180

7.1.1 创建包或类符号 180

7.1.2 输入包或类下的成员符号 184

7.2 符号输入的第一阶段 189

7.2.1 Enter类 190

7.2.2 visitTopLevel()方法 192

7.2.3 visitClassDef()方法 193

7.2.4 visitTypeParameter()方法 196

7.3 符号输入第二阶段 197

7.3.1 MemberEnter类 197

7.3.2 visitImport()方法 200

7.3.3 visitMethodDef()方法 207

7.3.4 visitVarDef()方法 209

第8章 插入式注解的实现 211

8.1 注解处理器基础 211

8.1.1 编写注解处理器 211

8.1.2 注解配置 215

8.1.3 工具类 215

8.2 初始化注解处理器 222

8.3 运行注解处理器 226

第9章 语义分析之类型转换 233

9.1 类型转换的种类 233

9.2 赋值转换 245

9.3 方法调用转换 253

9.4 强制类型转换 254

9.5 数字提升 266

第10章 语义分析之语法检查 269

10.1 类型定义的检查 269

10.1.1 父类及实现接口的检查 269

10.1.2 类型定义的唯一性检查 273

10.1.3 类型中方法的兼容性检查 276

10.1.4 类型中实现方法的检查 287

10.2 变量定义的检查 294

10.3 方法定义的检查 296

10.3.1 方法的唯一性检查 296

10.3.2 方法的隐藏 298

10.3.3 方法的覆写 303

第11章 语义分析之引用消解 307

11.1 Resolve类介绍 307

11.2 类型引用的消解 310

11.3 变量引用的消解 320

11.4 方法引用的消解 323

第12章 语义分析之语法树标注 345

12.1 Attr类介绍 346

12.2 表达式相关树节点的标注 348

12.2.1 JCUnary树节点标注 348

12.2.2 JCBinary树节点的标注 350

12.2.3 JCAssignOp树节点的标注 351

12.3 JCIdent树节点的标注 351

12.4 JCFieldAccess树节点的标注 354

第13章 泛型的实现 361

13.1 泛型类型 361

13.2 泛型方法 364

13.2.1 类型推断 365

13.2.2 钻石语法 383

13.3 泛型擦除 386

第14章 数据流检查 396

14.1 Flow类介绍 396

14.1.1 语句的活跃性分析 396

14.1.2 变量赋值检查 398

14.1.3 异常检查 405

14.2 if语句的分析 405

14.2.1 if语句 405

14.2.2 一元表达式与if语句 409

14.2.3 二元表达式与if语句 410

14.2.4 三元表达式与if语句 412

14.3 循环语句的分析 413

14.3.1 for语句 413

14.3.2 中断循环语句 416

14.4 try语句与throw语句的分析 419

14.4.1 抛出异常 419

14.4.2 异常检查 424

14.4.3 变量赋值状态及语句的活跃性 430

第15章 语法糖去除 435

15.1 简单语法糖 436

15.1.1 变长参数 436

15.1.2 条件编译 437

15.1.3 自动装箱与拆箱 438

15.2 语句语法糖 440

15.2.1 foreach语句 440

15.2.2 switch语句 442

15.2.3 try-with-resources语句 447

15.3 枚举类语法糖 452

15.4 内部类语法糖 453

15.4.1 调用私有构造方法 454

15.4.2 引用成员 457

15.4.3 super关键字引用父类成员 470

15.4.4 访问自由变量 472

第16章 字节码指令生成 486

16.1 字节码指令集 486

16.2 生成字节码指令 492

16.2.1 实现本地变量表 492

16.2.2 实现操作数栈 495

16.2.3 常量池信息的存储 497

16.2.4 Code类介绍 499

16.3 Gen类介绍 502

16.4 可寻址实体Item 506

16.4.1 LocalItem类 508

16.4.2 ImmediateItem类 512

16.4.3 StackItem类 514

16.4.4 AssignItem类 515

16.4.5 StaticItem类 517

16.4.6 MemberItem类 520

16.4.7 SelfItem类 523

16.4.8 IndexedItem类 524

第17章 重要结构的字节码指令生成 527

17.1 控制转移指令与地址回填 527

17.1.1 认识控制转移指令 527

17.1.2 地址回填 529

17.2 语句的条件判断表达式 530

17.2.1 CondItem类 530

17.2.2 一元与二元条件判断表达式 533

17.2.3 三元条件判断表达式 534

17.3 if语句 536

17.4 循环语句 537

17.5 switch语句 539

17.6 异常与finally语句 545

17.6.1 异常的抛出 545

17.6.2 异常的捕获与finally语句 545

第18章 生成Class文件 553

18.1 Class文件的结构 553

18.2 魔数与版本 556

18.3 常量池 556

18.4 类定义的基本信息 562

18.4.1 访问标识符 562

18.4.2 类、父类及接口集合 564

18.5 字段集合 565

18.6 方法集合 570

18.7 类属性集合 575

18.8 描述符和签名 581

18.8.1 描述符 581

18.8.2 签名 582

18.8.3 描述符与签名的实现 585

附录A Javac命令 589

附录B 文法 592

附录C 类型常见操作 600

C.1 supertype()方法 600

C.2 interfaces()方法 604

C.3 asSuper()方法 606

C.4 asOuterSuper()方法 608

C.5 isSameType()方法 609

C.6 L()与U()方法 615

C.7 lowerBound()与upperBound()方法 616

C.8 containsType()方法 617

C.9 hasSameArgs()方法 621

C.10 subst()方法 623

C.11 memberType()方法 626

C.12 erasure()与erasureRecursive()方法 628

附录D 符号常见操作 632

D.1 isInheritedIn()方法 632

D.2 hiddenIn()方法 633

D.3 isMemberOf()方法 634

D.4 overrides()方法 635

D.5 implementation()方法 639

附录E 虚拟机字节码指令表 645

E.1 加载与存储指令 645

E.2 运算指令 648

E.3 类型转换指令 650

E.4 对象操作指令 651

E.5 操作数栈管理指令 652

E.6 控制转移指令 652

E.7 方法调用和返回指令 653

E.8 异常抛出指令 654

E.9 同步指令 654

查看更多关于的内容

上一篇:创无止境下一篇:欧也妮·葛朗台
出版社其它书籍
本类热门
在线购买PDF电子书
下载此书RAR压缩包