Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit abab0e3

Browse files
authored
Merge pull request #218 from aspeddro/move-decorator-to-scan
Move inline decorator to scanner
2 parents 27ee755 + e2af3e7 commit abab0e3

File tree

9 files changed

+220
-303
lines changed

9 files changed

+220
-303
lines changed

‎grammar.js‎

Lines changed: 14 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@ module.exports = grammar({
1010
$._template_chars,
1111
$._lparen,
1212
$._rparen,
13-
$._list_constructor
13+
$._list_constructor,
14+
$._decorator,
15+
$._decorator_inline,
1416
],
1517

1618
extras: $ => [
1719
$.comment,
20+
$.decorator,
1821
/[\s\uFEFF\u2060\u200B\u00A0]/
1922
],
2023

@@ -77,41 +80,28 @@ module.exports = grammar({
7780
[$.primary_expression, $._literal_pattern],
7881
[$.primary_expression, $.lazy_pattern],
7982
[$.primary_expression, $._jsx_child],
80-
[$.tuple_pattern, $.parameter],
81-
[$.primary_expression, $.parameter],
82-
[$.primary_expression, $.record_field],
8383
[$.tuple_type, $.function_type_parameter],
8484
[$.list, $.list_pattern],
8585
[$.array, $.array_pattern],
86-
[$.record_field, $.record_pattern],
87-
[$.expression_statement, $.ternary_expression],
8886
[$.type_declaration],
89-
[$.type_binding],
9087
[$.let_declaration],
91-
[$.let_declaration, $.ternary_expression],
9288
[$.variant_identifier, $.module_identifier],
9389
[$.variant, $.variant_pattern],
94-
[$.variant_declaration, $.function_type_parameter],
9590
[$.variant_arguments, $._variant_pattern_parameters],
9691
[$.polyvar, $.polyvar_pattern],
9792
[$._pattern],
98-
[$._record_element, $.jsx_expression],
9993
[$._record_element, $._record_single_field],
10094
[$._record_pun_field, $._record_single_pun_field],
10195
[$._record_field_name, $.record_pattern],
102-
[$.decorator],
10396
[$._statement, $._one_or_more_statements],
10497
[$._inline_type, $.function_type_parameters],
10598
[$.primary_expression, $.parameter, $._pattern],
10699
[$.parameter, $._pattern],
107100
[$.parameter, $.parenthesized_pattern],
108101
[$.parameter, $.tuple_item_pattern],
109-
[$.variant_declaration],
110102
[$.unit, $._function_type_parameter_list],
111103
[$.functor_parameter, $.module_primary_expression, $.module_identifier_path],
112104
[$._reserved_identifier, $.function],
113-
[$.polyvar_type],
114-
[$.let_binding, $.or_pattern],
115105
[$.exception_pattern, $.or_pattern],
116106
[$.type_binding, $._inline_type],
117107
[$._module_structure, $.parenthesized_module_expression]
@@ -141,28 +131,12 @@ module.exports = grammar({
141131
),
142132

143133
statement: $ => choice(
144-
alias($._decorated_statement, $.decorated),
145-
$.decorator_statement,
146134
$.expression_statement,
147135
$.declaration,
148136
$.open_statement,
149137
$.include_statement,
150138
),
151139

152-
_decorated_statement: $ => seq(
153-
repeat1($.decorator),
154-
choice(
155-
$.declaration,
156-
$.expression_statement
157-
)
158-
),
159-
160-
decorator_statement: $ => seq(
161-
'@@',
162-
$.decorator_identifier,
163-
optional($.decorator_arguments)
164-
),
165-
166140
block: $ => prec.right(seq(
167141
'{',
168142
optional($._one_or_more_statements),
@@ -282,7 +256,7 @@ module.exports = grammar({
282256
'type',
283257
optional('rec'),
284258
sep1(
285-
seq(repeat($._newline), repeat($.decorator),'and'),
259+
seq(repeat($._newline), 'and'),
286260
$.type_binding
287261
)
288262
),
@@ -314,7 +288,6 @@ module.exports = grammar({
314288

315289
type_annotation: $ => seq(
316290
':',
317-
repeat($.decorator),
318291
$._inline_type,
319292
),
320293

@@ -367,7 +340,6 @@ module.exports = grammar({
367340
)),
368341

369342
variant_declaration: $ => prec.right(seq(
370-
repeat($.decorator),
371343
$.variant_identifier,
372344
optional($.variant_parameters),
373345
optional($.type_annotation),
@@ -380,7 +352,6 @@ module.exports = grammar({
380352
),
381353

382354
polyvar_type: $ => prec.left(seq(
383-
repeat($.decorator),
384355
choice('[', '[>', '[<',),
385356
optional('|'),
386357
barSep1($.polyvar_declaration),
@@ -390,7 +361,6 @@ module.exports = grammar({
390361
polyvar_declaration: $ => prec.right(
391362
choice(
392363
seq(
393-
repeat($.decorator),
394364
$.polyvar_identifier,
395365
optional($.polyvar_parameters),
396366
),
@@ -411,7 +381,6 @@ module.exports = grammar({
411381
),
412382

413383
record_type_field: $ => seq(
414-
repeat($.decorator),
415384
optional('mutable'),
416385
alias($.value_identifier, $.property_identifier),
417386
optional('?'),
@@ -433,7 +402,6 @@ module.exports = grammar({
433402
object_type_field: $ => choice(
434403
seq('...', choice($.type_identifier, $.type_identifier_path)),
435404
seq(
436-
repeat($.decorator),
437405
alias($.string, $.property_identifier),
438406
':',
439407
$._type,
@@ -471,7 +439,6 @@ module.exports = grammar({
471439

472440
function_type_parameter: $ => seq(
473441
optional($.uncurry),
474-
repeat($.decorator),
475442
choice(
476443
$._type,
477444
seq($.uncurry, $._type),
@@ -483,7 +450,7 @@ module.exports = grammar({
483450
choice('export', 'let'),
484451
optional('rec'),
485452
sep1(
486-
seq(repeat($._newline), repeat($.decorator),'and'),
453+
seq(repeat($._newline), 'and'),
487454
$.let_binding
488455
)
489456
),
@@ -495,14 +462,12 @@ module.exports = grammar({
495462
$.type_annotation,
496463
optional(
497464
seq('=',
498-
repeat($.decorator),
499465
field('body', $.expression)
500466
)
501467
)
502468
),
503469
seq(
504470
'=',
505-
repeat($.decorator),
506471
field('body', $.expression),
507472
)
508473
)
@@ -559,7 +524,6 @@ module.exports = grammar({
559524

560525
parenthesized_expression: $ => seq(
561526
'(',
562-
repeat($.decorator),
563527
$.expression,
564528
optional($.type_annotation),
565529
')'
@@ -578,7 +542,6 @@ module.exports = grammar({
578542
$._definition_signature
579543
),
580544
'=>',
581-
repeat($.decorator),
582545
field('body', $.expression),
583546
)),
584547

@@ -647,27 +610,21 @@ module.exports = grammar({
647610
tuple: $ => seq(
648611
'(',
649612
commaSep2t(
650-
seq(repeat($.decorator),$.expression)
613+
$.expression
651614
),
652615
')',
653616
),
654617

655618
array: $ => seq(
656619
'[',
657-
commaSept(
658-
seq(repeat($.decorator), $.expression)
659-
),
620+
commaSept($.expression),
660621
']'
661622
),
662623

663624
list: $ => seq(
664625
$._list_constructor,
665626
'{',
666-
optional(
667-
commaSep1t(
668-
seq(repeat($.decorator), $._list_element)
669-
)
670-
),
627+
optional(commaSep1t($._list_element)),
671628
'}'
672629
),
673630

@@ -773,7 +730,6 @@ module.exports = grammar({
773730

774731
_call_argument: $ => choice(
775732
seq(
776-
repeat($.decorator),
777733
$.expression,
778734
optional($.type_annotation),
779735
),
@@ -788,7 +744,6 @@ module.exports = grammar({
788744
seq(
789745
'=',
790746
optional('?'),
791-
repeat($.decorator),
792747
field('value', $.expression),
793748
optional(field('type', $.type_annotation)),
794749
),
@@ -933,7 +888,6 @@ module.exports = grammar({
933888
),
934889

935890
tuple_item_pattern: $ => seq(
936-
repeat($.decorator),
937891
$._pattern,
938892
optional($.type_annotation),
939893
),
@@ -947,17 +901,15 @@ module.exports = grammar({
947901
array_pattern: $ => seq(
948902
'[',
949903
optional(commaSep1t(
950-
seq(repeat($.decorator),$._collection_element_pattern)
904+
$._collection_element_pattern
951905
)),
952906
']',
953907
),
954908

955909
list_pattern: $ => seq(
956910
$._list_constructor,
957911
'{',
958-
optional(commaSep1t(
959-
seq(repeat($.decorator), $._collection_element_pattern)
960-
)),
912+
optional(commaSep1t($._collection_element_pattern)),
961913
'}',
962914
),
963915

@@ -1089,10 +1041,9 @@ module.exports = grammar({
10891041
$.expression,
10901042
),
10911043

1092-
decorator: $ => seq(
1093-
'@',
1094-
$.decorator_identifier,
1095-
optional($.decorator_arguments)
1044+
decorator: $ => choice(
1045+
alias($._decorator_inline, $.decorator_identifier),
1046+
seq(alias($._decorator, $.decorator_identifier), $.decorator_arguments)
10961047
),
10971048

10981049
decorator_arguments: $ => seq(
@@ -1365,8 +1316,6 @@ module.exports = grammar({
13651316

13661317
module_identifier: $ => /[A-Z][a-zA-Z0-9_']*/,
13671318

1368-
decorator_identifier: $ => /[a-zA-Z0-9_\.]+/,
1369-
13701319
extension_identifier: $ => /[a-zA-Z0-9_\.]+/,
13711320

13721321
number: $ => {

‎queries/highlights.scm‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,7 @@
8080
; Meta
8181
;-----
8282

83-
[
84-
"@"
85-
"@@"
86-
(decorator_identifier)
87-
] @annotation
83+
(decorator_identifier) @annotation
8884

8985
(extension_identifier) @keyword
9086
("%") @keyword

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /