Skip to main content

scarf_syntax/source_text/
program_items.rs

1// =======================================================================
2// program_items.rs
3// =======================================================================
4// CST Nodes from 1800-2023 A.1.7
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum ProgramItem<'a> {
9    Port(
10        Box<(
11            PortDeclaration<'a>,
12            Metadata<'a>, // ;
13        )>,
14    ),
15    NonPort(Box<NonPortProgramItem<'a>>),
16}
17
18#[derive(Clone, Debug, PartialEq)]
19pub enum NonPortProgramItem<'a> {
20    Assign(Box<(Vec<AttributeInstance<'a>>, ContinuousAssign<'a>)>),
21    ModuleOrGenerateDeclaration(
22        Box<(
23            Vec<AttributeInstance<'a>>,
24            ModuleOrGenerateItemDeclaration<'a>,
25        )>,
26    ),
27    Initial(Box<(Vec<AttributeInstance<'a>>, InitialConstruct<'a>)>),
28    Final(Box<(Vec<AttributeInstance<'a>>, FinalConstruct<'a>)>),
29    Assertion(Box<(Vec<AttributeInstance<'a>>, ConcurrentAssertionItem<'a>)>),
30    Timeunits(Box<TimeunitsDeclaration<'a>>),
31    Generate(Box<ProgramGenerateItem<'a>>),
32}
33
34#[derive(Clone, Debug, PartialEq)]
35pub enum ProgramGenerateItem<'a> {
36    Loop(Box<LoopGenerateConstruct<'a>>),
37    Conditional(Box<ConditionalGenerateConstruct<'a>>),
38    Region(Box<GenerateRegion<'a>>),
39    ElaborationSeverity(Box<ElaborationSeveritySystemTask<'a>>),
40}