1#![doc = include_str!("readme.md")]
2use core::range::Range;
3
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6#[derive(Debug, Clone)]
7pub struct PascalRoot {
8 pub items: Vec<PascalItem>,
10 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
12 pub range: Range<usize>,
13}
14
15#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
17#[derive(Debug, Clone)]
18pub enum PascalItem {
19 Program {
21 name: String,
23 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
25 range: Range<usize>,
26 },
27 Declaration {
29 content: String,
31 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
33 range: Range<usize>,
34 },
35 Statement {
37 content: String,
39 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
41 range: Range<usize>,
42 },
43}