Skip to main content

scarf_syntax/expressions/
expression_left_side_values.rs

1// =======================================================================
2// expression_left_side_values.rs
3// =======================================================================
4// CST Nodes from 1800-2023 A.8.5
5use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum NetLvalue<'a> {
9    Selection(Box<SelectionNetLvalue<'a>>),
10    Nested(Box<NestedNetLvalue<'a>>),
11    Assignment(Box<AssignmentNetLvalue<'a>>),
12}
13
14#[derive(Clone, Debug, PartialEq)]
15pub struct SelectionNetLvalue<'a>(
16    pub PsOrHierarchicalNetIdentifier<'a>,
17    pub ConstantSelect<'a>,
18);
19
20#[derive(Clone, Debug, PartialEq)]
21pub struct NestedNetLvalue<'a>(
22    pub Metadata<'a>, // {
23    pub NetLvalue<'a>,
24    pub Vec<(Metadata<'a>, NetLvalue<'a>)>,
25    pub Metadata<'a>, // }
26);
27
28#[derive(Clone, Debug, PartialEq)]
29pub struct AssignmentNetLvalue<'a>(
30    pub Option<AssignmentPatternExpressionType<'a>>,
31    pub AssignmentPatternNetLvalue<'a>,
32);
33
34#[derive(Clone, Debug, PartialEq)]
35pub enum VariableLvalue<'a> {
36    Selection(Box<SelectionVariableLvalue<'a>>),
37    Nested(Box<NestedVariableLvalue<'a>>),
38    Assignment(Box<AssignmentVariableLvalue<'a>>),
39    Streaming(Box<StreamingConcatenation<'a>>),
40}
41
42#[derive(Clone, Debug, PartialEq)]
43pub enum ImplicitClassHandleOrPackageScope<'a> {
44    ImplicitClassHandle(Box<(ImplicitClassHandle<'a>, Metadata<'a>)>),
45    PackageScope(Box<PackageScope<'a>>),
46}
47
48#[derive(Clone, Debug, PartialEq)]
49pub struct SelectionVariableLvalue<'a>(
50    pub Option<ImplicitClassHandleOrPackageScope<'a>>,
51    pub HierarchicalVariableIdentifier<'a>,
52    pub Select<'a>,
53);
54
55#[derive(Clone, Debug, PartialEq)]
56pub struct NestedVariableLvalue<'a>(
57    pub Metadata<'a>, // {
58    pub VariableLvalue<'a>,
59    pub Vec<(Metadata<'a>, VariableLvalue<'a>)>,
60    pub Metadata<'a>, // }
61);
62
63#[derive(Clone, Debug, PartialEq)]
64pub struct AssignmentVariableLvalue<'a>(
65    pub Option<AssignmentPatternExpressionType<'a>>,
66    pub AssignmentPatternVariableLvalue<'a>,
67);
68
69#[derive(Clone, Debug, PartialEq)]
70pub struct NonrangeVariableLvalue<'a>(
71    pub ImplicitClassHandleOrPackageScope<'a>,
72    pub HierarchicalVariableIdentifier<'a>,
73    pub NonrangeSelect<'a>,
74);