Skip to main content

scarf_syntax/source_text/
package_items.rs

1// =======================================================================
2// package_items.rs
3// =======================================================================
4// CST Nodes from 1800-2023 A.1.11
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum PackageItem<'a> {
9    PackageOrGenerate(Box<PackageOrGenerateItemDeclaration<'a>>),
10    AnonymousProgram(Box<AnonymousProgram<'a>>),
11    PackageExport(Box<PackageExportDeclaration<'a>>),
12    Timeunits(Box<TimeunitsDeclaration<'a>>),
13}
14
15#[derive(Clone, Debug, PartialEq)]
16pub enum PackageOrGenerateItemDeclaration<'a> {
17    Net(Box<NetDeclaration<'a>>),
18    Data(Box<DataDeclaration<'a>>),
19    Task(Box<TaskDeclaration<'a>>),
20    Function(Box<FunctionDeclaration<'a>>),
21    Checker(Box<CheckerDeclaration<'a>>),
22    DpiImportExport(Box<DpiImportExport<'a>>),
23    ExternConstraint(Box<ExternConstraintDeclaration<'a>>),
24    Class(Box<ClassDeclaration<'a>>),
25    InterfaceClass(Box<InterfaceClassDeclaration<'a>>),
26    ClassConstructor(Box<ClassConstructorDeclaration<'a>>),
27    LocalParameter(
28        Box<(
29            LocalParameterDeclaration<'a>,
30            Metadata<'a>, // ;
31        )>,
32    ),
33    Parameter(
34        Box<(
35            ParameterDeclaration<'a>,
36            Metadata<'a>, // ;
37        )>,
38    ),
39    Covergroup(Box<CovergroupDeclaration<'a>>),
40    AssertionItem(Box<AssertionItemDeclaration<'a>>),
41    Null(Box<Metadata<'a>>),
42}
43
44#[derive(Clone, Debug, PartialEq)]
45pub struct AnonymousProgram<'a>(
46    pub Metadata<'a>, // program
47    pub Metadata<'a>, // ;
48    pub Vec<AnonymousProgramItem<'a>>,
49    pub Metadata<'a>, // endprogram
50);
51
52#[derive(Clone, Debug, PartialEq)]
53pub enum AnonymousProgramItem<'a> {
54    Task(Box<TaskDeclaration<'a>>),
55    Function(Box<FunctionDeclaration<'a>>),
56    Class(Box<ClassDeclaration<'a>>),
57    InterfaceClass(Box<InterfaceClassDeclaration<'a>>),
58    Covergroup(Box<CovergroupDeclaration<'a>>),
59    ClassConstructor(Box<ClassConstructorDeclaration<'a>>),
60    Null(Box<Metadata<'a>>),
61}