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