@@ -10,84 +10,101 @@ import {
10
10
export const _pattern = < RuleName extends string > (
11
11
$ : GrammarSymbols < RuleName > ,
12
12
) =>
13
- choice (
14
- $ . wildcard_pattern ,
15
- $ . binding_pattern ,
16
- $ . _assignable_pattern ,
17
- $ . _literal_pattern ,
13
+ prec (
14
+ 'base' ,
15
+ choice (
16
+ $ . wildcard_pattern ,
17
+ $ . binding_pattern ,
18
+ $ . _assignable_pattern ,
19
+ $ . _literal_pattern ,
20
+ ) ,
18
21
)
19
22
20
23
export const _assignable_pattern = < RuleName extends string > (
21
24
$ : GrammarSymbols < RuleName > ,
22
25
) =>
23
- choice (
24
- alias ( $ . root_binding_pattern , $ . binding_pattern ) ,
25
- $ . destructuring_pattern ,
26
- $ . pattern_group ,
26
+ prec (
27
+ 'base' ,
28
+ choice (
29
+ alias ( $ . root_binding_pattern , $ . binding_pattern ) ,
30
+ $ . destructuring_pattern ,
31
+ $ . pattern_group ,
32
+ ) ,
27
33
)
28
34
29
35
export const destructuring_pattern = < RuleName extends string > (
30
36
$ : GrammarSymbols < RuleName > ,
31
37
) =>
32
- seq (
33
- optional (
34
- seq (
35
- field (
36
- 'alias' ,
37
- choice (
38
- alias ( $ . identifier , $ . identifier_pattern ) ,
39
- alias ( $ . type , $ . type_pattern ) ,
38
+ prec (
39
+ 'base' ,
40
+ seq (
41
+ optional (
42
+ seq (
43
+ field (
44
+ 'alias' ,
45
+ choice (
46
+ alias ( $ . identifier , $ . identifier_pattern ) ,
47
+ alias ( $ . type , $ . type_pattern ) ,
48
+ ) ,
40
49
) ,
50
+ '@' ,
51
+ ) ,
52
+ ) ,
53
+ field (
54
+ 'pattern' ,
55
+ choice (
56
+ $ . struct_pattern ,
57
+ $ . tuple_pattern ,
58
+ $ . list_pattern ,
59
+ $ . tag_pattern ,
41
60
) ,
42
- '@' ,
43
61
) ,
44
- ) ,
45
- field (
46
- 'pattern' ,
47
- choice ( $ . struct_pattern , $ . tuple_pattern , $ . list_pattern , $ . tag_pattern ) ,
48
62
) ,
49
63
)
50
64
51
65
export const struct_pattern = < RuleName extends string > (
52
66
$ : GrammarSymbols < RuleName > ,
53
67
) =>
54
- buildStruct (
55
- $ ,
56
- 'member' ,
57
- choice (
58
- $ . member_pattern ,
59
- alias ( $ . binding_pattern , $ . shorthand_member_pattern ) ,
68
+ prec (
69
+ 'base' ,
70
+ buildStruct (
71
+ $ ,
72
+ 'member' ,
73
+ choice (
74
+ $ . member_pattern ,
75
+ alias ( $ . binding_pattern , $ . shorthand_member_pattern ) ,
76
+ ) ,
77
+ true ,
60
78
) ,
61
- true ,
62
79
)
63
80
64
81
export const member_pattern = < RuleName extends string > (
65
82
$ : GrammarSymbols < RuleName > ,
66
- ) => buildMember ( $ , $ . _term , $ . _pattern )
83
+ ) => prec ( 'base' , buildMember ( $ , $ . _term , $ . _pattern ) )
67
84
68
85
export const tuple_pattern = < RuleName extends string > (
69
86
$ : GrammarSymbols < RuleName > ,
70
- ) => buildTuple ( $ , 'element' , $ . _pattern , true , false )
87
+ ) => prec ( 'base' , buildTuple ( $ , 'element' , $ . _pattern , true , false ) )
71
88
72
89
export const list_pattern = < RuleName extends string > (
73
90
$ : GrammarSymbols < RuleName > ,
74
- ) => buildList ( $ , 'element' , $ . _pattern , true )
91
+ ) => prec ( 'base' , buildList ( $ , 'element' , $ . _pattern , true ) )
75
92
76
93
export const binding_pattern = < RuleName extends string > (
77
94
$ : GrammarSymbols < RuleName > ,
78
- ) => buildBindingPattern ( $ , true )
95
+ ) => prec ( 'base' , buildBindingPattern ( $ , true ) )
79
96
80
97
export const root_binding_pattern = < RuleName extends string > (
81
98
$ : GrammarSymbols < RuleName > ,
82
- ) => choice ( buildBindingPattern ( $ , false ) )
99
+ ) => prec ( 'base' , choice ( buildBindingPattern ( $ , false ) ) )
83
100
84
101
export const wildcard_pattern = ( ) => '_'
85
102
86
103
export const tag_pattern = < RuleName extends string > (
87
104
$ : GrammarSymbols < RuleName > ,
88
105
) =>
89
106
prec (
90
- Prec . Pattern ,
107
+ 'application' ,
91
108
seq (
92
109
field ( 'name' , alias ( $ . _identifier_without_operators , $ . identifier ) ) ,
93
110
field ( 'pattern' , $ . _pattern ) ,
@@ -96,8 +113,9 @@ export const tag_pattern = <RuleName extends string>(
96
113
97
114
export const _literal_pattern = < RuleName extends string > (
98
115
$ : GrammarSymbols < RuleName > ,
99
- ) => choice ( $ . boolean , $ . decimal , $ . integer , $ . raw_string , $ . regex )
116
+ ) =>
117
+ prec ( 'base' , choice ( $ . boolean , $ . decimal , $ . integer , $ . raw_string , $ . regex ) )
100
118
101
119
export const pattern_group = < RuleName extends string > (
102
120
$ : GrammarSymbols < RuleName > ,
103
- ) => seq ( '(' , field ( 'pattern' , $ . _pattern ) , ')' )
121
+ ) => prec ( 'base' , seq ( '(' , field ( 'pattern' , $ . _pattern ) , ')' ) )
0 commit comments