@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 +61 -1
- package/package.json +1 -1
- package/src/node-types.json +72 -0
- package/tree-sitter-c.wasm +0 -0
- package/tree-sitter.json +1 -1
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', $.
|
|
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
package/src/node-types.json
CHANGED
|
@@ -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
|
},
|
package/tree-sitter-c.wasm
CHANGED
|
Binary file
|