扫描右侧图片或微信搜索 “ Java技术分享屋 ” ,回复 “ 验证码 ” ,获取验证密码。
本资料仅供读者预览及学习交流使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版!
一.资料图片
二.资料简介
This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do.
What is JavaParser?
In its simplest form, the JavaParser library allows you to interact with Java source code as a Java object representation in a Java environment. More formally we refer to this object representation as an Abstract Syntax Tree (AST).
Additionally, it provides a convenience mechanism to navigate the tree with what we have termed as Visitor Support. This gives developers the ability to focus on identifying interesting patterns in their source, rather than writing laborious tree traversal code.
The final principal feature of the library is the ability to manipulate the underlying structure of the source code. This can then be written to a file, providing developers with the facility to build their own code generating software.
三.资料目录
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
What is JavaParser? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
JavaParser is not.............................................................................................................................. 1
Who is this book for?...................................................................................................................... 1
This book is not for.......................................................................................................................... 2
How to use this book?..................................................................................................................... 2
Conventions used in this book......................................................................................................... 3
Code Samples.................................................................................................................................. 3
How to Contact Us.......................................................................................................................... 3
The Authors..................................................................................................................................... 4
Acknowledgements......................................................................................................................... 4
A Brief Introduction to Abstract Syntax Trees................................................................................ 5
Everything is a node........................................................................................................................ 5
When is a node, not a node?............................................................................................................ 6
Growing our first tree...................................................................................................................... 6
Beyond Abstract.............................................................................................................................. 8
A Flying Visit................................................................................................................................... 9
Travelling Companions................................................................................................................... 9
A Simple Visitor............................................................................................................................ 10
A Simple Visitor With State.......................................................................................................... 13
A Simple Modifying Visitor.......................................................................................................... 15
A Simple Comment Reporter........................................................................................................ 18
Comments - Here Be Dragons....................................................................................................... 22
Comment Attribution..................................................................................................................... 23
Comments In Practice.................................................................................................................... 26
Pretty Printing and Lexical Preservation....................................................................................... 30
What is Pretty-Printing?................................................................................................................ 30
What is Lexical-Preserving Printing?............................................................................................ 31
Choosing between Pretty Printing and Lexical-Preserving Printing............................................. 31
Using Pretty Printing..................................................................................................................... 32
Using Lexical-Preserving Printing................................................................................................ 34
CONTENTS
How it works: the NodeText and the Concrete Syntax Model . . . . . . . . . . . . . . . . . . 37
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Solving Symbols and References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
How to setup the JavaSymbolSolver? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
How to get the type of references: a first example . . . . . . . . . . . . . . . . . . . . . . . . . 43
Specifying where to look for types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Resolving a type using an absolute name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Resolving a Type in a context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Resolving method calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Using the CombinedTypeSolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Using the MemoryTypeSolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Appendix A - ReversePolishNotation.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Appendix B - Visitable Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57