use crate::*; // ----------------------------------------------------------------------------- #[derive(Clone, Debug, Node)] pub enum StatementOrNull { Statement(Box), Attribute(Box), } #[derive(Clone, Debug, Node)] pub struct StatementOrNullAttribute { pub nodes: (Vec, Symbol), } #[derive(Clone, Debug, Node)] pub struct Statement { pub nodes: ( Option<(BlockIdentifier, Symbol)>, Vec, StatementItem, ), } #[derive(Clone, Debug, Node)] pub enum StatementItem { BlockingAssignment(Box<(BlockingAssignment, Symbol)>), NonblockingAssignment(Box<(NonblockingAssignment, Symbol)>), ProceduralContinuousAssignment(Box<(ProceduralContinuousAssignment, Symbol)>), CaseStatement(Box), ConditionalStatement(Box), IncOrDecExpression(Box<(IncOrDecExpression, Symbol)>), SubroutineCallStatement(Box), DisableStatement(Box), EventTrigger(Box), LoopStatement(Box), JumpStatement(Box), ParBlock(Box), ProceduralTimingControlStatement(Box), SeqBlock(Box), WaitStatement(Box), ProceduralAssertionStatement(Box), ClockingDrive(Box<(ClockingDrive, Symbol)>), RandsequenceStatement(Box), RandcaseStatement(Box), ExpectPropertyStatement(Box), } #[derive(Clone, Debug, Node)] pub struct FunctionStatement { pub nodes: (Statement,), } #[derive(Clone, Debug, Node)] pub enum FunctionStatementOrNull { Statement(Box), Attribute(Box), } #[derive(Clone, Debug, Node)] pub struct FunctionStatementOrNullAttribute { pub nodes: (Vec, Symbol), } #[derive(Clone, Debug, Node)] pub struct VariableIdentifierList { pub nodes: (List,), }