@@ -216,20 +216,29 @@ module.exports = function defineGrammar(dialect) {
216216
217217 namespace_use_clause : $ => seq (
218218 field ( 'type' , optional ( $ . _namespace_use_type ) ) ,
219- $ . _name ,
219+ choice ( $ . name , $ . qualified_name ) ,
220220 optional ( seq ( keyword ( 'as' ) , field ( 'alias' , $ . name ) ) ) ,
221221 ) ,
222222
223223 _namespace_use_type : _ => choice ( keyword ( 'function' ) , keyword ( 'const' ) ) ,
224224
225225 qualified_name : $ => seq (
226- field ( 'prefix' , seq ( optional ( $ . namespace_name ) , '\\' ) ) ,
226+ field ( 'prefix' , seq ( optional ( '\\' ) , optional ( $ . namespace_name ) , '\\' ) ) ,
227+ $ . name ,
228+ ) ,
229+
230+ relative_name : $ => seq (
231+ field ( 'prefix' , seq (
232+ keyword ( 'namespace' ) ,
233+ optional ( seq ( '\\' , $ . namespace_name ) ) ,
234+ '\\' ,
235+ ) ) ,
227236 $ . name ,
228237 ) ,
229238
230- _name : $ => choice ( $ . _identifier , $ . qualified_name ) ,
239+ _name : $ => choice ( $ . _identifier , $ . qualified_name , $ . relative_name ) ,
231240
232- namespace_name : $ => seq ( optional ( '\\' ) , $ . name , repeat ( seq ( '\\' , $ . name ) ) ) ,
241+ namespace_name : $ => seq ( $ . name , repeat ( seq ( '\\' , $ . name ) ) ) ,
233242
234243 _namespace_use_group : $ => seq (
235244 field ( 'type' , optional ( $ . _namespace_use_type ) ) ,
@@ -538,7 +547,7 @@ module.exports = function defineGrammar(dialect) {
538547 $ . primitive_type ,
539548 ) ,
540549
541- named_type : $ => choice ( $ . name , $ . qualified_name ) ,
550+ named_type : $ => choice ( $ . name , $ . qualified_name , $ . relative_name ) ,
542551
543552 optional_type : $ => seq (
544553 '?' ,
@@ -935,6 +944,7 @@ module.exports = function defineGrammar(dialect) {
935944 $ . literal ,
936945 $ . class_constant_access_expression ,
937946 $ . qualified_name ,
947+ $ . relative_name ,
938948 $ . name ,
939949 $ . array_creation_expression ,
940950 $ . print_intrinsic ,
0 commit comments