Add "module" program variant
This commit is contained in:
parent
9658907d76
commit
2be47871da
2 changed files with 23 additions and 8 deletions
|
|
@ -1,17 +1,32 @@
|
|||
use crate::span::{HasSpan, Span};
|
||||
|
||||
use super::{Space, TableLitElem};
|
||||
use super::{Expr, Space, TableLitElem};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Program {
|
||||
pub elems: Vec<(Space, TableLitElem, Space)>,
|
||||
/// `Some` if there is a trailing comma, `None` otherwise.
|
||||
pub trailing_comma: Option<Space>,
|
||||
pub span: Span,
|
||||
pub enum Program {
|
||||
/// Structure: `s0 lit s1`
|
||||
Expr {
|
||||
s0: Space,
|
||||
expr: Expr,
|
||||
s1: Space,
|
||||
span: Span,
|
||||
},
|
||||
|
||||
/// Structure: `s0 module elems trailing_comma`
|
||||
Module {
|
||||
s0: Space,
|
||||
elems: Vec<(Space, TableLitElem, Space)>,
|
||||
/// `Some` if there is a trailing comma, `None` otherwise.
|
||||
trailing_comma: Option<Space>,
|
||||
span: Span,
|
||||
},
|
||||
}
|
||||
|
||||
impl HasSpan for Program {
|
||||
fn span(&self) -> Span {
|
||||
self.span
|
||||
match self {
|
||||
Program::Expr { span, .. } => *span,
|
||||
Program::Module { span, .. } => *span,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue