sv_parser_syntaxtree/source_text/
program_items.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum ProgramItem {
7    PortDeclaration(Box<(PortDeclaration, Symbol)>),
8    NonPortProgramItem(Box<NonPortProgramItem>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub enum NonPortProgramItem {
13    Assign(Box<NonPortProgramItemAssign>),
14    Module(Box<NonPortProgramItemModule>),
15    Initial(Box<NonPortProgramItemInitial>),
16    Final(Box<NonPortProgramItemFinal>),
17    Assertion(Box<NonPortProgramItemAssertion>),
18    TimeunitsDeclaration(Box<TimeunitsDeclaration>),
19    ProgramGenerateItem(Box<ProgramGenerateItem>),
20}
21
22#[derive(Clone, Debug, PartialEq, Node)]
23pub struct NonPortProgramItemAssign {
24    pub nodes: (Vec<AttributeInstance>, ContinuousAssign),
25}
26
27#[derive(Clone, Debug, PartialEq, Node)]
28pub struct NonPortProgramItemModule {
29    pub nodes: (Vec<AttributeInstance>, ModuleOrGenerateItemDeclaration),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub struct NonPortProgramItemInitial {
34    pub nodes: (Vec<AttributeInstance>, InitialConstruct),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub struct NonPortProgramItemFinal {
39    pub nodes: (Vec<AttributeInstance>, FinalConstruct),
40}
41
42#[derive(Clone, Debug, PartialEq, Node)]
43pub struct NonPortProgramItemAssertion {
44    pub nodes: (Vec<AttributeInstance>, ConcurrentAssertionItem),
45}
46
47#[derive(Clone, Debug, PartialEq, Node)]
48pub enum ProgramGenerateItem {
49    LoopGenerateConstruct(Box<LoopGenerateConstruct>),
50    ConditionalGenerateConstruct(Box<ConditionalGenerateConstruct>),
51    GenerateRegion(Box<GenerateRegion>),
52    ElaborationSystemTask(Box<ElaborationSystemTask>),
53}