37 lines
965 B
Rust
37 lines
965 B
Rust
|
use std::collections::{BTreeMap, HashMap};
|
||
|
|
||
|
use indexmap::IndexMap;
|
||
|
|
||
|
use super::Spanned;
|
||
|
|
||
|
#[derive(Debug, PartialEq, Eq)]
|
||
|
pub struct File<'src> {
|
||
|
pub decls: IndexMap<Spanned<&'src str>, Spanned<Expr<'src>>>,
|
||
|
}
|
||
|
|
||
|
#[derive(Debug, PartialEq, Eq)]
|
||
|
pub enum Expr<'src> {
|
||
|
Node(
|
||
|
Spanned<&'src str>,
|
||
|
Option<Spanned<IndexMap<Spanned<&'src str>, Expr<'src>>>>,
|
||
|
),
|
||
|
SimplePipe(Box<Expr<'src>>, Box<Expr<'src>>),
|
||
|
NamingPipe(
|
||
|
Box<Expr<'src>>,
|
||
|
(Vec<Spanned<&'src str>>, Vec<Spanned<&'src str>>),
|
||
|
Box<Expr<'src>>,
|
||
|
),
|
||
|
MappingPipe(Box<Expr<'src>>, Box<Expr<'src>>),
|
||
|
NullPipe(Box<Expr<'src>>, Box<Expr<'src>>),
|
||
|
MultiPipe(IndexMap<Spanned<&'src str>, Expr<'src>>),
|
||
|
LetIn(
|
||
|
IndexMap<Spanned<&'src str>, Box<Expr<'src>>>,
|
||
|
Box<Expr<'src>>,
|
||
|
),
|
||
|
// $
|
||
|
Var(Spanned<&'src str>),
|
||
|
// @
|
||
|
InputVar(Spanned<&'src str>),
|
||
|
AttrSet(Spanned<IndexMap<Spanned<&'src str>, Expr<'src>>>),
|
||
|
}
|