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