Skip to main content

scarf_syntax/behavioral_statements/
continuous_assignment_and_net_alias_statements.rs

1// =======================================================================
2// case_statements.rs
3// =======================================================================
4//! CST Nodes from 1800-2023 A.6.1
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum ContinuousAssign<'a> {
9    NetAssignments(
10        Box<(
11            Metadata<'a>, // assign
12            Option<DriveStrength<'a>>,
13            Option<Delay3<'a>>,
14            ListOfNetAssignments<'a>,
15            Metadata<'a>, // ;
16        )>,
17    ),
18    VariableAssignments(
19        Box<(
20            Metadata<'a>, // assign
21            Option<DelayControl<'a>>,
22            ListOfVariableAssignments<'a>,
23            Metadata<'a>, // ;
24        )>,
25    ),
26}
27
28#[derive(Clone, Debug, PartialEq)]
29pub struct ListOfNetAssignments<'a>(
30    pub NetAssignment<'a>,
31    pub  Vec<(
32        Metadata<'a>, // ,
33        NetAssignment<'a>,
34    )>,
35);
36
37#[derive(Clone, Debug, PartialEq)]
38pub struct ListOfVariableAssignments<'a>(
39    pub VariableAssignment<'a>,
40    pub  Vec<(
41        Metadata<'a>, // ,
42        VariableAssignment<'a>,
43    )>,
44);
45
46#[derive(Clone, Debug, PartialEq)]
47pub struct NetAlias<'a>(
48    pub Metadata<'a>, // alias
49    pub NetLvalue<'a>,
50    pub Metadata<'a>, // =
51    pub NetLvalue<'a>,
52    pub  Vec<(
53        Metadata<'a>, // =
54        NetLvalue<'a>,
55    )>,
56    pub Metadata<'a>, // ;
57);
58
59#[derive(Clone, Debug, PartialEq)]
60pub struct NetAssignment<'a>(
61    pub NetLvalue<'a>,
62    pub Metadata<'a>, // =
63    pub Expression<'a>,
64);