30 lines
600 B
Rust
30 lines
600 B
Rust
use crate::span::{HasSpan, Span};
|
|
|
|
use super::{BoundedSeparated, Expr, Space, TableLitElem};
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub enum Program {
|
|
/// Structure: `s0 lit s1`
|
|
Expr {
|
|
s0: Space,
|
|
expr: Expr,
|
|
s1: Space,
|
|
span: Span,
|
|
},
|
|
|
|
/// Structure: `s0 module elems`
|
|
Module {
|
|
s0: Space,
|
|
elems: BoundedSeparated<TableLitElem>,
|
|
span: Span,
|
|
},
|
|
}
|
|
|
|
impl HasSpan for Program {
|
|
fn span(&self) -> Span {
|
|
match self {
|
|
Self::Expr { span, .. } => *span,
|
|
Self::Module { span, .. } => *span,
|
|
}
|
|
}
|
|
}
|