use super::*;
#[cfg(feature = "pretty-print")]
mod display;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum TableKind {
Tuple,
OffsetTable,
OrdinalTable,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TableNode {
pub kind: TableKind,
pub terms: Vec<TableTermNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TableTermNode {
pub pair: CallTermNode<TableKeyType, ExpressionNode>,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum TableKeyType {
Identifier(Box<IdentifierNode>),
Number(Box<NumberLiteralNode>),
String(Box<StringLiteralNode>),
Subscript(Box<SubscriptNode>),
}
impl Default for TableKind {
fn default() -> Self {
Self::Tuple
}
}