sv_parser_syntaxtree/declarations/
declaration_ranges.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum UnpackedDimension {
7    Range(Box<UnpackedDimensionRange>),
8    Expression(Box<UnpackedDimensionExpression>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub struct UnpackedDimensionRange {
13    pub nodes: (Bracket<ConstantRange>,),
14}
15
16#[derive(Clone, Debug, PartialEq, Node)]
17pub struct UnpackedDimensionExpression {
18    pub nodes: (Bracket<ConstantExpression>,),
19}
20
21#[derive(Clone, Debug, PartialEq, Node)]
22pub enum PackedDimension {
23    Range(Box<PackedDimensionRange>),
24    UnsizedDimension(Box<UnsizedDimension>),
25}
26
27#[derive(Clone, Debug, PartialEq, Node)]
28pub struct PackedDimensionRange {
29    pub nodes: (Bracket<ConstantRange>,),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub enum AssociativeDimension {
34    DataType(Box<AssociativeDimensionDataType>),
35    Asterisk(Box<AssociativeDimensionAsterisk>),
36}
37
38#[derive(Clone, Debug, PartialEq, Node)]
39pub struct AssociativeDimensionDataType {
40    pub nodes: (Bracket<DataType>,),
41}
42
43#[derive(Clone, Debug, PartialEq, Node)]
44pub struct AssociativeDimensionAsterisk {
45    pub nodes: (Bracket<Symbol>,),
46}
47
48#[derive(Clone, Debug, PartialEq, Node)]
49pub enum VariableDimension {
50    UnsizedDimension(Box<UnsizedDimension>),
51    UnpackedDimension(Box<UnpackedDimension>),
52    AssociativeDimension(Box<AssociativeDimension>),
53    QueueDimension(Box<QueueDimension>),
54}
55
56#[derive(Clone, Debug, PartialEq, Node)]
57pub struct QueueDimension {
58    pub nodes: (Bracket<(Symbol, Option<(Symbol, ConstantExpression)>)>,),
59}
60
61#[derive(Clone, Debug, PartialEq, Node)]
62pub struct UnsizedDimension {
63    pub nodes: (Symbol, Symbol),
64}