sv_parser_syntaxtree/expressions/
numbers.rs1use crate::*;
2
3#[derive(Clone, Debug, PartialEq, Node)]
6pub enum Number {
7 IntegralNumber(Box<IntegralNumber>),
8 RealNumber(Box<RealNumber>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub enum IntegralNumber {
13 DecimalNumber(Box<DecimalNumber>),
14 OctalNumber(Box<OctalNumber>),
15 BinaryNumber(Box<BinaryNumber>),
16 HexNumber(Box<HexNumber>),
17}
18
19#[derive(Clone, Debug, PartialEq, Node)]
20pub enum DecimalNumber {
21 UnsignedNumber(Box<UnsignedNumber>),
22 BaseUnsigned(Box<DecimalNumberBaseUnsigned>),
23 BaseXNumber(Box<DecimalNumberBaseXNumber>),
24 BaseZNumber(Box<DecimalNumberBaseZNumber>),
25}
26
27#[derive(Clone, Debug, PartialEq, Node)]
28pub struct DecimalNumberBaseUnsigned {
29 pub nodes: (Option<Size>, DecimalBase, UnsignedNumber),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub struct DecimalNumberBaseXNumber {
34 pub nodes: (Option<Size>, DecimalBase, XNumber),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub struct DecimalNumberBaseZNumber {
39 pub nodes: (Option<Size>, DecimalBase, ZNumber),
40}
41
42#[derive(Clone, Debug, PartialEq, Node)]
43pub struct BinaryNumber {
44 pub nodes: (Option<Size>, BinaryBase, BinaryValue),
45}
46
47#[derive(Clone, Debug, PartialEq, Node)]
48pub struct OctalNumber {
49 pub nodes: (Option<Size>, OctalBase, OctalValue),
50}
51
52#[derive(Clone, Debug, PartialEq, Node)]
53pub struct HexNumber {
54 pub nodes: (Option<Size>, HexBase, HexValue),
55}
56
57#[derive(Clone, Debug, PartialEq, Node)]
58pub enum Sign {
59 Plus(Box<Symbol>),
60 Minus(Box<Symbol>),
61}
62
63#[derive(Clone, Debug, PartialEq, Node)]
64pub struct Size {
65 pub nodes: (NonZeroUnsignedNumber,),
66}
67
68#[derive(Clone, Debug, PartialEq, Node)]
69pub struct NonZeroUnsignedNumber {
70 pub nodes: (Locate, Vec<WhiteSpace>),
71}
72
73#[derive(Clone, Debug, PartialEq, Node)]
74pub enum RealNumber {
75 FixedPointNumber(Box<FixedPointNumber>),
76 Floating(Box<RealNumberFloating>),
77}
78
79#[derive(Clone, Debug, PartialEq, Node)]
80pub struct RealNumberFloating {
81 pub nodes: (
82 UnsignedNumber,
83 Option<(Symbol, UnsignedNumber)>,
84 Exp,
85 Option<Sign>,
86 UnsignedNumber,
87 ),
88}
89
90#[derive(Clone, Debug, PartialEq, Node)]
91pub struct FixedPointNumber {
92 pub nodes: (UnsignedNumber, Symbol, UnsignedNumber),
93}
94
95#[derive(Clone, Debug, PartialEq, Node)]
96pub struct Exp {
97 pub nodes: (Symbol,),
98}
99
100#[derive(Clone, Debug, PartialEq, Node)]
101pub struct UnsignedNumber {
102 pub nodes: (Locate, Vec<WhiteSpace>),
103}
104
105#[derive(Clone, Debug, PartialEq, Node)]
106pub struct BinaryValue {
107 pub nodes: (Locate, Vec<WhiteSpace>),
108}
109
110#[derive(Clone, Debug, PartialEq, Node)]
111pub struct OctalValue {
112 pub nodes: (Locate, Vec<WhiteSpace>),
113}
114
115#[derive(Clone, Debug, PartialEq, Node)]
116pub struct HexValue {
117 pub nodes: (Locate, Vec<WhiteSpace>),
118}
119
120#[derive(Clone, Debug, PartialEq, Node)]
121pub struct DecimalBase {
122 pub nodes: (Locate, Vec<WhiteSpace>),
123}
124
125#[derive(Clone, Debug, PartialEq, Node)]
126pub struct BinaryBase {
127 pub nodes: (Locate, Vec<WhiteSpace>),
128}
129
130#[derive(Clone, Debug, PartialEq, Node)]
131pub struct OctalBase {
132 pub nodes: (Locate, Vec<WhiteSpace>),
133}
134
135#[derive(Clone, Debug, PartialEq, Node)]
136pub struct HexBase {
137 pub nodes: (Locate, Vec<WhiteSpace>),
138}
139
140#[derive(Clone, Debug, PartialEq, Node)]
141pub struct XNumber {
142 pub nodes: (Locate, Vec<WhiteSpace>),
143}
144
145#[derive(Clone, Debug, PartialEq, Node)]
146pub struct ZNumber {
147 pub nodes: (Locate, Vec<WhiteSpace>),
148}
149
150#[derive(Clone, Debug, PartialEq, Node)]
151pub struct UnbasedUnsizedLiteral {
152 pub nodes: (Symbol,),
153}