@@ -11,47 +11,46 @@ module.exports = grammar(HLSL, {
11
11
12
12
conflicts : ( $ , original ) => original . concat ( [
13
13
[ $ . _declarator , $ . type_hinted_declarator ] ,
14
- [ $ . _type_specifier , $ . compound_literal_expression ] ,
15
- [ $ . _type_specifier , $ . _class_name ] ,
16
- [ $ . translation_unit , $ . _declaration_specifiers ] ,
14
+ [ $ . type_specifier , $ . compound_literal_expression ] ,
15
+ [ $ . type_specifier , $ . _class_name ] ,
17
16
[ $ . _declaration_specifiers , $ . declaration_list ] ,
17
+ [ $ . _declaration_specifiers , $ . _top_level_statement ] ,
18
18
[ $ . declaration_list , $ . _empty_declaration ] ,
19
- [ $ . declaration_list , $ . initializer_list ] ,
20
19
] ) ,
21
20
22
21
rules : {
23
22
_top_level_item : ( _ , original ) => original ,
24
- _top_level_statement : ( $ , original ) => choice ( original , $ . import_statement , $ . _type_specifier ) ,
23
+ _top_level_statement : ( $ , original ) => choice ( original , $ . import_statement , $ . type_specifier ) ,
25
24
26
25
placeholder_type_specifier : $ => prec ( 1 , seq (
27
- field ( 'constraint' , optional ( $ . _type_specifier ) ) ,
26
+ field ( 'constraint' , optional ( $ . type_specifier ) ) ,
28
27
choice ( "var" , "let" , "This" ) ,
29
28
) ) ,
30
29
31
30
init_declarator : $ => seq (
32
31
field ( 'declarator' , choice ( $ . _declarator , $ . type_hinted_declarator ) ) ,
33
32
'=' ,
34
- field ( 'value' , choice ( $ . initializer_list , $ . _expression ) ) ,
33
+ field ( 'value' , choice ( $ . initializer_list , $ . expression ) ) ,
35
34
) ,
36
35
37
36
declaration : $ => seq (
38
37
$ . _declaration_specifiers ,
39
38
commaSep1 ( field ( 'declarator' , choice (
40
39
// type hint has ambiguity with semantics in struct declarations
41
- seq ( choice ( $ . _declarator , $ . type_hinted_declarator ) , optional ( alias ( seq ( ':' , $ . _expression ) , $ . semantics ) ) ) ,
40
+ seq ( choice ( $ . _declarator , $ . type_hinted_declarator ) , optional ( alias ( seq ( ':' , $ . expression ) , $ . semantics ) ) ) ,
42
41
$ . init_declarator
43
42
) ) ) ,
44
43
';'
45
44
) ,
46
45
47
46
//compound_statement: $ => seq(
48
47
//'{',
49
- //repeat(choice($._block_item, $._type_specifier )),
48
+ //repeat(choice($._block_item, $.type_specifier )),
50
49
//'}',
51
50
//),
52
51
declaration_list : $ => seq (
53
52
'{' ,
54
- repeat ( choice ( $ . _block_item , $ . _type_specifier ) ) ,
53
+ repeat ( choice ( $ . _block_item , $ . type_specifier ) ) ,
55
54
'}' ,
56
55
) ,
57
56
@@ -68,15 +67,15 @@ module.exports = grammar(HLSL, {
68
67
$ . _class_declaration ,
69
68
) ,
70
69
71
- _type_specifier : ( $ , original ) => choice ( original , $ . interface_specifier , $ . extension_specifier , $ . associatedtype_specifier ) ,
70
+ type_specifier : ( $ , original ) => choice ( original , $ . interface_specifier , $ . extension_specifier , $ . associatedtype_specifier ) ,
72
71
73
72
template_argument_list : $ => seq (
74
73
'<' ,
75
74
commaSep ( choice (
76
- prec . dynamic ( 4 , seq ( "let" , $ . identifier , optional ( $ . interface_requirements ) , optional ( seq ( "=" , $ . _expression ) ) ) ) ,
75
+ prec . dynamic ( 4 , seq ( "let" , $ . identifier , optional ( $ . interface_requirements ) , optional ( seq ( "=" , $ . expression ) ) ) ) ,
77
76
prec . dynamic ( 3 , seq ( $ . type_descriptor , optional ( $ . interface_requirements ) , optional ( seq ( "=" , $ . type_descriptor ) ) ) ) ,
78
77
prec . dynamic ( 2 , alias ( $ . type_parameter_pack_expansion , $ . parameter_pack_expansion ) ) ,
79
- prec . dynamic ( 1 , $ . _expression ) ,
78
+ prec . dynamic ( 1 , $ . expression ) ,
80
79
) ) ,
81
80
alias ( token ( prec ( 1 , '>' ) ) , '>' ) ,
82
81
) ,
@@ -95,10 +94,10 @@ module.exports = grammar(HLSL, {
95
94
...original . members ,
96
95
...table . map ( ( [ operator , precedence ] ) => {
97
96
return prec . left ( precedence , seq (
98
- field ( 'left' , $ . _expression ) ,
97
+ field ( 'left' , $ . expression ) ,
99
98
// @ts -ignore
100
99
field ( 'operator' , operator ) ,
101
- field ( 'right' , $ . _expression ) ,
100
+ field ( 'right' , $ . expression ) ,
102
101
) ) ;
103
102
} ) ) ;
104
103
} ,
@@ -115,7 +114,7 @@ module.exports = grammar(HLSL, {
115
114
property_get : $ => seq ( "get" , choice ( $ . compound_statement , ";" ) ) ,
116
115
property_set : $ => seq ( "set" , choice ( $ . compound_statement , ";" ) ) ,
117
116
associatedtype_declaration : $ => seq ( "associatedtype" , $ . _type_identifier , optional ( $ . base_class_clause ) , ";" ) ,
118
- associatedtype_specifier : $ => prec . right ( seq ( $ . _type_specifier , "." , $ . _type_specifier ) )
117
+ associatedtype_specifier : $ => prec . right ( seq ( $ . type_specifier , "." , $ . type_specifier ) )
119
118
} ,
120
119
} ) ;
121
120
0 commit comments