oak_java/ast/
mod.rs

1//! Java AST definitions
2
3use std::range::Range;
4
5/// Java 程序的根节点
6#[derive(Debug, Clone, PartialEq)]
7pub struct JavaRoot {
8    /// 编译单元中的项目
9    pub items: Vec<Item>,
10}
11
12/// Java 程序中的顶级项目
13#[derive(Debug, Clone, PartialEq)]
14pub enum Item {
15    /// 类声明
16    Class(ClassDeclaration),
17    /// 接口声明
18    Interface(InterfaceDeclaration),
19    /// 包声明
20    Package(PackageDeclaration),
21    /// 导入声明
22    Import(ImportDeclaration),
23}
24
25/// 类声明
26#[derive(Debug, Clone, PartialEq)]
27pub struct ClassDeclaration {
28    /// 类名
29    pub name: String,
30    /// 源码位置
31    pub span: Range<usize>,
32}
33
34/// 接口声明
35#[derive(Debug, Clone, PartialEq)]
36pub struct InterfaceDeclaration {
37    /// 接口名
38    pub name: String,
39    /// 源码位置
40    pub span: Range<usize>,
41}
42
43/// 包声明
44#[derive(Debug, Clone, PartialEq)]
45pub struct PackageDeclaration {
46    /// 包名
47    pub name: String,
48    /// 源码位置
49    pub span: Range<usize>,
50}
51
52/// 导入声明
53#[derive(Debug, Clone, PartialEq)]
54pub struct ImportDeclaration {
55    /// 导入路径
56    pub path: String,
57    /// 是否为静态导入
58    pub is_static: bool,
59    /// 源码位置
60    pub span: Range<usize>,
61}