1#![doc = include_str!("readme.md")]
2use core::range::Range;
3
4
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7#[derive(Debug, Clone)]
8pub struct PascalRoot {
9 pub items: Vec<PascalItem>,
11 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
13 pub range: Range<usize>,
14}
15
16#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
18#[derive(Debug, Clone)]
19pub enum PascalItem {
20 Program {
22 name: String,
24 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
26 range: Range<usize>,
27 },
28 Declaration {
30 content: String,
32 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
34 range: Range<usize>,
35 },
36 Statement {
38 content: String,
40 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
42 range: Range<usize>,
43 },
44}