静态语义分析构建

文章目录

    • 静态语义分析构建
    • 1. JDT(Java开发工具, Java development tools)
      • 1.1 JDT插件的组件内容
      • 1.2 参考文献
    • 2. AST(抽象语法树, Abstract Syntax Tree)
      • 2.1 Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model
      • 2.2 参考文献
    • 3. 工具

静态语义分析构建

静态语义处理;
学习笔记,仅供个人知识导航用处,不作其它用途
部分段落翻译自博客中列出的 参考文献

1. JDT(Java开发工具, Java development tools)

了解JDT是啥,了解其工具集

1.1 JDT插件的组件内容

  • JDT APT

    Annotation Processor Tool(注解处理工具)

  • JDT Core

    非UI的基础设施

  • JDT Debug

    实现了Java Debug支持,能够作用于任意兼容JDPA的目标JVM。实现在由平台Debugger提供的语言无关的Debug模式之上。

  • JDT Text

    提供了Java编辑器的一些特性

  • JDT UI

    实现Java Workspace的UI,例如

    • Package Explorer
    • Type Hierarchy View
    • Java Outline View
    • Wizards for creating Java elements

1.2 参考文献

  • Eclipse.org对JDT的介绍
  • 精通 Eclipse V3.4,第 2 部分 JDT

2. AST(抽象语法树, Abstract Syntax Tree)

对于静态分析来说,抽象语法树是最基础的技术

2.1 Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model

Eclipse JDT提供了API用来访问和操作Java源码。它通过 Java Model , Abstract Syntax Tree(AST) 来访问Java源码:

  • The Java Model

    Java Model被定义在 org.eclipse.jdt.core 插件。Java Model以树状结构呈现。

    Java Model

    Project Element Java Model element Description
    Java project IJavaProject The Java project which contains all other objects.
    src folder / bin folder / or external library IPackageFragmentRoot Hold source or binary files, can be a folder or a library (zip / jar file )
    Each package IPackageFragment Each package is below the IPackageFragmentRoot, sub-packages are not leaves of the package, they are listed directly under IPackageFragmentRoot
    Java Source File ICompilationUnit The Source file is always below the package node
    Types / Fields / Methods IType / IField / IMethod Types, fields and methods
  • The Abstract Syntax Tree (AST)

    • AST定义了对源代码进行修改,创建,读取,删除的API
    • AST的main package是 org.eclipse.jdt.core.dom 包,位于 org.eclipse.jdt.core 插件包下
    • 每个 Java source element 都是ASTNode类的子类,每个具体的ASTNode实现类都提供了这个对象的具体信息
      • MethodDeclaration, 提供方法信息
      • VariableDeclarationFragment, 提供变量声明的相关信息
      • SimpleName, 非Java关键字字符串
    • AST通常是从Java Model中的ICompilationUnit创建的,AST一般的工作处理流程如下:
      • 给定一个用于解析的Java源码
      • 通过 org.eclipse.jdt.core.dom.ASTParser 解析源码,并返回一个AST
      • 对AST进行操作,如修改等
      • AST上的改变,通过IDocument接口,写回到源码上
    • 更多的代码例子,参考文章:Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model

2.2 参考文献

  • Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model
  • Eclipse IDE Plug-in Development: Plug-ins, Features, Update Sites and IDE Extensions
  • Represent a Java file as an AST(Abstract Syntax Tree)
  • Abstract Syntax Tree

3. 工具

写文章过程中搜索到的工具

Markdown 在线工具

你可能感兴趣的:(Java,Java虚拟机,编译原理)