tree-sitter-bynk 0.216.1 → 0.219.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/grammar.js CHANGED
@@ -1186,7 +1186,17 @@ module.exports = grammar({
1186
1186
  match_arm: ($) =>
1187
1187
  prec.right(
1188
1188
  seq(
1189
- field("pattern", $._pattern),
1189
+ // #472: `refined_pattern` is admitted only here — the top-level
1190
+ // pattern of a match arm — not through `_pattern` generally, so it
1191
+ // stays unreachable from `is_expr` and from nested payload
1192
+ // positions (`_pattern_binding`). Both of those sit in
1193
+ // expression-continuable contexts (`&&`, `(`, …) where
1194
+ // `refinement`'s own `&&`-joined predicate list becomes ambiguous
1195
+ // with the surrounding expression grammar; a match arm's pattern is
1196
+ // always followed by a fixed terminator (`if`/`=>`), so no such
1197
+ // ambiguity exists here. This also matches the semantic scope
1198
+ // (v1: no nested/`is`-position refined patterns).
1199
+ field("pattern", choice($._pattern, $.refined_pattern)),
1190
1200
  // v0.145 (ADR 0169): an optional trailing `if <Bool-expr>` guard,
1191
1201
  // between the pattern and `=>`, gating the arm over its bindings. The
1192
1202
  // `if` reuses the existing keyword token (already highlighted).
@@ -1198,9 +1208,31 @@ module.exports = grammar({
1198
1208
  optional(","),
1199
1209
  ),
1200
1210
  ),
1211
+ refined_pattern: ($) =>
1212
+ seq(field("inner", $._pattern), "where", field("predicate", $.refinement)),
1201
1213
 
1202
1214
  _pattern: ($) =>
1203
- choice($.wildcard_pattern, $.literal_pattern, $.variant_pattern),
1215
+ choice(
1216
+ $.wildcard_pattern,
1217
+ $.literal_pattern,
1218
+ $.variant_pattern,
1219
+ $.or_pattern,
1220
+ $.paren_pattern,
1221
+ ),
1222
+ // #474 §2.3.4: `p₁ | p₂ | … | pₙ` — an or-pattern, left-associative;
1223
+ // matches if any alternative matches. `|` is a pattern-position operator
1224
+ // only — not a valid expression operator, and lexically distinct from
1225
+ // boolean `||` — so there is no ambiguity with the surrounding
1226
+ // `is`/match-arm productions.
1227
+ or_pattern: ($) => prec.left(1, seq($._pattern, "|", $._pattern)),
1228
+ // #474 §2.3.6: parentheses around a pattern are transparent grouping —
1229
+ // `is (Held(...) | Confirmed(...))` — recommended for readability around
1230
+ // an or-pattern but not otherwise meaningful; `is` already greedily
1231
+ // parses one whole pattern, `|`-chain included, with or without them.
1232
+ // #472: also never admits `refined_pattern` inside (mirrors `is_expr` —
1233
+ // a refined pattern can only ever be a match arm's outermost pattern,
1234
+ // never nested, parenthesized, or one alternative of an outer `|`-chain).
1235
+ paren_pattern: ($) => seq("(", $._pattern, ")"),
1204
1236
  wildcard_pattern: () => "_",
1205
1237
  // v0.130 §2.3.4: a literal pattern — an integer (optionally negated), a
1206
1238
  // string, or a boolean. A closed set (ADR 0001); no `Float`, no `()`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tree-sitter-bynk",
3
- "version": "0.216.1",
3
+ "version": "0.219.0",
4
4
  "description": "Tree-sitter grammar for the Bynk DSL (v0–v0.16).",
5
5
  "main": "bindings/node",
6
6
  "types": "bindings/node",
package/src/grammar.json CHANGED
@@ -5696,8 +5696,17 @@
5696
5696
  "type": "FIELD",
5697
5697
  "name": "pattern",
5698
5698
  "content": {
5699
- "type": "SYMBOL",
5700
- "name": "_pattern"
5699
+ "type": "CHOICE",
5700
+ "members": [
5701
+ {
5702
+ "type": "SYMBOL",
5703
+ "name": "_pattern"
5704
+ },
5705
+ {
5706
+ "type": "SYMBOL",
5707
+ "name": "refined_pattern"
5708
+ }
5709
+ ]
5701
5710
  }
5702
5711
  },
5703
5712
  {
@@ -5752,6 +5761,31 @@
5752
5761
  ]
5753
5762
  }
5754
5763
  },
5764
+ "refined_pattern": {
5765
+ "type": "SEQ",
5766
+ "members": [
5767
+ {
5768
+ "type": "FIELD",
5769
+ "name": "inner",
5770
+ "content": {
5771
+ "type": "SYMBOL",
5772
+ "name": "_pattern"
5773
+ }
5774
+ },
5775
+ {
5776
+ "type": "STRING",
5777
+ "value": "where"
5778
+ },
5779
+ {
5780
+ "type": "FIELD",
5781
+ "name": "predicate",
5782
+ "content": {
5783
+ "type": "SYMBOL",
5784
+ "name": "refinement"
5785
+ }
5786
+ }
5787
+ ]
5788
+ },
5755
5789
  "_pattern": {
5756
5790
  "type": "CHOICE",
5757
5791
  "members": [
@@ -5766,6 +5800,52 @@
5766
5800
  {
5767
5801
  "type": "SYMBOL",
5768
5802
  "name": "variant_pattern"
5803
+ },
5804
+ {
5805
+ "type": "SYMBOL",
5806
+ "name": "or_pattern"
5807
+ },
5808
+ {
5809
+ "type": "SYMBOL",
5810
+ "name": "paren_pattern"
5811
+ }
5812
+ ]
5813
+ },
5814
+ "or_pattern": {
5815
+ "type": "PREC_LEFT",
5816
+ "value": 1,
5817
+ "content": {
5818
+ "type": "SEQ",
5819
+ "members": [
5820
+ {
5821
+ "type": "SYMBOL",
5822
+ "name": "_pattern"
5823
+ },
5824
+ {
5825
+ "type": "STRING",
5826
+ "value": "|"
5827
+ },
5828
+ {
5829
+ "type": "SYMBOL",
5830
+ "name": "_pattern"
5831
+ }
5832
+ ]
5833
+ }
5834
+ },
5835
+ "paren_pattern": {
5836
+ "type": "SEQ",
5837
+ "members": [
5838
+ {
5839
+ "type": "STRING",
5840
+ "value": "("
5841
+ },
5842
+ {
5843
+ "type": "SYMBOL",
5844
+ "name": "_pattern"
5845
+ },
5846
+ {
5847
+ "type": "STRING",
5848
+ "value": ")"
5769
5849
  }
5770
5850
  ]
5771
5851
  },
@@ -4419,6 +4419,14 @@
4419
4419
  "type": "literal_pattern",
4420
4420
  "named": true
4421
4421
  },
4422
+ {
4423
+ "type": "or_pattern",
4424
+ "named": true
4425
+ },
4426
+ {
4427
+ "type": "paren_pattern",
4428
+ "named": true
4429
+ },
4422
4430
  {
4423
4431
  "type": "variant_pattern",
4424
4432
  "named": true
@@ -5583,6 +5591,18 @@
5583
5591
  "type": "literal_pattern",
5584
5592
  "named": true
5585
5593
  },
5594
+ {
5595
+ "type": "or_pattern",
5596
+ "named": true
5597
+ },
5598
+ {
5599
+ "type": "paren_pattern",
5600
+ "named": true
5601
+ },
5602
+ {
5603
+ "type": "refined_pattern",
5604
+ "named": true
5605
+ },
5586
5606
  {
5587
5607
  "type": "variant_pattern",
5588
5608
  "named": true
@@ -6075,6 +6095,14 @@
6075
6095
  "type": "literal_pattern",
6076
6096
  "named": true
6077
6097
  },
6098
+ {
6099
+ "type": "or_pattern",
6100
+ "named": true
6101
+ },
6102
+ {
6103
+ "type": "paren_pattern",
6104
+ "named": true
6105
+ },
6078
6106
  {
6079
6107
  "type": "variant_pattern",
6080
6108
  "named": true
@@ -6439,6 +6467,37 @@
6439
6467
  }
6440
6468
  }
6441
6469
  },
6470
+ {
6471
+ "type": "or_pattern",
6472
+ "named": true,
6473
+ "fields": {},
6474
+ "children": {
6475
+ "multiple": true,
6476
+ "required": true,
6477
+ "types": [
6478
+ {
6479
+ "type": "literal_pattern",
6480
+ "named": true
6481
+ },
6482
+ {
6483
+ "type": "or_pattern",
6484
+ "named": true
6485
+ },
6486
+ {
6487
+ "type": "paren_pattern",
6488
+ "named": true
6489
+ },
6490
+ {
6491
+ "type": "variant_pattern",
6492
+ "named": true
6493
+ },
6494
+ {
6495
+ "type": "wildcard_pattern",
6496
+ "named": true
6497
+ }
6498
+ ]
6499
+ }
6500
+ },
6442
6501
  {
6443
6502
  "type": "param",
6444
6503
  "named": true,
@@ -6624,6 +6683,37 @@
6624
6683
  ]
6625
6684
  }
6626
6685
  },
6686
+ {
6687
+ "type": "paren_pattern",
6688
+ "named": true,
6689
+ "fields": {},
6690
+ "children": {
6691
+ "multiple": false,
6692
+ "required": true,
6693
+ "types": [
6694
+ {
6695
+ "type": "literal_pattern",
6696
+ "named": true
6697
+ },
6698
+ {
6699
+ "type": "or_pattern",
6700
+ "named": true
6701
+ },
6702
+ {
6703
+ "type": "paren_pattern",
6704
+ "named": true
6705
+ },
6706
+ {
6707
+ "type": "variant_pattern",
6708
+ "named": true
6709
+ },
6710
+ {
6711
+ "type": "wildcard_pattern",
6712
+ "named": true
6713
+ }
6714
+ ]
6715
+ }
6716
+ },
6627
6717
  {
6628
6718
  "type": "pred_atom",
6629
6719
  "named": true,
@@ -7437,6 +7527,48 @@
7437
7527
  ]
7438
7528
  }
7439
7529
  },
7530
+ {
7531
+ "type": "refined_pattern",
7532
+ "named": true,
7533
+ "fields": {
7534
+ "inner": {
7535
+ "multiple": false,
7536
+ "required": true,
7537
+ "types": [
7538
+ {
7539
+ "type": "literal_pattern",
7540
+ "named": true
7541
+ },
7542
+ {
7543
+ "type": "or_pattern",
7544
+ "named": true
7545
+ },
7546
+ {
7547
+ "type": "paren_pattern",
7548
+ "named": true
7549
+ },
7550
+ {
7551
+ "type": "variant_pattern",
7552
+ "named": true
7553
+ },
7554
+ {
7555
+ "type": "wildcard_pattern",
7556
+ "named": true
7557
+ }
7558
+ ]
7559
+ },
7560
+ "predicate": {
7561
+ "multiple": false,
7562
+ "required": true,
7563
+ "types": [
7564
+ {
7565
+ "type": "refinement",
7566
+ "named": true
7567
+ }
7568
+ ]
7569
+ }
7570
+ }
7571
+ },
7440
7572
  {
7441
7573
  "type": "refined_type",
7442
7574
  "named": true,
@@ -9969,6 +10101,14 @@
9969
10101
  "type": "named_binding",
9970
10102
  "named": true
9971
10103
  },
10104
+ {
10105
+ "type": "or_pattern",
10106
+ "named": true
10107
+ },
10108
+ {
10109
+ "type": "paren_pattern",
10110
+ "named": true
10111
+ },
9972
10112
  {
9973
10113
  "type": "variant_pattern",
9974
10114
  "named": true