Skip to content
← Back

src/syntax/trees/definitions/enum.ghul

1
namespace Syntax.Trees.Definitions is
2
use Source
3
4
use Ghul.Pipes
5
6
class ENUM: Classy is
7
members: Collections.List[ENUM_MEMBER]
8
9
init(
10
location: LOCATION,
11
name: Identifiers.Identifier,
12
modifiers: Modifiers.LIST,
13
members: Collections.List[ENUM_MEMBER]
14
) is
15
super.init(
16
location,
17
name,
18
null,
19
null,
20
modifiers,
21
LIST(location, members|> map(m -> Definition => m))
22
)
23
24
self.members = members
25
si
26
27
accept(visitor: Visitor) is
28
visitor.visit(self)
29
si
30
31
walk(visitor: Visitor) is
32
if !visitor.pre(self) then
33
name.walk(visitor)
34
modifiers.walk(visitor)
35
36
for m in members do
37
m.walk(visitor)
38
od
39
fi
40
41
accept(visitor)
42
si
43
44
si
45
46
class ENUM_MEMBER: Definition is
47
name: Identifiers.Identifier
48
initializer: Expressions.Expression?
49
50
init(
51
location: LOCATION,
52
name: Identifiers.Identifier,
53
initializer: Expressions.Expression?
54
) is
55
super.init(location)
56
57
self.name = name
58
self.initializer = initializer
59
si
60
61
accept(visitor: Visitor) is
62
visitor.visit(self)
63
si
64
65
walk(visitor: Visitor) is
66
if !visitor.pre(self) then
67
name.walk(visitor
68
)
69
if initializer? then
70
initializer.walk(visitor)
71
fi
72
fi
73
74
accept(visitor)
75
si
76
si
77
si