1use core::range::Range;
2use serde::{Deserialize, Serialize};
3
4#[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#[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}