tree-sitter-bynk 0.78.0 → 0.80.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
@@ -23,15 +23,17 @@
23
23
 
24
24
  const PREC = {
25
25
  assert: 0,
26
- or: 1,
27
- and: 2,
28
- is: 3,
29
- cmp: 4,
30
- rel: 5,
31
- add: 6,
32
- mul: 7,
33
- unary: 8,
34
- postfix: 9,
26
+ // v0.80: `implies` is the lowest-precedence binary operator (below `||`).
27
+ implies: 1,
28
+ or: 2,
29
+ and: 3,
30
+ is: 4,
31
+ cmp: 5,
32
+ rel: 6,
33
+ add: 7,
34
+ mul: 8,
35
+ unary: 9,
36
+ postfix: 10,
35
37
  };
36
38
 
37
39
  module.exports = grammar({
@@ -549,9 +551,19 @@ module.exports = grammar({
549
551
  "{",
550
552
  field("key", $.key_decl),
551
553
  field("state", $.state_decl),
554
+ repeat($.invariant_decl),
552
555
  repeat($.handler),
553
556
  "}",
554
557
  ),
558
+ // v0.80: an agent invariant — `invariant <name>: <predicate>`. Sits between
559
+ // the state block and the handlers.
560
+ invariant_decl: ($) =>
561
+ seq(
562
+ "invariant",
563
+ field("name", $.identifier),
564
+ ":",
565
+ field("predicate", $._expression),
566
+ ),
555
567
  key_decl: ($) =>
556
568
  seq("key", field("name", $.identifier), ":", field("type", $._type_ref)),
557
569
  state_decl: ($) =>
@@ -730,7 +742,13 @@ module.exports = grammar({
730
742
  // `assert` is an expression (v0.9.1) but also appears in statement
731
743
  // position within a test body (an expression-statement of type `()`).
732
744
  _statement: ($) =>
733
- choice($.let_stmt, $.effect_let_stmt, $.commit_stmt, prec(1, $.assert_expr)),
745
+ choice(
746
+ $.let_stmt,
747
+ $.effect_let_stmt,
748
+ $.effect_send_stmt,
749
+ $.commit_stmt,
750
+ prec(1, $.assert_expr),
751
+ ),
734
752
 
735
753
  let_stmt: ($) =>
736
754
  seq(
@@ -748,6 +766,8 @@ module.exports = grammar({
748
766
  "<-",
749
767
  field("value", $._expression),
750
768
  ),
769
+ // v0.79: `~> expr` — an asynchronous fire-and-forget send (no binder).
770
+ effect_send_stmt: ($) => seq("~>", field("value", $._expression)),
751
771
  commit_stmt: ($) => seq("commit", field("value", $._expression)),
752
772
 
753
773
  // A let/effect-let may bind the discard name `_`.
@@ -840,6 +860,8 @@ module.exports = grammar({
840
860
 
841
861
  binary_expr: ($) =>
842
862
  choice(
863
+ // v0.80: `P implies Q` — right-associative, lowest precedence.
864
+ prec.right(PREC.implies, seq($._expression, "implies", $._expression)),
843
865
  prec.left(PREC.or, seq($._expression, "||", $._expression)),
844
866
  prec.left(PREC.and, seq($._expression, "&&", $._expression)),
845
867
  prec.left(PREC.cmp, seq($._expression, choice("==", "!="), $._expression)),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tree-sitter-bynk",
3
- "version": "0.78.0",
3
+ "version": "0.80.0",
4
4
  "description": "Tree-sitter grammar for the Bynk DSL (v0–v0.16).",
5
5
  "main": "bindings/node",
6
6
  "types": "bindings/node",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "prebuildify": "^6.0.0",
42
- "tree-sitter-cli": "^0.24.0"
42
+ "tree-sitter-cli": "^0.26.9"
43
43
  },
44
44
  "tree-sitter": [
45
45
  {
@@ -46,6 +46,7 @@
46
46
  "mocks"
47
47
  "integration"
48
48
  "wires"
49
+ "invariant"
49
50
  ] @keyword.declaration
50
51
 
51
52
  [
@@ -56,6 +57,7 @@
56
57
  [
57
58
  "where"
58
59
  "and"
60
+ "implies"
59
61
  "enum"
60
62
  ] @keyword.operator
61
63
 
@@ -151,7 +153,7 @@
151
153
  "+" "-" "*" "/"
152
154
  "==" "!=" "<" "<=" ">" ">="
153
155
  "&&" "||" "!"
154
- "<-" "->" "=" "?"
156
+ "<-" "~>" "->" "=" "?"
155
157
  ] @operator
156
158
 
157
159
  [
package/src/grammar.json CHANGED
@@ -2461,6 +2461,13 @@
2461
2461
  "name": "state_decl"
2462
2462
  }
2463
2463
  },
2464
+ {
2465
+ "type": "REPEAT",
2466
+ "content": {
2467
+ "type": "SYMBOL",
2468
+ "name": "invariant_decl"
2469
+ }
2470
+ },
2464
2471
  {
2465
2472
  "type": "REPEAT",
2466
2473
  "content": {
@@ -2474,6 +2481,35 @@
2474
2481
  }
2475
2482
  ]
2476
2483
  },
2484
+ "invariant_decl": {
2485
+ "type": "SEQ",
2486
+ "members": [
2487
+ {
2488
+ "type": "STRING",
2489
+ "value": "invariant"
2490
+ },
2491
+ {
2492
+ "type": "FIELD",
2493
+ "name": "name",
2494
+ "content": {
2495
+ "type": "SYMBOL",
2496
+ "name": "identifier"
2497
+ }
2498
+ },
2499
+ {
2500
+ "type": "STRING",
2501
+ "value": ":"
2502
+ },
2503
+ {
2504
+ "type": "FIELD",
2505
+ "name": "predicate",
2506
+ "content": {
2507
+ "type": "SYMBOL",
2508
+ "name": "_expression"
2509
+ }
2510
+ }
2511
+ ]
2512
+ },
2477
2513
  "key_decl": {
2478
2514
  "type": "SEQ",
2479
2515
  "members": [
@@ -3577,6 +3613,10 @@
3577
3613
  "type": "SYMBOL",
3578
3614
  "name": "effect_let_stmt"
3579
3615
  },
3616
+ {
3617
+ "type": "SYMBOL",
3618
+ "name": "effect_send_stmt"
3619
+ },
3580
3620
  {
3581
3621
  "type": "SYMBOL",
3582
3622
  "name": "commit_stmt"
@@ -3699,6 +3739,23 @@
3699
3739
  }
3700
3740
  ]
3701
3741
  },
3742
+ "effect_send_stmt": {
3743
+ "type": "SEQ",
3744
+ "members": [
3745
+ {
3746
+ "type": "STRING",
3747
+ "value": "~>"
3748
+ },
3749
+ {
3750
+ "type": "FIELD",
3751
+ "name": "value",
3752
+ "content": {
3753
+ "type": "SYMBOL",
3754
+ "name": "_expression"
3755
+ }
3756
+ }
3757
+ ]
3758
+ },
3702
3759
  "commit_stmt": {
3703
3760
  "type": "SEQ",
3704
3761
  "members": [
@@ -4094,7 +4151,7 @@
4094
4151
  },
4095
4152
  "is_expr": {
4096
4153
  "type": "PREC_LEFT",
4097
- "value": 3,
4154
+ "value": 4,
4098
4155
  "content": {
4099
4156
  "type": "SEQ",
4100
4157
  "members": [
@@ -4125,7 +4182,7 @@
4125
4182
  "type": "CHOICE",
4126
4183
  "members": [
4127
4184
  {
4128
- "type": "PREC_LEFT",
4185
+ "type": "PREC_RIGHT",
4129
4186
  "value": 1,
4130
4187
  "content": {
4131
4188
  "type": "SEQ",
@@ -4136,7 +4193,7 @@
4136
4193
  },
4137
4194
  {
4138
4195
  "type": "STRING",
4139
- "value": "||"
4196
+ "value": "implies"
4140
4197
  },
4141
4198
  {
4142
4199
  "type": "SYMBOL",
@@ -4148,6 +4205,27 @@
4148
4205
  {
4149
4206
  "type": "PREC_LEFT",
4150
4207
  "value": 2,
4208
+ "content": {
4209
+ "type": "SEQ",
4210
+ "members": [
4211
+ {
4212
+ "type": "SYMBOL",
4213
+ "name": "_expression"
4214
+ },
4215
+ {
4216
+ "type": "STRING",
4217
+ "value": "||"
4218
+ },
4219
+ {
4220
+ "type": "SYMBOL",
4221
+ "name": "_expression"
4222
+ }
4223
+ ]
4224
+ }
4225
+ },
4226
+ {
4227
+ "type": "PREC_LEFT",
4228
+ "value": 3,
4151
4229
  "content": {
4152
4230
  "type": "SEQ",
4153
4231
  "members": [
@@ -4168,7 +4246,7 @@
4168
4246
  },
4169
4247
  {
4170
4248
  "type": "PREC_LEFT",
4171
- "value": 4,
4249
+ "value": 5,
4172
4250
  "content": {
4173
4251
  "type": "SEQ",
4174
4252
  "members": [
@@ -4198,7 +4276,7 @@
4198
4276
  },
4199
4277
  {
4200
4278
  "type": "PREC_LEFT",
4201
- "value": 5,
4279
+ "value": 6,
4202
4280
  "content": {
4203
4281
  "type": "SEQ",
4204
4282
  "members": [
@@ -4236,7 +4314,7 @@
4236
4314
  },
4237
4315
  {
4238
4316
  "type": "PREC_LEFT",
4239
- "value": 6,
4317
+ "value": 7,
4240
4318
  "content": {
4241
4319
  "type": "SEQ",
4242
4320
  "members": [
@@ -4266,7 +4344,7 @@
4266
4344
  },
4267
4345
  {
4268
4346
  "type": "PREC_LEFT",
4269
- "value": 7,
4347
+ "value": 8,
4270
4348
  "content": {
4271
4349
  "type": "SEQ",
4272
4350
  "members": [
@@ -4298,7 +4376,7 @@
4298
4376
  },
4299
4377
  "unary_expr": {
4300
4378
  "type": "PREC_RIGHT",
4301
- "value": 8,
4379
+ "value": 9,
4302
4380
  "content": {
4303
4381
  "type": "SEQ",
4304
4382
  "members": [
@@ -4543,7 +4621,7 @@
4543
4621
  },
4544
4622
  "method_call": {
4545
4623
  "type": "PREC_LEFT",
4546
- "value": 10,
4624
+ "value": 11,
4547
4625
  "content": {
4548
4626
  "type": "SEQ",
4549
4627
  "members": [
@@ -4687,7 +4765,7 @@
4687
4765
  },
4688
4766
  "field_access": {
4689
4767
  "type": "PREC_LEFT",
4690
- "value": 9,
4768
+ "value": 10,
4691
4769
  "content": {
4692
4770
  "type": "SEQ",
4693
4771
  "members": [
@@ -4716,7 +4794,7 @@
4716
4794
  },
4717
4795
  "call": {
4718
4796
  "type": "PREC_LEFT",
4719
- "value": 9,
4797
+ "value": 10,
4720
4798
  "content": {
4721
4799
  "type": "SEQ",
4722
4800
  "members": [
@@ -5142,7 +5220,7 @@
5142
5220
  },
5143
5221
  "question_expr": {
5144
5222
  "type": "PREC_LEFT",
5145
- "value": 9,
5223
+ "value": 10,
5146
5224
  "content": {
5147
5225
  "type": "SEQ",
5148
5226
  "members": [
@@ -5569,5 +5647,6 @@
5569
5647
  }
5570
5648
  ],
5571
5649
  "inline": [],
5572
- "supertypes": []
5573
- }
5650
+ "supertypes": [],
5651
+ "reserved": {}
5652
+ }
@@ -193,6 +193,10 @@
193
193
  {
194
194
  "type": "handler",
195
195
  "named": true
196
+ },
197
+ {
198
+ "type": "invariant_decl",
199
+ "named": true
196
200
  }
197
201
  ]
198
202
  }
@@ -652,6 +656,10 @@
652
656
  "type": "effect_let_stmt",
653
657
  "named": true
654
658
  },
659
+ {
660
+ "type": "effect_send_stmt",
661
+ "named": true
662
+ },
655
663
  {
656
664
  "type": "let_stmt",
657
665
  "named": true
@@ -1691,6 +1699,134 @@
1691
1699
  ]
1692
1700
  }
1693
1701
  },
1702
+ {
1703
+ "type": "effect_send_stmt",
1704
+ "named": true,
1705
+ "fields": {
1706
+ "value": {
1707
+ "multiple": false,
1708
+ "required": true,
1709
+ "types": [
1710
+ {
1711
+ "type": "assert_expr",
1712
+ "named": true
1713
+ },
1714
+ {
1715
+ "type": "binary_expr",
1716
+ "named": true
1717
+ },
1718
+ {
1719
+ "type": "block",
1720
+ "named": true
1721
+ },
1722
+ {
1723
+ "type": "boolean_literal",
1724
+ "named": true
1725
+ },
1726
+ {
1727
+ "type": "call",
1728
+ "named": true
1729
+ },
1730
+ {
1731
+ "type": "effect_pure_expr",
1732
+ "named": true
1733
+ },
1734
+ {
1735
+ "type": "err_expr",
1736
+ "named": true
1737
+ },
1738
+ {
1739
+ "type": "field_access",
1740
+ "named": true
1741
+ },
1742
+ {
1743
+ "type": "float_literal",
1744
+ "named": true
1745
+ },
1746
+ {
1747
+ "type": "identifier",
1748
+ "named": true
1749
+ },
1750
+ {
1751
+ "type": "if_expr",
1752
+ "named": true
1753
+ },
1754
+ {
1755
+ "type": "is_expr",
1756
+ "named": true
1757
+ },
1758
+ {
1759
+ "type": "lambda_expr",
1760
+ "named": true
1761
+ },
1762
+ {
1763
+ "type": "list_literal",
1764
+ "named": true
1765
+ },
1766
+ {
1767
+ "type": "match_expr",
1768
+ "named": true
1769
+ },
1770
+ {
1771
+ "type": "method_call",
1772
+ "named": true
1773
+ },
1774
+ {
1775
+ "type": "mock_expr",
1776
+ "named": true
1777
+ },
1778
+ {
1779
+ "type": "none_expr",
1780
+ "named": true
1781
+ },
1782
+ {
1783
+ "type": "number_literal",
1784
+ "named": true
1785
+ },
1786
+ {
1787
+ "type": "ok_expr",
1788
+ "named": true
1789
+ },
1790
+ {
1791
+ "type": "paren_expr",
1792
+ "named": true
1793
+ },
1794
+ {
1795
+ "type": "question_expr",
1796
+ "named": true
1797
+ },
1798
+ {
1799
+ "type": "record_construction",
1800
+ "named": true
1801
+ },
1802
+ {
1803
+ "type": "record_spread",
1804
+ "named": true
1805
+ },
1806
+ {
1807
+ "type": "self_expr",
1808
+ "named": true
1809
+ },
1810
+ {
1811
+ "type": "some_expr",
1812
+ "named": true
1813
+ },
1814
+ {
1815
+ "type": "string_literal",
1816
+ "named": true
1817
+ },
1818
+ {
1819
+ "type": "unary_expr",
1820
+ "named": true
1821
+ },
1822
+ {
1823
+ "type": "unit_literal",
1824
+ "named": true
1825
+ }
1826
+ ]
1827
+ }
1828
+ }
1829
+ },
1694
1830
  {
1695
1831
  "type": "enum_type",
1696
1832
  "named": true,
@@ -2668,6 +2804,144 @@
2668
2804
  ]
2669
2805
  }
2670
2806
  },
2807
+ {
2808
+ "type": "invariant_decl",
2809
+ "named": true,
2810
+ "fields": {
2811
+ "name": {
2812
+ "multiple": false,
2813
+ "required": true,
2814
+ "types": [
2815
+ {
2816
+ "type": "identifier",
2817
+ "named": true
2818
+ }
2819
+ ]
2820
+ },
2821
+ "predicate": {
2822
+ "multiple": false,
2823
+ "required": true,
2824
+ "types": [
2825
+ {
2826
+ "type": "assert_expr",
2827
+ "named": true
2828
+ },
2829
+ {
2830
+ "type": "binary_expr",
2831
+ "named": true
2832
+ },
2833
+ {
2834
+ "type": "block",
2835
+ "named": true
2836
+ },
2837
+ {
2838
+ "type": "boolean_literal",
2839
+ "named": true
2840
+ },
2841
+ {
2842
+ "type": "call",
2843
+ "named": true
2844
+ },
2845
+ {
2846
+ "type": "effect_pure_expr",
2847
+ "named": true
2848
+ },
2849
+ {
2850
+ "type": "err_expr",
2851
+ "named": true
2852
+ },
2853
+ {
2854
+ "type": "field_access",
2855
+ "named": true
2856
+ },
2857
+ {
2858
+ "type": "float_literal",
2859
+ "named": true
2860
+ },
2861
+ {
2862
+ "type": "identifier",
2863
+ "named": true
2864
+ },
2865
+ {
2866
+ "type": "if_expr",
2867
+ "named": true
2868
+ },
2869
+ {
2870
+ "type": "is_expr",
2871
+ "named": true
2872
+ },
2873
+ {
2874
+ "type": "lambda_expr",
2875
+ "named": true
2876
+ },
2877
+ {
2878
+ "type": "list_literal",
2879
+ "named": true
2880
+ },
2881
+ {
2882
+ "type": "match_expr",
2883
+ "named": true
2884
+ },
2885
+ {
2886
+ "type": "method_call",
2887
+ "named": true
2888
+ },
2889
+ {
2890
+ "type": "mock_expr",
2891
+ "named": true
2892
+ },
2893
+ {
2894
+ "type": "none_expr",
2895
+ "named": true
2896
+ },
2897
+ {
2898
+ "type": "number_literal",
2899
+ "named": true
2900
+ },
2901
+ {
2902
+ "type": "ok_expr",
2903
+ "named": true
2904
+ },
2905
+ {
2906
+ "type": "paren_expr",
2907
+ "named": true
2908
+ },
2909
+ {
2910
+ "type": "question_expr",
2911
+ "named": true
2912
+ },
2913
+ {
2914
+ "type": "record_construction",
2915
+ "named": true
2916
+ },
2917
+ {
2918
+ "type": "record_spread",
2919
+ "named": true
2920
+ },
2921
+ {
2922
+ "type": "self_expr",
2923
+ "named": true
2924
+ },
2925
+ {
2926
+ "type": "some_expr",
2927
+ "named": true
2928
+ },
2929
+ {
2930
+ "type": "string_literal",
2931
+ "named": true
2932
+ },
2933
+ {
2934
+ "type": "unary_expr",
2935
+ "named": true
2936
+ },
2937
+ {
2938
+ "type": "unit_literal",
2939
+ "named": true
2940
+ }
2941
+ ]
2942
+ }
2943
+ }
2944
+ },
2671
2945
  {
2672
2946
  "type": "is_expr",
2673
2947
  "named": true,
@@ -5715,6 +5989,10 @@
5715
5989
  "type": "effect_let_stmt",
5716
5990
  "named": true
5717
5991
  },
5992
+ {
5993
+ "type": "effect_send_stmt",
5994
+ "named": true
5995
+ },
5718
5996
  {
5719
5997
  "type": "exports_decl",
5720
5998
  "named": true
@@ -6620,7 +6898,8 @@
6620
6898
  },
6621
6899
  {
6622
6900
  "type": "doc_block",
6623
- "named": true
6901
+ "named": true,
6902
+ "extra": true
6624
6903
  },
6625
6904
  {
6626
6905
  "type": "else",
@@ -6670,10 +6949,18 @@
6670
6949
  "type": "if",
6671
6950
  "named": false
6672
6951
  },
6952
+ {
6953
+ "type": "implies",
6954
+ "named": false
6955
+ },
6673
6956
  {
6674
6957
  "type": "integration",
6675
6958
  "named": false
6676
6959
  },
6960
+ {
6961
+ "type": "invariant",
6962
+ "named": false
6963
+ },
6677
6964
  {
6678
6965
  "type": "is",
6679
6966
  "named": false
@@ -6688,7 +6975,8 @@
6688
6975
  },
6689
6976
  {
6690
6977
  "type": "line_comment",
6691
- "named": true
6978
+ "named": true,
6979
+ "extra": true
6692
6980
  },
6693
6981
  {
6694
6982
  "type": "match",
@@ -6797,5 +7085,9 @@
6797
7085
  {
6798
7086
  "type": "}",
6799
7087
  "named": false
7088
+ },
7089
+ {
7090
+ "type": "~>",
7091
+ "named": false
6800
7092
  }
6801
7093
  ]