sv_parser_syntaxtree/specify_section/
specify_path_declarations.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum PathDeclaration {
7    SimplePathDeclaration(Box<(SimplePathDeclaration, Symbol)>),
8    EdgeSensitivePathDeclaration(Box<(EdgeSensitivePathDeclaration, Symbol)>),
9    StateDependentPathDeclaration(Box<(StateDependentPathDeclaration, Symbol)>),
10}
11
12#[derive(Clone, Debug, PartialEq, Node)]
13pub enum SimplePathDeclaration {
14    Parallel(Box<SimplePathDeclarationParallel>),
15    Full(Box<SimplePathDeclarationFull>),
16}
17
18#[derive(Clone, Debug, PartialEq, Node)]
19pub struct SimplePathDeclarationParallel {
20    pub nodes: (ParallelPathDescription, Symbol, PathDelayValue),
21}
22
23#[derive(Clone, Debug, PartialEq, Node)]
24pub struct SimplePathDeclarationFull {
25    pub nodes: (FullPathDescription, Symbol, PathDelayValue),
26}
27
28#[derive(Clone, Debug, PartialEq, Node)]
29pub struct ParallelPathDescription {
30    pub nodes: (
31        Paren<(
32            SpecifyInputTerminalDescriptor,
33            Option<PolarityOperator>,
34            Symbol,
35            SpecifyOutputTerminalDescriptor,
36        )>,
37    ),
38}
39
40#[derive(Clone, Debug, PartialEq, Node)]
41pub struct FullPathDescription {
42    pub nodes: (
43        Paren<(
44            ListOfPathInputs,
45            Option<PolarityOperator>,
46            Symbol,
47            ListOfPathOutputs,
48        )>,
49    ),
50}
51
52#[derive(Clone, Debug, PartialEq, Node)]
53pub struct ListOfPathInputs {
54    pub nodes: (List<Symbol, SpecifyInputTerminalDescriptor>,),
55}
56
57#[derive(Clone, Debug, PartialEq, Node)]
58pub struct ListOfPathOutputs {
59    pub nodes: (List<Symbol, SpecifyOutputTerminalDescriptor>,),
60}