@willbooster/tree-sitter-c 1.5.1 → 1.5.2

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
@@ -71,6 +71,7 @@ module.exports = Object.assign(
71
71
  [$.type_definition, $.sized_type_specifier],
72
72
  [$.type_definition, $._sized_bit_int_specifier],
73
73
  [$.attributed_statement],
74
+ [$._single_attributed_statement],
74
75
  [$._declaration_modifiers, $.attributed_statement],
75
76
  [$.enum_specifier],
76
77
  [$.type_specifier, $._old_style_parameter_list],
@@ -218,6 +219,7 @@ module.exports = Object.assign(
218
219
  ),
219
220
 
220
221
  ...preprocIf('', () => sym('_block_item')),
222
+ ...preprocIf('_in_single_case', () => sym('_single_case_body'), 0, true),
221
223
  ...preprocIf('_in_field_declaration_list', () => sym('_field_declaration_list_item')),
222
224
  ...preprocIf('_in_enumerator_list', () => seq(sym('enumerator'), ',')),
223
225
  ...preprocIf('_in_enumerator_list_no_comma', () => sym('enumerator'), -1),
@@ -901,7 +903,65 @@ module.exports = Object.assign(
901
903
  else_clause: ($) => seq('else', $.statement),
902
904
 
903
905
  switch_statement: ($) =>
904
- seq('switch', field('condition', $.parenthesized_expression), field('body', $.compound_statement)),
906
+ seq('switch', field('condition', $.parenthesized_expression), field('body', $._single_statement)),
907
+
908
+ _single_statement: ($) =>
909
+ choice(
910
+ $.compound_statement,
911
+ $.expression_statement,
912
+ $.switch_statement,
913
+ $.return_statement,
914
+ $.break_statement,
915
+ $.continue_statement,
916
+ $.goto_statement,
917
+ $.seh_try_statement,
918
+ $.seh_leave_statement,
919
+ alias($._single_case_statement, $.case_statement),
920
+ alias($._single_labeled_statement, $.labeled_statement),
921
+ alias($._single_if_statement, $.if_statement),
922
+ alias($._single_while_statement, $.while_statement),
923
+ alias($._single_do_statement, $.do_statement),
924
+ alias($._single_for_statement, $.for_statement),
925
+ alias($._single_attributed_statement, $.attributed_statement)
926
+ ),
927
+
928
+ _single_case_statement: ($) =>
929
+ prec.right(
930
+ seq(
931
+ choice(
932
+ seq('case', field('value', $.expression), optional(seq('...', field('end_value', $.expression)))),
933
+ 'default'
934
+ ),
935
+ ':',
936
+ optional($._single_case_body)
937
+ )
938
+ ),
939
+ _single_case_body: ($) =>
940
+ choice(
941
+ $._single_statement,
942
+ $.declaration,
943
+ $.type_definition,
944
+ alias(sym('preproc_if_in_single_case'), sym('preproc_if')),
945
+ alias(sym('preproc_ifdef_in_single_case'), sym('preproc_ifdef'))
946
+ ),
947
+ _single_labeled_statement: ($) =>
948
+ seq(field('label', $._statement_identifier), ':', choice($._single_statement, $.declaration)),
949
+ _single_if_statement: ($) =>
950
+ prec.right(
951
+ seq(
952
+ 'if',
953
+ field('condition', $.parenthesized_expression),
954
+ field('consequence', $._single_statement),
955
+ optional(field('alternative', alias($._single_else_clause, $.else_clause)))
956
+ )
957
+ ),
958
+ _single_else_clause: ($) => seq('else', $._single_statement),
959
+ _single_while_statement: ($) =>
960
+ seq('while', field('condition', $.parenthesized_expression), field('body', $._single_statement)),
961
+ _single_do_statement: ($) =>
962
+ seq('do', field('body', $._single_statement), 'while', field('condition', $.parenthesized_expression), ';'),
963
+ _single_for_statement: ($) => seq('for', '(', $._for_statement_body, ')', field('body', $._single_statement)),
964
+ _single_attributed_statement: ($) => seq(repeat1($.attribute_declaration), $._single_statement),
905
965
 
906
966
  case_statement: ($) =>
907
967
  prec.right(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@willbooster/tree-sitter-c",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "C grammar for tree-sitter",
5
5
  "keywords": [
6
6
  "incremental",
@@ -1031,6 +1031,10 @@
1031
1031
  "type": "break_statement",
1032
1032
  "named": true
1033
1033
  },
1034
+ {
1035
+ "type": "case_statement",
1036
+ "named": true
1037
+ },
1034
1038
  {
1035
1039
  "type": "compound_statement",
1036
1040
  "named": true
@@ -1067,6 +1071,14 @@
1067
1071
  "type": "labeled_statement",
1068
1072
  "named": true
1069
1073
  },
1074
+ {
1075
+ "type": "preproc_if",
1076
+ "named": true
1077
+ },
1078
+ {
1079
+ "type": "preproc_ifdef",
1080
+ "named": true
1081
+ },
1070
1082
  {
1071
1083
  "type": "return_statement",
1072
1084
  "named": true
@@ -3880,9 +3892,69 @@
3880
3892
  "multiple": false,
3881
3893
  "required": true,
3882
3894
  "types": [
3895
+ {
3896
+ "type": "attributed_statement",
3897
+ "named": true
3898
+ },
3899
+ {
3900
+ "type": "break_statement",
3901
+ "named": true
3902
+ },
3903
+ {
3904
+ "type": "case_statement",
3905
+ "named": true
3906
+ },
3883
3907
  {
3884
3908
  "type": "compound_statement",
3885
3909
  "named": true
3910
+ },
3911
+ {
3912
+ "type": "continue_statement",
3913
+ "named": true
3914
+ },
3915
+ {
3916
+ "type": "do_statement",
3917
+ "named": true
3918
+ },
3919
+ {
3920
+ "type": "expression_statement",
3921
+ "named": true
3922
+ },
3923
+ {
3924
+ "type": "for_statement",
3925
+ "named": true
3926
+ },
3927
+ {
3928
+ "type": "goto_statement",
3929
+ "named": true
3930
+ },
3931
+ {
3932
+ "type": "if_statement",
3933
+ "named": true
3934
+ },
3935
+ {
3936
+ "type": "labeled_statement",
3937
+ "named": true
3938
+ },
3939
+ {
3940
+ "type": "return_statement",
3941
+ "named": true
3942
+ },
3943
+ {
3944
+ "type": "seh_leave_statement",
3945
+ "named": true
3946
+ },
3947
+ {
3948
+ "type": "seh_try_statement",
3949
+ "named": true
3950
+ },
3951
+ {
3952
+ "type": "switch_statement",
3953
+ "named": true
3954
+ },
3955
+ {
3956
+ "type": "while_statement",
3957
+ "named": true
3886
3958
  }
3887
3959
  ]
3888
3960
  },
Binary file
package/tree-sitter.json CHANGED
@@ -16,7 +16,7 @@
16
16
  }
17
17
  ],
18
18
  "metadata": {
19
- "version": "1.5.1",
19
+ "version": "1.5.2",
20
20
  "license": "MIT",
21
21
  "description": "C grammar for tree-sitter",
22
22
  "authors": [