@willbooster/tree-sitter-c 1.5.0 → 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/README.md +1 -1
- package/grammar.js +77 -6
- package/package.json +3 -2
- package/src/identifier.h +199 -0
- package/src/node-types.json +72 -0
- package/src/pragma.h +220 -16
- package/src/scanner.c +24 -9
- package/tree-sitter-c.wasm +0 -0
- package/tree-sitter.json +1 -1
package/README.md
CHANGED
|
@@ -57,7 +57,7 @@ const parser = new Parser();
|
|
|
57
57
|
parser.setLanguage(await Language.load(c));
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
The package also ships `grammar.js`, the scanner sources `src/scanner.c` and `src/
|
|
60
|
+
The package also ships `grammar.js`, the scanner sources `src/scanner.c`, `src/pragma.h` and `src/identifier.h`, the queries in `queries/`,
|
|
61
61
|
and the node types in `src/node-types.json` for grammars extending C (such as C++).
|
|
62
62
|
|
|
63
63
|
In Rust, depend on the [crate](https://crates.io/crates/willbooster-tree-sitter-c) and on
|
package/grammar.js
CHANGED
|
@@ -37,6 +37,7 @@ const PREC = {
|
|
|
37
37
|
|
|
38
38
|
const LINE_COMMENT = seq('//', /(\\+(.|\r?\n)|[^\\\n])*/);
|
|
39
39
|
const PRAGMA_SPACING = repeat(choice(/\s/, /\\\r?\n/));
|
|
40
|
+
const PREPROC_ARGUMENT = /\S([^/\n]|\/[^*]|\\\r?\n)*/;
|
|
40
41
|
const VA_ARG_KEYWORDS = choice('va_arg', '__builtin_va_arg');
|
|
41
42
|
|
|
42
43
|
// oxlint-disable-next-line unicorn/prefer-module -- This package is CommonJS, so tree-sitter loads grammar.js as CommonJS.
|
|
@@ -70,6 +71,7 @@ module.exports = Object.assign(
|
|
|
70
71
|
[$.type_definition, $.sized_type_specifier],
|
|
71
72
|
[$.type_definition, $._sized_bit_int_specifier],
|
|
72
73
|
[$.attributed_statement],
|
|
74
|
+
[$._single_attributed_statement],
|
|
73
75
|
[$._declaration_modifiers, $.attributed_statement],
|
|
74
76
|
[$.enum_specifier],
|
|
75
77
|
[$.type_specifier, $._old_style_parameter_list],
|
|
@@ -84,7 +86,13 @@ module.exports = Object.assign(
|
|
|
84
86
|
[$._compound_literal_constexpr_specifier, $.type_qualifier],
|
|
85
87
|
],
|
|
86
88
|
|
|
87
|
-
externals: () => [
|
|
89
|
+
externals: () => [
|
|
90
|
+
sym('pragma_operator'),
|
|
91
|
+
sym('preproc_arg'),
|
|
92
|
+
sym('_preproc_newline'),
|
|
93
|
+
sym('_preproc_lparen'),
|
|
94
|
+
sym('_preproc_directive_arg'),
|
|
95
|
+
],
|
|
88
96
|
|
|
89
97
|
extras: ($) => [$.pragma_operator, /\s|\\\r?\n/, $.comment],
|
|
90
98
|
|
|
@@ -201,23 +209,28 @@ module.exports = Object.assign(
|
|
|
201
209
|
sym('_preproc_newline')
|
|
202
210
|
),
|
|
203
211
|
|
|
204
|
-
preproc_params: ($) => seq(
|
|
212
|
+
preproc_params: ($) => seq(alias($._preproc_lparen, '('), commaSep(choice($.identifier, '...')), ')'),
|
|
205
213
|
|
|
206
214
|
preproc_call: ($) =>
|
|
207
215
|
seq(
|
|
208
216
|
field('directive', $.preproc_directive),
|
|
209
|
-
field('argument', optional($.preproc_arg)),
|
|
217
|
+
field('argument', optional(alias($._preproc_directive_arg, $.preproc_arg))),
|
|
210
218
|
sym('_preproc_newline')
|
|
211
219
|
),
|
|
212
220
|
|
|
213
221
|
...preprocIf('', () => sym('_block_item')),
|
|
222
|
+
...preprocIf('_in_single_case', () => sym('_single_case_body'), 0, true),
|
|
214
223
|
...preprocIf('_in_field_declaration_list', () => sym('_field_declaration_list_item')),
|
|
215
224
|
...preprocIf('_in_enumerator_list', () => seq(sym('enumerator'), ',')),
|
|
216
225
|
...preprocIf('_in_enumerator_list_no_comma', () => sym('enumerator'), -1),
|
|
217
226
|
|
|
218
227
|
_preproc_newline: () => token.immediate(/\r?\n/),
|
|
219
228
|
|
|
220
|
-
|
|
229
|
+
_preproc_lparen: () => token.immediate(/\(/),
|
|
230
|
+
|
|
231
|
+
preproc_arg: () => token(prec(-1, PREPROC_ARGUMENT)),
|
|
232
|
+
|
|
233
|
+
_preproc_directive_arg: () => token(prec(-2, PREPROC_ARGUMENT)),
|
|
221
234
|
preproc_directive: () => /#[ \t]*[a-zA-Z0-9]\w*/,
|
|
222
235
|
|
|
223
236
|
_preproc_expression: ($) =>
|
|
@@ -890,7 +903,65 @@ module.exports = Object.assign(
|
|
|
890
903
|
else_clause: ($) => seq('else', $.statement),
|
|
891
904
|
|
|
892
905
|
switch_statement: ($) =>
|
|
893
|
-
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),
|
|
894
965
|
|
|
895
966
|
case_statement: ($) =>
|
|
896
967
|
prec.right(
|
|
@@ -1255,7 +1326,7 @@ module.exports = Object.assign(
|
|
|
1255
1326
|
'directive',
|
|
1256
1327
|
alias(token(/#[ \t]*(embed|include|undef|error|warning|line|pragma)/), $.preproc_directive)
|
|
1257
1328
|
),
|
|
1258
|
-
field('argument', optional($.preproc_arg)),
|
|
1329
|
+
field('argument', optional(alias($._preproc_directive_arg, $.preproc_arg))),
|
|
1259
1330
|
alias(sym('_preproc_newline'), '\n')
|
|
1260
1331
|
),
|
|
1261
1332
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@willbooster/tree-sitter-c",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "C grammar for tree-sitter",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"incremental",
|
|
@@ -22,11 +22,12 @@
|
|
|
22
22
|
"tree-sitter.json",
|
|
23
23
|
"*.wasm",
|
|
24
24
|
"src/pragma.h",
|
|
25
|
+
"src/identifier.h",
|
|
25
26
|
"src/scanner.c"
|
|
26
27
|
],
|
|
27
28
|
"scripts": {
|
|
28
29
|
"build-wasm": "script/tree-sitter build --wasm",
|
|
29
|
-
"build/ci": "script/tree-sitter generate && script/tree-sitter build --wasm",
|
|
30
|
+
"build/ci": "script/tree-sitter generate && bun script/generateIdentifierRanges.js && script/tree-sitter build --wasm",
|
|
30
31
|
"cleanup": "bun wb lint --fix --format",
|
|
31
32
|
"format": "bun wb lint --format",
|
|
32
33
|
"lint": "bun wb lint",
|
package/src/identifier.h
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// Generated by script/generateIdentifierRanges.js from the parser's Unicode identifier tables.
|
|
2
|
+
#ifndef TREE_SITTER_C_IDENTIFIER_H_
|
|
3
|
+
#define TREE_SITTER_C_IDENTIFIER_H_
|
|
4
|
+
|
|
5
|
+
#include "tree_sitter/parser.h"
|
|
6
|
+
|
|
7
|
+
static const TSCharacterRange preproc_identifier_start[] = {
|
|
8
|
+
{'$', '$'}, {'A', 'Z'}, {'\\', '\\'}, {'_', '_'}, {'a', 'z'}, {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba},
|
|
9
|
+
{0xc0, 0xd6}, {0xd8, 0xf6}, {0xf8, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, {0x2ec, 0x2ec}, {0x2ee, 0x2ee}, {0x370, 0x374},
|
|
10
|
+
{0x376, 0x377}, {0x37b, 0x37d}, {0x37f, 0x37f}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3f5},
|
|
11
|
+
{0x3f7, 0x481}, {0x48a, 0x52f}, {0x531, 0x556}, {0x559, 0x559}, {0x560, 0x588}, {0x5d0, 0x5ea}, {0x5ef, 0x5f2}, {0x620, 0x64a},
|
|
12
|
+
{0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710},
|
|
13
|
+
{0x712, 0x72f}, {0x74d, 0x7a5}, {0x7b1, 0x7b1}, {0x7ca, 0x7ea}, {0x7f4, 0x7f5}, {0x7fa, 0x7fa}, {0x800, 0x815}, {0x81a, 0x81a},
|
|
14
|
+
{0x824, 0x824}, {0x828, 0x828}, {0x840, 0x858}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88e}, {0x8a0, 0x8c9}, {0x904, 0x939},
|
|
15
|
+
{0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x971, 0x980}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0},
|
|
16
|
+
{0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9ce, 0x9ce}, {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0x9fc, 0x9fc},
|
|
17
|
+
{0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c},
|
|
18
|
+
{0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9},
|
|
19
|
+
{0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1}, {0xaf9, 0xaf9}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30},
|
|
20
|
+
{0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a},
|
|
21
|
+
{0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb9},
|
|
22
|
+
{0xbd0, 0xbd0}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc39}, {0xc3d, 0xc3d}, {0xc58, 0xc5a}, {0xc5d, 0xc5d},
|
|
23
|
+
{0xc60, 0xc61}, {0xc80, 0xc80}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd},
|
|
24
|
+
{0xcdd, 0xcde}, {0xce0, 0xce1}, {0xcf1, 0xcf2}, {0xd04, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd3a}, {0xd3d, 0xd3d}, {0xd4e, 0xd4e},
|
|
25
|
+
{0xd54, 0xd56}, {0xd5f, 0xd61}, {0xd7a, 0xd7f}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6},
|
|
26
|
+
{0xe01, 0xe30}, {0xe32, 0xe32}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe86, 0xe8a}, {0xe8c, 0xea3}, {0xea5, 0xea5},
|
|
27
|
+
{0xea7, 0xeb0}, {0xeb2, 0xeb2}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedf}, {0xf00, 0xf00}, {0xf40, 0xf47},
|
|
28
|
+
{0xf49, 0xf6c}, {0xf88, 0xf8c}, {0x1000, 0x102a}, {0x103f, 0x103f}, {0x1050, 0x1055}, {0x105a, 0x105d}, {0x1061, 0x1061}, {0x1065, 0x1066},
|
|
29
|
+
{0x106e, 0x1070}, {0x1075, 0x1081}, {0x108e, 0x108e}, {0x10a0, 0x10c5}, {0x10c7, 0x10c7}, {0x10cd, 0x10cd}, {0x10d0, 0x10fa}, {0x10fc, 0x1248},
|
|
30
|
+
{0x124a, 0x124d}, {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5},
|
|
31
|
+
{0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, {0x1380, 0x138f},
|
|
32
|
+
{0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16ee, 0x16f8}, {0x1700, 0x1711},
|
|
33
|
+
{0x171f, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1878},
|
|
34
|
+
{0x1880, 0x18a8}, {0x18aa, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9},
|
|
35
|
+
{0x1a00, 0x1a16}, {0x1a20, 0x1a54}, {0x1aa7, 0x1aa7}, {0x1b05, 0x1b33}, {0x1b45, 0x1b4c}, {0x1b83, 0x1ba0}, {0x1bae, 0x1baf}, {0x1bba, 0x1be5},
|
|
36
|
+
{0x1c00, 0x1c23}, {0x1c4d, 0x1c4f}, {0x1c5a, 0x1c7d}, {0x1c80, 0x1c8a}, {0x1c90, 0x1cba}, {0x1cbd, 0x1cbf}, {0x1ce9, 0x1cec}, {0x1cee, 0x1cf3},
|
|
37
|
+
{0x1cf5, 0x1cf6}, {0x1cfa, 0x1cfa}, {0x1d00, 0x1dbf}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
|
|
38
|
+
{0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4},
|
|
39
|
+
{0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f},
|
|
40
|
+
{0x2090, 0x209c}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, {0x2118, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126},
|
|
41
|
+
{0x2128, 0x2128}, {0x212a, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149}, {0x214e, 0x214e}, {0x2160, 0x2188}, {0x2c00, 0x2ce4}, {0x2ceb, 0x2cee},
|
|
42
|
+
{0x2cf2, 0x2cf3}, {0x2d00, 0x2d25}, {0x2d27, 0x2d27}, {0x2d2d, 0x2d2d}, {0x2d30, 0x2d67}, {0x2d6f, 0x2d6f}, {0x2d80, 0x2d96}, {0x2da0, 0x2da6},
|
|
43
|
+
{0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x3005, 0x3007},
|
|
44
|
+
{0x3021, 0x3029}, {0x3031, 0x3035}, {0x3038, 0x303c}, {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312f},
|
|
45
|
+
{0x3131, 0x318e}, {0x31a0, 0x31bf}, {0x31f0, 0x31ff}, {0x3400, 0x4dbf}, {0x4e00, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa61f},
|
|
46
|
+
{0xa62a, 0xa62b}, {0xa640, 0xa66e}, {0xa67f, 0xa69d}, {0xa6a0, 0xa6ef}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7cd}, {0xa7d0, 0xa7d1},
|
|
47
|
+
{0xa7d3, 0xa7d3}, {0xa7d5, 0xa7dc}, {0xa7f2, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, {0xa80c, 0xa822}, {0xa840, 0xa873}, {0xa882, 0xa8b3},
|
|
48
|
+
{0xa8f2, 0xa8f7}, {0xa8fb, 0xa8fb}, {0xa8fd, 0xa8fe}, {0xa90a, 0xa925}, {0xa930, 0xa946}, {0xa960, 0xa97c}, {0xa984, 0xa9b2}, {0xa9cf, 0xa9cf},
|
|
49
|
+
{0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28}, {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7a, 0xaa7a},
|
|
50
|
+
{0xaa7e, 0xaaaf}, {0xaab1, 0xaab1}, {0xaab5, 0xaab6}, {0xaab9, 0xaabd}, {0xaac0, 0xaac0}, {0xaac2, 0xaac2}, {0xaadb, 0xaadd}, {0xaae0, 0xaaea},
|
|
51
|
+
{0xaaf2, 0xaaf4}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab69},
|
|
52
|
+
{0xab70, 0xabe2}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
|
|
53
|
+
{0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1},
|
|
54
|
+
{0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdf9}, {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77},
|
|
55
|
+
{0xfe79, 0xfe79}, {0xfe7b, 0xfe7b}, {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xff9d}, {0xffa0, 0xffbe},
|
|
56
|
+
{0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003c, 0x1003d},
|
|
57
|
+
{0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a},
|
|
58
|
+
{0x10350, 0x10375}, {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5}, {0x10400, 0x1049d}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb},
|
|
59
|
+
{0x10500, 0x10527}, {0x10530, 0x10563}, {0x10570, 0x1057a}, {0x1057c, 0x1058a}, {0x1058c, 0x10592}, {0x10594, 0x10595}, {0x10597, 0x105a1}, {0x105a3, 0x105b1},
|
|
60
|
+
{0x105b3, 0x105b9}, {0x105bb, 0x105bc}, {0x105c0, 0x105f3}, {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, {0x10787, 0x107b0},
|
|
61
|
+
{0x107b2, 0x107ba}, {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835}, {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x10855}, {0x10860, 0x10876},
|
|
62
|
+
{0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a00, 0x10a00},
|
|
63
|
+
{0x10a10, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35},
|
|
64
|
+
{0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d23}, {0x10d4a, 0x10d65},
|
|
65
|
+
{0x10d6f, 0x10d85}, {0x10e80, 0x10ea9}, {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec4}, {0x10f00, 0x10f1c}, {0x10f27, 0x10f27}, {0x10f30, 0x10f45}, {0x10f70, 0x10f81},
|
|
66
|
+
{0x10fb0, 0x10fc4}, {0x10fe0, 0x10ff6}, {0x11003, 0x11037}, {0x11071, 0x11072}, {0x11075, 0x11075}, {0x11083, 0x110af}, {0x110d0, 0x110e8}, {0x11103, 0x11126},
|
|
67
|
+
{0x11144, 0x11144}, {0x11147, 0x11147}, {0x11150, 0x11172}, {0x11176, 0x11176}, {0x11183, 0x111b2}, {0x111c1, 0x111c4}, {0x111da, 0x111da}, {0x111dc, 0x111dc},
|
|
68
|
+
{0x11200, 0x11211}, {0x11213, 0x1122b}, {0x1123f, 0x11240}, {0x11280, 0x11286}, {0x11288, 0x11288}, {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8},
|
|
69
|
+
{0x112b0, 0x112de}, {0x11305, 0x1130c}, {0x1130f, 0x11310}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133d, 0x1133d},
|
|
70
|
+
{0x11350, 0x11350}, {0x1135d, 0x11361}, {0x11380, 0x11389}, {0x1138b, 0x1138b}, {0x1138e, 0x1138e}, {0x11390, 0x113b5}, {0x113b7, 0x113b7}, {0x113d1, 0x113d1},
|
|
71
|
+
{0x113d3, 0x113d3}, {0x11400, 0x11434}, {0x11447, 0x1144a}, {0x1145f, 0x11461}, {0x11480, 0x114af}, {0x114c4, 0x114c5}, {0x114c7, 0x114c7}, {0x11580, 0x115ae},
|
|
72
|
+
{0x115d8, 0x115db}, {0x11600, 0x1162f}, {0x11644, 0x11644}, {0x11680, 0x116aa}, {0x116b8, 0x116b8}, {0x11700, 0x1171a}, {0x11740, 0x11746}, {0x11800, 0x1182b},
|
|
73
|
+
{0x118a0, 0x118df}, {0x118ff, 0x11906}, {0x11909, 0x11909}, {0x1190c, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x1192f}, {0x1193f, 0x1193f}, {0x11941, 0x11941},
|
|
74
|
+
{0x119a0, 0x119a7}, {0x119aa, 0x119d0}, {0x119e1, 0x119e1}, {0x119e3, 0x119e3}, {0x11a00, 0x11a00}, {0x11a0b, 0x11a32}, {0x11a3a, 0x11a3a}, {0x11a50, 0x11a50},
|
|
75
|
+
{0x11a5c, 0x11a89}, {0x11a9d, 0x11a9d}, {0x11ab0, 0x11af8}, {0x11bc0, 0x11be0}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c2e}, {0x11c40, 0x11c40}, {0x11c72, 0x11c8f},
|
|
76
|
+
{0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d30}, {0x11d46, 0x11d46}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d89}, {0x11d98, 0x11d98},
|
|
77
|
+
{0x11ee0, 0x11ef2}, {0x11f02, 0x11f02}, {0x11f04, 0x11f10}, {0x11f12, 0x11f33}, {0x11fb0, 0x11fb0}, {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543},
|
|
78
|
+
{0x12f90, 0x12ff0}, {0x13000, 0x1342f}, {0x13441, 0x13446}, {0x13460, 0x143fa}, {0x14400, 0x14646}, {0x16100, 0x1611d}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e},
|
|
79
|
+
{0x16a70, 0x16abe}, {0x16ad0, 0x16aed}, {0x16b00, 0x16b2f}, {0x16b40, 0x16b43}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16e40, 0x16e7f},
|
|
80
|
+
{0x16f00, 0x16f4a}, {0x16f50, 0x16f50}, {0x16f93, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe3}, {0x17000, 0x187f7}, {0x18800, 0x18cd5}, {0x18cff, 0x18d08},
|
|
81
|
+
{0x1aff0, 0x1aff3}, {0x1aff5, 0x1affb}, {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, {0x1b150, 0x1b152}, {0x1b155, 0x1b155}, {0x1b164, 0x1b167},
|
|
82
|
+
{0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
|
|
83
|
+
{0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a},
|
|
84
|
+
{0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5},
|
|
85
|
+
{0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788},
|
|
86
|
+
{0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1df00, 0x1df1e}, {0x1df25, 0x1df2a}, {0x1e030, 0x1e06d}, {0x1e100, 0x1e12c}, {0x1e137, 0x1e13d},
|
|
87
|
+
{0x1e14e, 0x1e14e}, {0x1e290, 0x1e2ad}, {0x1e2c0, 0x1e2eb}, {0x1e4d0, 0x1e4eb}, {0x1e5d0, 0x1e5ed}, {0x1e5f0, 0x1e5f0}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb},
|
|
88
|
+
{0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe}, {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, {0x1e94b, 0x1e94b}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee21, 0x1ee22},
|
|
89
|
+
{0x1ee24, 0x1ee24}, {0x1ee27, 0x1ee27}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee39, 0x1ee39}, {0x1ee3b, 0x1ee3b}, {0x1ee42, 0x1ee42}, {0x1ee47, 0x1ee47},
|
|
90
|
+
{0x1ee49, 0x1ee49}, {0x1ee4b, 0x1ee4b}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee54, 0x1ee54}, {0x1ee57, 0x1ee57}, {0x1ee59, 0x1ee59}, {0x1ee5b, 0x1ee5b},
|
|
91
|
+
{0x1ee5d, 0x1ee5d}, {0x1ee5f, 0x1ee5f}, {0x1ee61, 0x1ee62}, {0x1ee64, 0x1ee64}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c},
|
|
92
|
+
{0x1ee7e, 0x1ee7e}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6df}, {0x2a700, 0x2b739},
|
|
93
|
+
{0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a}, {0x31350, 0x323af},
|
|
94
|
+
};
|
|
95
|
+
static const TSCharacterRange preproc_identifier_continue[] = {
|
|
96
|
+
{'$', '$'}, {'0', '9'}, {'A', 'Z'}, {'\\', '\\'}, {'_', '_'}, {'a', 'z'}, {0xaa, 0xaa}, {0xb5, 0xb5},
|
|
97
|
+
{0xb7, 0xb7}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6}, {0xf8, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, {0x2ec, 0x2ec},
|
|
98
|
+
{0x2ee, 0x2ee}, {0x300, 0x374}, {0x376, 0x377}, {0x37b, 0x37d}, {0x37f, 0x37f}, {0x386, 0x38a}, {0x38c, 0x38c}, {0x38e, 0x3a1},
|
|
99
|
+
{0x3a3, 0x3f5}, {0x3f7, 0x481}, {0x483, 0x487}, {0x48a, 0x52f}, {0x531, 0x556}, {0x559, 0x559}, {0x560, 0x588}, {0x591, 0x5bd},
|
|
100
|
+
{0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c5}, {0x5c7, 0x5c7}, {0x5d0, 0x5ea}, {0x5ef, 0x5f2}, {0x610, 0x61a}, {0x620, 0x669},
|
|
101
|
+
{0x66e, 0x6d3}, {0x6d5, 0x6dc}, {0x6df, 0x6e8}, {0x6ea, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x74a}, {0x74d, 0x7b1}, {0x7c0, 0x7f5},
|
|
102
|
+
{0x7fa, 0x7fa}, {0x7fd, 0x7fd}, {0x800, 0x82d}, {0x840, 0x85b}, {0x860, 0x86a}, {0x870, 0x887}, {0x889, 0x88e}, {0x897, 0x8e1},
|
|
103
|
+
{0x8e3, 0x963}, {0x966, 0x96f}, {0x971, 0x983}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2},
|
|
104
|
+
{0x9b6, 0x9b9}, {0x9bc, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9ce}, {0x9d7, 0x9d7}, {0x9dc, 0x9dd}, {0x9df, 0x9e3}, {0x9e6, 0x9f1},
|
|
105
|
+
{0x9fc, 0x9fc}, {0x9fe, 0x9fe}, {0xa01, 0xa03}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
|
|
106
|
+
{0xa35, 0xa36}, {0xa38, 0xa39}, {0xa3c, 0xa3c}, {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa51, 0xa51}, {0xa59, 0xa5c},
|
|
107
|
+
{0xa5e, 0xa5e}, {0xa66, 0xa75}, {0xa81, 0xa83}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3},
|
|
108
|
+
{0xab5, 0xab9}, {0xabc, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xad0, 0xad0}, {0xae0, 0xae3}, {0xae6, 0xaef}, {0xaf9, 0xaff},
|
|
109
|
+
{0xb01, 0xb03}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3c, 0xb44},
|
|
110
|
+
{0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb55, 0xb57}, {0xb5c, 0xb5d}, {0xb5f, 0xb63}, {0xb66, 0xb6f}, {0xb71, 0xb71}, {0xb82, 0xb83},
|
|
111
|
+
{0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa},
|
|
112
|
+
{0xbae, 0xbb9}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd}, {0xbd0, 0xbd0}, {0xbd7, 0xbd7}, {0xbe6, 0xbef}, {0xc00, 0xc0c},
|
|
113
|
+
{0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc39}, {0xc3c, 0xc44}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc58, 0xc5a},
|
|
114
|
+
{0xc5d, 0xc5d}, {0xc60, 0xc63}, {0xc66, 0xc6f}, {0xc80, 0xc83}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3},
|
|
115
|
+
{0xcb5, 0xcb9}, {0xcbc, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, {0xcdd, 0xcde}, {0xce0, 0xce3}, {0xce6, 0xcef},
|
|
116
|
+
{0xcf1, 0xcf3}, {0xd00, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd44}, {0xd46, 0xd48}, {0xd4a, 0xd4e}, {0xd54, 0xd57}, {0xd5f, 0xd63},
|
|
117
|
+
{0xd66, 0xd6f}, {0xd7a, 0xd7f}, {0xd81, 0xd83}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6},
|
|
118
|
+
{0xdca, 0xdca}, {0xdcf, 0xdd4}, {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xde6, 0xdef}, {0xdf2, 0xdf3}, {0xe01, 0xe3a}, {0xe40, 0xe4e},
|
|
119
|
+
{0xe50, 0xe59}, {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe86, 0xe8a}, {0xe8c, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xebd}, {0xec0, 0xec4},
|
|
120
|
+
{0xec6, 0xec6}, {0xec8, 0xece}, {0xed0, 0xed9}, {0xedc, 0xedf}, {0xf00, 0xf00}, {0xf18, 0xf19}, {0xf20, 0xf29}, {0xf35, 0xf35},
|
|
121
|
+
{0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf47}, {0xf49, 0xf6c}, {0xf71, 0xf84}, {0xf86, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6},
|
|
122
|
+
{0x1000, 0x1049}, {0x1050, 0x109d}, {0x10a0, 0x10c5}, {0x10c7, 0x10c7}, {0x10cd, 0x10cd}, {0x10d0, 0x10fa}, {0x10fc, 0x1248}, {0x124a, 0x124d},
|
|
123
|
+
{0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be},
|
|
124
|
+
{0x12c0, 0x12c0}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, {0x135d, 0x135f}, {0x1369, 0x1371},
|
|
125
|
+
{0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16ee, 0x16f8},
|
|
126
|
+
{0x1700, 0x1715}, {0x171f, 0x1734}, {0x1740, 0x1753}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1772, 0x1773}, {0x1780, 0x17d3}, {0x17d7, 0x17d7},
|
|
127
|
+
{0x17dc, 0x17dd}, {0x17e0, 0x17e9}, {0x180b, 0x180d}, {0x180f, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18aa}, {0x18b0, 0x18f5}, {0x1900, 0x191e},
|
|
128
|
+
{0x1920, 0x192b}, {0x1930, 0x193b}, {0x1946, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, {0x1a00, 0x1a1b},
|
|
129
|
+
{0x1a20, 0x1a5e}, {0x1a60, 0x1a7c}, {0x1a7f, 0x1a89}, {0x1a90, 0x1a99}, {0x1aa7, 0x1aa7}, {0x1ab0, 0x1abd}, {0x1abf, 0x1ace}, {0x1b00, 0x1b4c},
|
|
130
|
+
{0x1b50, 0x1b59}, {0x1b6b, 0x1b73}, {0x1b80, 0x1bf3}, {0x1c00, 0x1c37}, {0x1c40, 0x1c49}, {0x1c4d, 0x1c7d}, {0x1c80, 0x1c8a}, {0x1c90, 0x1cba},
|
|
131
|
+
{0x1cbd, 0x1cbf}, {0x1cd0, 0x1cd2}, {0x1cd4, 0x1cfa}, {0x1d00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
|
|
132
|
+
{0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4},
|
|
133
|
+
{0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x200c, 0x200d}, {0x203f, 0x2040},
|
|
134
|
+
{0x2054, 0x2054}, {0x2071, 0x2071}, {0x207f, 0x207f}, {0x2090, 0x209c}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x20e5, 0x20f0}, {0x2102, 0x2102},
|
|
135
|
+
{0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, {0x2118, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x2139},
|
|
136
|
+
{0x213c, 0x213f}, {0x2145, 0x2149}, {0x214e, 0x214e}, {0x2160, 0x2188}, {0x2c00, 0x2ce4}, {0x2ceb, 0x2cf3}, {0x2d00, 0x2d25}, {0x2d27, 0x2d27},
|
|
137
|
+
{0x2d2d, 0x2d2d}, {0x2d30, 0x2d67}, {0x2d6f, 0x2d6f}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe},
|
|
138
|
+
{0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2dff}, {0x3005, 0x3007}, {0x3021, 0x302f}, {0x3031, 0x3035},
|
|
139
|
+
{0x3038, 0x303c}, {0x3041, 0x3096}, {0x3099, 0x309a}, {0x309d, 0x309f}, {0x30a1, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, {0x31a0, 0x31bf},
|
|
140
|
+
{0x31f0, 0x31ff}, {0x3400, 0x4dbf}, {0x4e00, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, {0xa610, 0xa62b}, {0xa640, 0xa66f}, {0xa674, 0xa67d},
|
|
141
|
+
{0xa67f, 0xa6f1}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7cd}, {0xa7d0, 0xa7d1}, {0xa7d3, 0xa7d3}, {0xa7d5, 0xa7dc}, {0xa7f2, 0xa827},
|
|
142
|
+
{0xa82c, 0xa82c}, {0xa840, 0xa873}, {0xa880, 0xa8c5}, {0xa8d0, 0xa8d9}, {0xa8e0, 0xa8f7}, {0xa8fb, 0xa8fb}, {0xa8fd, 0xa92d}, {0xa930, 0xa953},
|
|
143
|
+
{0xa960, 0xa97c}, {0xa980, 0xa9c0}, {0xa9cf, 0xa9d9}, {0xa9e0, 0xa9fe}, {0xaa00, 0xaa36}, {0xaa40, 0xaa4d}, {0xaa50, 0xaa59}, {0xaa60, 0xaa76},
|
|
144
|
+
{0xaa7a, 0xaac2}, {0xaadb, 0xaadd}, {0xaae0, 0xaaef}, {0xaaf2, 0xaaf6}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26},
|
|
145
|
+
{0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab69}, {0xab70, 0xabea}, {0xabec, 0xabed}, {0xabf0, 0xabf9}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6},
|
|
146
|
+
{0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
|
|
147
|
+
{0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfc5d}, {0xfc64, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7},
|
|
148
|
+
{0xfdf0, 0xfdf9}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe2f}, {0xfe33, 0xfe34}, {0xfe4d, 0xfe4f}, {0xfe71, 0xfe71}, {0xfe73, 0xfe73}, {0xfe77, 0xfe77},
|
|
149
|
+
{0xfe79, 0xfe79}, {0xfe7b, 0xfe7b}, {0xfe7d, 0xfe7d}, {0xfe7f, 0xfefc}, {0xff10, 0xff19}, {0xff21, 0xff3a}, {0xff3f, 0xff3f}, {0xff41, 0xff5a},
|
|
150
|
+
{0xff65, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a},
|
|
151
|
+
{0x1003c, 0x1003d}, {0x1003f, 0x1004d}, {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10140, 0x10174}, {0x101fd, 0x101fd}, {0x10280, 0x1029c}, {0x102a0, 0x102d0},
|
|
152
|
+
{0x102e0, 0x102e0}, {0x10300, 0x1031f}, {0x1032d, 0x1034a}, {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x103d1, 0x103d5},
|
|
153
|
+
{0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10570, 0x1057a}, {0x1057c, 0x1058a},
|
|
154
|
+
{0x1058c, 0x10592}, {0x10594, 0x10595}, {0x10597, 0x105a1}, {0x105a3, 0x105b1}, {0x105b3, 0x105b9}, {0x105bb, 0x105bc}, {0x105c0, 0x105f3}, {0x10600, 0x10736},
|
|
155
|
+
{0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, {0x10787, 0x107b0}, {0x107b2, 0x107ba}, {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
|
|
156
|
+
{0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, {0x108e0, 0x108f2}, {0x108f4, 0x108f5}, {0x10900, 0x10915},
|
|
157
|
+
{0x10920, 0x10939}, {0x10980, 0x109b7}, {0x109be, 0x109bf}, {0x10a00, 0x10a03}, {0x10a05, 0x10a06}, {0x10a0c, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a35},
|
|
158
|
+
{0x10a38, 0x10a3a}, {0x10a3f, 0x10a3f}, {0x10a60, 0x10a7c}, {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae6}, {0x10b00, 0x10b35}, {0x10b40, 0x10b55},
|
|
159
|
+
{0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10d00, 0x10d27}, {0x10d30, 0x10d39}, {0x10d40, 0x10d65},
|
|
160
|
+
{0x10d69, 0x10d6d}, {0x10d6f, 0x10d85}, {0x10e80, 0x10ea9}, {0x10eab, 0x10eac}, {0x10eb0, 0x10eb1}, {0x10ec2, 0x10ec4}, {0x10efc, 0x10f1c}, {0x10f27, 0x10f27},
|
|
161
|
+
{0x10f30, 0x10f50}, {0x10f70, 0x10f85}, {0x10fb0, 0x10fc4}, {0x10fe0, 0x10ff6}, {0x11000, 0x11046}, {0x11066, 0x11075}, {0x1107f, 0x110ba}, {0x110c2, 0x110c2},
|
|
162
|
+
{0x110d0, 0x110e8}, {0x110f0, 0x110f9}, {0x11100, 0x11134}, {0x11136, 0x1113f}, {0x11144, 0x11147}, {0x11150, 0x11173}, {0x11176, 0x11176}, {0x11180, 0x111c4},
|
|
163
|
+
{0x111c9, 0x111cc}, {0x111ce, 0x111da}, {0x111dc, 0x111dc}, {0x11200, 0x11211}, {0x11213, 0x11237}, {0x1123e, 0x11241}, {0x11280, 0x11286}, {0x11288, 0x11288},
|
|
164
|
+
{0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, {0x112b0, 0x112ea}, {0x112f0, 0x112f9}, {0x11300, 0x11303}, {0x11305, 0x1130c}, {0x1130f, 0x11310},
|
|
165
|
+
{0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, {0x1133b, 0x11344}, {0x11347, 0x11348}, {0x1134b, 0x1134d}, {0x11350, 0x11350},
|
|
166
|
+
{0x11357, 0x11357}, {0x1135d, 0x11363}, {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11380, 0x11389}, {0x1138b, 0x1138b}, {0x1138e, 0x1138e}, {0x11390, 0x113b5},
|
|
167
|
+
{0x113b7, 0x113c0}, {0x113c2, 0x113c2}, {0x113c5, 0x113c5}, {0x113c7, 0x113ca}, {0x113cc, 0x113d3}, {0x113e1, 0x113e2}, {0x11400, 0x1144a}, {0x11450, 0x11459},
|
|
168
|
+
{0x1145e, 0x11461}, {0x11480, 0x114c5}, {0x114c7, 0x114c7}, {0x114d0, 0x114d9}, {0x11580, 0x115b5}, {0x115b8, 0x115c0}, {0x115d8, 0x115dd}, {0x11600, 0x11640},
|
|
169
|
+
{0x11644, 0x11644}, {0x11650, 0x11659}, {0x11680, 0x116b8}, {0x116c0, 0x116c9}, {0x116d0, 0x116e3}, {0x11700, 0x1171a}, {0x1171d, 0x1172b}, {0x11730, 0x11739},
|
|
170
|
+
{0x11740, 0x11746}, {0x11800, 0x1183a}, {0x118a0, 0x118e9}, {0x118ff, 0x11906}, {0x11909, 0x11909}, {0x1190c, 0x11913}, {0x11915, 0x11916}, {0x11918, 0x11935},
|
|
171
|
+
{0x11937, 0x11938}, {0x1193b, 0x11943}, {0x11950, 0x11959}, {0x119a0, 0x119a7}, {0x119aa, 0x119d7}, {0x119da, 0x119e1}, {0x119e3, 0x119e4}, {0x11a00, 0x11a3e},
|
|
172
|
+
{0x11a47, 0x11a47}, {0x11a50, 0x11a99}, {0x11a9d, 0x11a9d}, {0x11ab0, 0x11af8}, {0x11bc0, 0x11be0}, {0x11bf0, 0x11bf9}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c36},
|
|
173
|
+
{0x11c38, 0x11c40}, {0x11c50, 0x11c59}, {0x11c72, 0x11c8f}, {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6}, {0x11d00, 0x11d06}, {0x11d08, 0x11d09}, {0x11d0b, 0x11d36},
|
|
174
|
+
{0x11d3a, 0x11d3a}, {0x11d3c, 0x11d3d}, {0x11d3f, 0x11d47}, {0x11d50, 0x11d59}, {0x11d60, 0x11d65}, {0x11d67, 0x11d68}, {0x11d6a, 0x11d8e}, {0x11d90, 0x11d91},
|
|
175
|
+
{0x11d93, 0x11d98}, {0x11da0, 0x11da9}, {0x11ee0, 0x11ef6}, {0x11f00, 0x11f10}, {0x11f12, 0x11f3a}, {0x11f3e, 0x11f42}, {0x11f50, 0x11f5a}, {0x11fb0, 0x11fb0},
|
|
176
|
+
{0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12480, 0x12543}, {0x12f90, 0x12ff0}, {0x13000, 0x1342f}, {0x13440, 0x13455}, {0x13460, 0x143fa}, {0x14400, 0x14646},
|
|
177
|
+
{0x16100, 0x16139}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, {0x16a60, 0x16a69}, {0x16a70, 0x16abe}, {0x16ac0, 0x16ac9}, {0x16ad0, 0x16aed}, {0x16af0, 0x16af4},
|
|
178
|
+
{0x16b00, 0x16b36}, {0x16b40, 0x16b43}, {0x16b50, 0x16b59}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, {0x16d40, 0x16d6c}, {0x16d70, 0x16d79}, {0x16e40, 0x16e7f},
|
|
179
|
+
{0x16f00, 0x16f4a}, {0x16f4f, 0x16f87}, {0x16f8f, 0x16f9f}, {0x16fe0, 0x16fe1}, {0x16fe3, 0x16fe4}, {0x16ff0, 0x16ff1}, {0x17000, 0x187f7}, {0x18800, 0x18cd5},
|
|
180
|
+
{0x18cff, 0x18d08}, {0x1aff0, 0x1aff3}, {0x1aff5, 0x1affb}, {0x1affd, 0x1affe}, {0x1b000, 0x1b122}, {0x1b132, 0x1b132}, {0x1b150, 0x1b152}, {0x1b155, 0x1b155},
|
|
181
|
+
{0x1b164, 0x1b167}, {0x1b170, 0x1b2fb}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, {0x1bc90, 0x1bc99}, {0x1bc9d, 0x1bc9e}, {0x1ccf0, 0x1ccf9},
|
|
182
|
+
{0x1cf00, 0x1cf2d}, {0x1cf30, 0x1cf46}, {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0x1d242, 0x1d244},
|
|
183
|
+
{0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb},
|
|
184
|
+
{0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544},
|
|
185
|
+
{0x1d546, 0x1d546}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734},
|
|
186
|
+
{0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1d7ce, 0x1d7ff}, {0x1da00, 0x1da36},
|
|
187
|
+
{0x1da3b, 0x1da6c}, {0x1da75, 0x1da75}, {0x1da84, 0x1da84}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1df00, 0x1df1e}, {0x1df25, 0x1df2a}, {0x1e000, 0x1e006},
|
|
188
|
+
{0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e023, 0x1e024}, {0x1e026, 0x1e02a}, {0x1e030, 0x1e06d}, {0x1e08f, 0x1e08f}, {0x1e100, 0x1e12c}, {0x1e130, 0x1e13d},
|
|
189
|
+
{0x1e140, 0x1e149}, {0x1e14e, 0x1e14e}, {0x1e290, 0x1e2ae}, {0x1e2c0, 0x1e2f9}, {0x1e4d0, 0x1e4f9}, {0x1e5d0, 0x1e5fa}, {0x1e7e0, 0x1e7e6}, {0x1e7e8, 0x1e7eb},
|
|
190
|
+
{0x1e7ed, 0x1e7ee}, {0x1e7f0, 0x1e7fe}, {0x1e800, 0x1e8c4}, {0x1e8d0, 0x1e8d6}, {0x1e900, 0x1e94b}, {0x1e950, 0x1e959}, {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f},
|
|
191
|
+
{0x1ee21, 0x1ee22}, {0x1ee24, 0x1ee24}, {0x1ee27, 0x1ee27}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee39, 0x1ee39}, {0x1ee3b, 0x1ee3b}, {0x1ee42, 0x1ee42},
|
|
192
|
+
{0x1ee47, 0x1ee47}, {0x1ee49, 0x1ee49}, {0x1ee4b, 0x1ee4b}, {0x1ee4d, 0x1ee4f}, {0x1ee51, 0x1ee52}, {0x1ee54, 0x1ee54}, {0x1ee57, 0x1ee57}, {0x1ee59, 0x1ee59},
|
|
193
|
+
{0x1ee5b, 0x1ee5b}, {0x1ee5d, 0x1ee5d}, {0x1ee5f, 0x1ee5f}, {0x1ee61, 0x1ee62}, {0x1ee64, 0x1ee64}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77},
|
|
194
|
+
{0x1ee79, 0x1ee7c}, {0x1ee7e, 0x1ee7e}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x1fbf0, 0x1fbf9},
|
|
195
|
+
{0x20000, 0x2a6df}, {0x2a700, 0x2b739}, {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2ceb0, 0x2ebe0}, {0x2ebf0, 0x2ee5d}, {0x2f800, 0x2fa1d}, {0x30000, 0x3134a},
|
|
196
|
+
{0x31350, 0x323af}, {0xe0100, 0xe01ef},
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
#endif
|
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/src/pragma.h
CHANGED
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
#define TREE_SITTER_C_PRAGMA_H_
|
|
3
3
|
|
|
4
4
|
#include "tree_sitter/parser.h"
|
|
5
|
+
#include "identifier.h"
|
|
5
6
|
|
|
6
7
|
static bool scan_pragma_spacing(TSLexer *lexer);
|
|
7
8
|
static bool pragma_space(int32_t c);
|
|
8
9
|
static bool scan_pragma_word(TSLexer *lexer);
|
|
10
|
+
static bool scan_preproc_newline(TSLexer *lexer, bool skip);
|
|
11
|
+
static bool scan_preproc_splices(TSLexer *lexer);
|
|
12
|
+
static bool scan_preproc_ucn(TSLexer *lexer, bool *in_number);
|
|
13
|
+
static bool preproc_word(int32_t c, bool continuation);
|
|
14
|
+
static bool scan_preproc_quote(TSLexer *lexer, int32_t quote, bool escaped, bool directive_text);
|
|
9
15
|
|
|
10
16
|
static bool scan_pragma(TSLexer *lexer) {
|
|
11
17
|
while (pragma_space(lexer->lookahead)) {
|
|
@@ -85,31 +91,210 @@ static bool scan_pragma_spacing(TSLexer *lexer) {
|
|
|
85
91
|
}
|
|
86
92
|
}
|
|
87
93
|
|
|
88
|
-
static bool
|
|
89
|
-
|
|
94
|
+
static bool scan_preproc_arg(TSLexer *lexer, bool consumed_backslash, bool directive_text) {
|
|
95
|
+
bool has_content = consumed_backslash;
|
|
96
|
+
while (!has_content && pragma_space(lexer->lookahead) && lexer->lookahead != '\n' && lexer->lookahead != '\r') {
|
|
90
97
|
lexer->advance(lexer, true);
|
|
91
98
|
}
|
|
92
|
-
|
|
93
|
-
bool
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
bool after_comment = false;
|
|
100
|
+
bool in_number = false;
|
|
101
|
+
bool in_identifier = consumed_backslash && scan_preproc_ucn(lexer, &in_number);
|
|
102
|
+
if (consumed_backslash) lexer->mark_end(lexer);
|
|
103
|
+
int32_t number_last = 0;
|
|
104
|
+
while (!lexer->eof(lexer) && lexer->lookahead != '\n' && lexer->lookahead != '\r') {
|
|
105
|
+
int32_t c = lexer->lookahead;
|
|
106
|
+
bool word = preproc_word(c, in_identifier || in_number);
|
|
107
|
+
bool digit = c >= '0' && c <= '9';
|
|
108
|
+
bool exponent_sign = in_number && (c == '+' || c == '-') &&
|
|
109
|
+
(number_last == 'e' || number_last == 'E' || number_last == 'p' || number_last == 'P');
|
|
110
|
+
if (c == '.') in_identifier = false;
|
|
111
|
+
if (!word && !digit && c != '.' && c != '\'' && c != '\\' && !exponent_sign) {
|
|
112
|
+
in_number = false;
|
|
113
|
+
in_identifier = false;
|
|
114
|
+
}
|
|
115
|
+
if (digit && !in_identifier) in_number = true;
|
|
116
|
+
if (word && !in_number) in_identifier = true;
|
|
117
|
+
if (in_number && c != '\\') number_last = c;
|
|
118
|
+
if (lexer->lookahead == '/') {
|
|
98
119
|
lexer->advance(lexer, false);
|
|
99
|
-
|
|
100
|
-
|
|
120
|
+
bool split_opener = lexer->lookahead == '\\';
|
|
121
|
+
bool delimiter = scan_preproc_splices(lexer);
|
|
122
|
+
if (delimiter && lexer->lookahead == '/') {
|
|
123
|
+
if (!has_content || after_comment) break;
|
|
124
|
+
while (!lexer->eof(lexer) && lexer->lookahead != '\n' && lexer->lookahead != '\r') {
|
|
125
|
+
if (lexer->lookahead == '\\') {
|
|
126
|
+
do {
|
|
127
|
+
lexer->advance(lexer, false);
|
|
128
|
+
} while (lexer->lookahead == '\\');
|
|
129
|
+
scan_preproc_newline(lexer, false);
|
|
130
|
+
} else {
|
|
131
|
+
lexer->advance(lexer, false);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
lexer->mark_end(lexer);
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
if (delimiter && lexer->lookahead == '*') {
|
|
138
|
+
if (!has_content) return false;
|
|
139
|
+
lexer->advance(lexer, false);
|
|
140
|
+
bool star = false;
|
|
141
|
+
bool split_delimiter = split_opener;
|
|
142
|
+
while (!lexer->eof(lexer)) {
|
|
143
|
+
if (lexer->lookahead == '\\') {
|
|
144
|
+
if (!scan_preproc_splices(lexer)) star = false;
|
|
145
|
+
else if (star && lexer->lookahead == '/') split_delimiter = true;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (star && lexer->lookahead == '/') break;
|
|
149
|
+
star = lexer->lookahead == '*';
|
|
150
|
+
lexer->advance(lexer, false);
|
|
151
|
+
}
|
|
152
|
+
if (lexer->eof(lexer)) break;
|
|
153
|
+
lexer->advance(lexer, false);
|
|
154
|
+
after_comment = !split_delimiter;
|
|
155
|
+
if (split_delimiter) lexer->mark_end(lexer);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (!delimiter) in_identifier = scan_preproc_ucn(lexer, &in_number);
|
|
159
|
+
has_content = true;
|
|
160
|
+
after_comment = false;
|
|
161
|
+
} else if (lexer->lookahead == '\\') {
|
|
101
162
|
lexer->advance(lexer, false);
|
|
102
|
-
if (lexer
|
|
103
|
-
|
|
104
|
-
|
|
163
|
+
if (scan_preproc_newline(lexer, false)) {
|
|
164
|
+
if (!after_comment && has_content) lexer->mark_end(lexer);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (scan_preproc_ucn(lexer, &in_number)) {
|
|
168
|
+
if (!in_number) in_identifier = true;
|
|
169
|
+
number_last = 0;
|
|
170
|
+
} else {
|
|
171
|
+
in_number = false;
|
|
172
|
+
in_identifier = false;
|
|
173
|
+
}
|
|
174
|
+
has_content = true;
|
|
175
|
+
after_comment = false;
|
|
176
|
+
} else if (lexer->lookahead == '"' || (!directive_text && lexer->lookahead == '\'')) {
|
|
177
|
+
int32_t quote = lexer->lookahead;
|
|
105
178
|
lexer->advance(lexer, false);
|
|
179
|
+
bool escaped = false;
|
|
180
|
+
if (quote == '\'' && in_number) {
|
|
181
|
+
bool spliced = scan_preproc_splices(lexer);
|
|
182
|
+
int32_t next = lexer->lookahead;
|
|
183
|
+
bool continuation = spliced && ((next >= '0' && next <= '9') || (next >= 'a' && next <= 'z') ||
|
|
184
|
+
(next >= 'A' && next <= 'Z') || next == '_');
|
|
185
|
+
escaped = !spliced;
|
|
186
|
+
if (continuation) {
|
|
187
|
+
has_content = true;
|
|
188
|
+
after_comment = false;
|
|
189
|
+
number_last = 0;
|
|
190
|
+
lexer->mark_end(lexer);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
in_number = false;
|
|
195
|
+
in_identifier = false;
|
|
196
|
+
if (!scan_preproc_quote(lexer, quote, escaped, directive_text)) return true;
|
|
197
|
+
has_content = true;
|
|
198
|
+
after_comment = false;
|
|
106
199
|
} else {
|
|
107
|
-
if (lexer->lookahead
|
|
200
|
+
if (!pragma_space(lexer->lookahead)) {
|
|
201
|
+
has_content = true;
|
|
202
|
+
after_comment = false;
|
|
203
|
+
}
|
|
108
204
|
lexer->advance(lexer, false);
|
|
109
205
|
}
|
|
110
|
-
lexer->mark_end(lexer);
|
|
206
|
+
if (!after_comment && has_content) lexer->mark_end(lexer);
|
|
111
207
|
}
|
|
112
|
-
return
|
|
208
|
+
return has_content;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
static bool scan_preproc_quote(TSLexer *lexer, int32_t quote, bool escaped, bool directive_text) {
|
|
212
|
+
lexer->mark_end(lexer);
|
|
213
|
+
bool literal = true;
|
|
214
|
+
bool slash = false;
|
|
215
|
+
bool block = false;
|
|
216
|
+
bool line = false;
|
|
217
|
+
bool star = false;
|
|
218
|
+
bool split_comment = false;
|
|
219
|
+
bool after_comment = false;
|
|
220
|
+
while (!lexer->eof(lexer) && (block || (lexer->lookahead != '\n' && lexer->lookahead != '\r'))) {
|
|
221
|
+
int32_t c = lexer->lookahead;
|
|
222
|
+
lexer->advance(lexer, false);
|
|
223
|
+
if (c == '\n' || c == '\r') literal = false;
|
|
224
|
+
if (literal && c == quote && !escaped) {
|
|
225
|
+
lexer->mark_end(lexer);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
if (c == '\\' && scan_preproc_newline(lexer, false)) {
|
|
229
|
+
if (slash || star) split_comment = true;
|
|
230
|
+
if (!block && !slash && !after_comment) lexer->mark_end(lexer);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
escaped = c == '\\' && !escaped;
|
|
234
|
+
if (line) {
|
|
235
|
+
if (!after_comment) lexer->mark_end(lexer);
|
|
236
|
+
} else if (block) {
|
|
237
|
+
if (star && c == '/') {
|
|
238
|
+
if (!literal) return false;
|
|
239
|
+
block = false;
|
|
240
|
+
after_comment = !split_comment;
|
|
241
|
+
if (split_comment) lexer->mark_end(lexer);
|
|
242
|
+
split_comment = false;
|
|
243
|
+
star = false;
|
|
244
|
+
} else {
|
|
245
|
+
star = c == '*';
|
|
246
|
+
}
|
|
247
|
+
} else if (slash && c == '/') {
|
|
248
|
+
line = directive_text;
|
|
249
|
+
slash = false;
|
|
250
|
+
if (!after_comment) lexer->mark_end(lexer);
|
|
251
|
+
} else if (slash && c == '*') {
|
|
252
|
+
block = true;
|
|
253
|
+
slash = false;
|
|
254
|
+
} else {
|
|
255
|
+
if (slash || (c != '/' && !pragma_space(c))) after_comment = false;
|
|
256
|
+
slash = c == '/';
|
|
257
|
+
if (!slash) split_comment = false;
|
|
258
|
+
if (!slash && !after_comment) lexer->mark_end(lexer);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (slash) lexer->mark_end(lexer);
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
static bool scan_preproc_ucn(TSLexer *lexer, bool *in_number) {
|
|
266
|
+
while (!scan_preproc_splices(lexer)) *in_number = false;
|
|
267
|
+
int32_t prefix = lexer->lookahead;
|
|
268
|
+
if (prefix != 'u' && prefix != 'U' && prefix != 'N') return false;
|
|
269
|
+
lexer->advance(lexer, false);
|
|
270
|
+
if (!scan_preproc_splices(lexer)) return false;
|
|
271
|
+
bool braced = prefix != 'U' && lexer->lookahead == '{';
|
|
272
|
+
if (prefix == 'N' && !braced) return false;
|
|
273
|
+
if (braced) lexer->advance(lexer, false);
|
|
274
|
+
unsigned remaining = prefix == 'U' ? 8 : 4;
|
|
275
|
+
bool content = false;
|
|
276
|
+
for (;;) {
|
|
277
|
+
if (!scan_preproc_splices(lexer)) return false;
|
|
278
|
+
if (braced && lexer->lookahead == '}') {
|
|
279
|
+
lexer->advance(lexer, false);
|
|
280
|
+
return content;
|
|
281
|
+
}
|
|
282
|
+
int32_t c = lexer->lookahead;
|
|
283
|
+
bool accepted = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
|
|
284
|
+
if (prefix == 'N') accepted = (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == ' ' || c == '-';
|
|
285
|
+
if (!accepted) return false;
|
|
286
|
+
lexer->advance(lexer, false);
|
|
287
|
+
content = true;
|
|
288
|
+
if (!braced && --remaining == 0) return true;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
static bool preproc_word(int32_t c, bool continuation) {
|
|
293
|
+
if (c == '\\') return false;
|
|
294
|
+
if (continuation && c >= 0x80 && !pragma_space(c)) return true;
|
|
295
|
+
return continuation
|
|
296
|
+
? set_contains(preproc_identifier_continue, sizeof(preproc_identifier_continue) / sizeof(TSCharacterRange), c)
|
|
297
|
+
: set_contains(preproc_identifier_start, sizeof(preproc_identifier_start) / sizeof(TSCharacterRange), c);
|
|
113
298
|
}
|
|
114
299
|
|
|
115
300
|
static bool scan_pragma_word(TSLexer *lexer) {
|
|
@@ -121,6 +306,25 @@ static bool scan_pragma_word(TSLexer *lexer) {
|
|
|
121
306
|
return true;
|
|
122
307
|
}
|
|
123
308
|
|
|
309
|
+
static bool scan_preproc_newline(TSLexer *lexer, bool skip) {
|
|
310
|
+
bool carriage_return = lexer->lookahead == '\r';
|
|
311
|
+
if (carriage_return) lexer->advance(lexer, skip);
|
|
312
|
+
if (lexer->lookahead == '\n') {
|
|
313
|
+
lexer->advance(lexer, skip);
|
|
314
|
+
if (!carriage_return && lexer->lookahead == '\r') lexer->advance(lexer, skip);
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
return carriage_return;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
static bool scan_preproc_splices(TSLexer *lexer) {
|
|
321
|
+
while (lexer->lookahead == '\\') {
|
|
322
|
+
lexer->advance(lexer, false);
|
|
323
|
+
if (!scan_preproc_newline(lexer, false)) return false;
|
|
324
|
+
}
|
|
325
|
+
return true;
|
|
326
|
+
}
|
|
327
|
+
|
|
124
328
|
static bool pragma_space(int32_t c) {
|
|
125
329
|
return c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f' || c == '\v' ||
|
|
126
330
|
c == 0x85 || c == 0xA0 || c == 0x1680 || (c >= 0x2000 && c <= 0x200A) ||
|
package/src/scanner.c
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#include "pragma.h"
|
|
2
2
|
|
|
3
|
-
enum TokenType { PRAGMA_OPERATOR, PREPROC_ARG, PREPROC_NEWLINE };
|
|
3
|
+
enum TokenType { PRAGMA_OPERATOR, PREPROC_ARG, PREPROC_NEWLINE, PREPROC_LPAREN, PREPROC_DIRECTIVE_ARG };
|
|
4
4
|
|
|
5
5
|
void *tree_sitter_c_external_scanner_create(void) {
|
|
6
6
|
return NULL;
|
|
@@ -24,21 +24,36 @@ void tree_sitter_c_external_scanner_deserialize(void *payload, const char *buffe
|
|
|
24
24
|
|
|
25
25
|
bool tree_sitter_c_external_scanner_scan(void *payload, TSLexer *lexer, const bool *valid_symbols) {
|
|
26
26
|
(void)payload;
|
|
27
|
+
bool directive_text = !valid_symbols[PREPROC_ARG] && valid_symbols[PREPROC_DIRECTIVE_ARG];
|
|
28
|
+
TSSymbol argument_symbol = directive_text ? PREPROC_DIRECTIVE_ARG : PREPROC_ARG;
|
|
29
|
+
if (valid_symbols[PREPROC_LPAREN] && lexer->lookahead == '(') {
|
|
30
|
+
lexer->advance(lexer, false);
|
|
31
|
+
lexer->mark_end(lexer);
|
|
32
|
+
lexer->result_symbol = PREPROC_LPAREN;
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
27
35
|
if (valid_symbols[PREPROC_NEWLINE]) {
|
|
28
|
-
|
|
29
|
-
lexer->
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
for (;;) {
|
|
37
|
+
while (pragma_space(lexer->lookahead) && lexer->lookahead != '\n' && lexer->lookahead != '\r') {
|
|
38
|
+
lexer->advance(lexer, true);
|
|
39
|
+
}
|
|
40
|
+
if (lexer->lookahead != '\\') break;
|
|
33
41
|
lexer->advance(lexer, false);
|
|
42
|
+
lexer->mark_end(lexer);
|
|
43
|
+
if (!scan_preproc_newline(lexer, true)) {
|
|
44
|
+
lexer->result_symbol = argument_symbol;
|
|
45
|
+
return (valid_symbols[PREPROC_ARG] || directive_text) && scan_preproc_arg(lexer, true, directive_text);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (scan_preproc_newline(lexer, false)) {
|
|
34
49
|
lexer->mark_end(lexer);
|
|
35
50
|
lexer->result_symbol = PREPROC_NEWLINE;
|
|
36
51
|
return true;
|
|
37
52
|
}
|
|
38
53
|
}
|
|
39
|
-
if (valid_symbols[PREPROC_ARG]) {
|
|
40
|
-
lexer->result_symbol =
|
|
41
|
-
return
|
|
54
|
+
if (valid_symbols[PREPROC_ARG] || directive_text) {
|
|
55
|
+
lexer->result_symbol = argument_symbol;
|
|
56
|
+
return scan_preproc_arg(lexer, false, directive_text);
|
|
42
57
|
}
|
|
43
58
|
lexer->result_symbol = PRAGMA_OPERATOR;
|
|
44
59
|
return valid_symbols[PRAGMA_OPERATOR] && scan_pragma(lexer);
|
package/tree-sitter-c.wasm
CHANGED
|
Binary file
|