Skip to content
← Back

src/syntax/parsers/definitions/definition.ghul

1
namespace Syntax.Parsers.Definitions is
2
use IO.Std
3
4
use Source
5
6
class DEFINITION(
7
definition_namespace_parser: Parser[Trees.Definitions.NAMESPACE],
8
definition_use_parser: Parser[Trees.Definitions.USE],
9
definition_class_parser: Parser[Trees.Definitions.CLASS],
10
definition_trait_parser: Parser[Trees.Definitions.TRAIT],
11
definition_struct_parser: Parser[Trees.Definitions.STRUCT],
12
definition_partial_parser: Parser[Trees.Definitions.PARTIAL],
13
definition_impl_parser: Parser[Trees.Definitions.IMPL],
14
definition_union_parser: Parser[Trees.Definitions.UNION],
15
definition_enum_parser: Parser[Trees.Definitions.ENUM],
16
definition_member_parser: Parser[Trees.Definitions.Definition],
17
definition_pragma_parser: Parser[Trees.Definitions.PRAGMA]
18
): Base[Trees.Definitions.Definition] is
19
description: string => "definition"
20
21
super()
22
23
init(..) is
24
add_parsers()
25
si
26
27
add_parsers() is
28
add_parser(
29
context => definition_namespace_parser.parse(context),
30
Lexical.TOKEN.NAMESPACE
31
)
32
33
add_parser(
34
context => definition_use_parser.parse(context),
35
Lexical.TOKEN.USE
36
)
37
38
add_parser(
39
context => definition_class_parser.parse(context),
40
Lexical.TOKEN.CLASS
41
)
42
43
add_parser(
44
context => definition_trait_parser.parse(context),
45
Lexical.TOKEN.TRAIT
46
)
47
48
add_parser(
49
context => definition_struct_parser.parse(context),
50
Lexical.TOKEN.STRUCT
51
)
52
53
add_parser(
54
context => definition_partial_parser.parse(context),
55
Lexical.TOKEN.PARTIAL
56
)
57
58
add_parser(
59
context => definition_impl_parser.parse(context),
60
Lexical.TOKEN.IMPL
61
)
62
63
add_parser(
64
context => definition_union_parser.parse(context),
65
Lexical.TOKEN.UNION
66
)
67
68
add_parser(
69
context => definition_enum_parser.parse(context),
70
Lexical.TOKEN.ENUM
71
)
72
73
add_parser(
74
context => definition_member_parser.parse(context),
75
Collections.LIST[Lexical.TOKEN]([Lexical.TOKEN.IDENTIFIER, Lexical.TOKEN.OPERATOR, Lexical.TOKEN.SQUARE_OPEN])
76
)
77
78
add_parser(
79
context => definition_pragma_parser.parse(context),
80
Lexical.TOKEN.AT
81
)
82
si
83
si
84
si