Skip to main content

oak_pascal/ast/
mod.rs

1use core::range::Range;
2use serde::{Deserialize, Serialize};
3
4/// Pascal AST 根节点
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct PascalRoot {
7    pub items: Vec<PascalItem>,
8    #[serde(with = "oak_core::serde_range")]
9    pub range: Range<usize>,
10}
11
12/// Pascal 项目
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub enum PascalItem {
15    Program {
16        name: String,
17        #[serde(with = "oak_core::serde_range")]
18        range: Range<usize>,
19    },
20    Declaration {
21        content: String,
22        #[serde(with = "oak_core::serde_range")]
23        range: Range<usize>,
24    },
25    Statement {
26        content: String,
27        #[serde(with = "oak_core::serde_range")]
28        range: Range<usize>,
29    },
30}