tree-sitter-sh 0.5.0 → 0.6.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/CMakeLists.txt +1 -1
- package/Cargo.toml +39 -0
- package/Makefile +1 -1
- package/README.md +8 -1
- package/bindings/rust/build.rs +28 -0
- package/bindings/rust/lib.rs +43 -0
- package/package.json +4 -1
- package/queries/highlights.scm +117 -51
- package/src/parser.c +1 -1
- package/tree-sitter.json +2 -2
package/CMakeLists.txt
CHANGED
package/Cargo.toml
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
authors = ["konomanoasa"]
|
|
3
|
+
autoexamples = false
|
|
4
|
+
categories = ["parser-implementations", "parsing", "text-editors"]
|
|
5
|
+
description = "Tree-sitter grammar for POSIX sh."
|
|
6
|
+
edition = "2024"
|
|
7
|
+
keywords = ["incremental", "parsing", "tree-sitter", "sh", "shell"]
|
|
8
|
+
license = "MIT"
|
|
9
|
+
name = "tree-sitter-sh"
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
repository = "https://github.com/konomanoasa/tree-sitter-sh"
|
|
12
|
+
version = "0.6.0"
|
|
13
|
+
|
|
14
|
+
build = "bindings/rust/build.rs"
|
|
15
|
+
include = [
|
|
16
|
+
"/LICENSE",
|
|
17
|
+
"/README.md",
|
|
18
|
+
"/bindings/rust/*.rs",
|
|
19
|
+
"/grammar.js",
|
|
20
|
+
"/queries/*.scm",
|
|
21
|
+
"/src/grammar.json",
|
|
22
|
+
"/src/node-types.json",
|
|
23
|
+
"/src/parser.c",
|
|
24
|
+
"/src/scanner.c",
|
|
25
|
+
"/src/tree_sitter/*.h",
|
|
26
|
+
"/tree-sitter.json",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[lib]
|
|
30
|
+
path = "bindings/rust/lib.rs"
|
|
31
|
+
|
|
32
|
+
[dependencies]
|
|
33
|
+
tree-sitter-language = "0.1"
|
|
34
|
+
|
|
35
|
+
[build-dependencies]
|
|
36
|
+
cc = "1.2"
|
|
37
|
+
|
|
38
|
+
[dev-dependencies]
|
|
39
|
+
tree-sitter = "0.27.0"
|
package/Makefile
CHANGED
package/README.md
CHANGED
|
@@ -12,7 +12,14 @@ POSIX.1-2024 Shell Command Language.
|
|
|
12
12
|
npm install tree-sitter-sh
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Development
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm install
|
|
19
|
+
npm run parse -- script.sh
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Specifications
|
|
16
23
|
|
|
17
24
|
[POSIX.1-2024 Shell Command Language](https://pubs.opengroup.org/onlinepubs/9799919799.2024edition/utilities/V3_chap02.html)
|
|
18
25
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
use std::path::Path;
|
|
2
|
+
|
|
3
|
+
fn main() {
|
|
4
|
+
let source_directory = Path::new("src");
|
|
5
|
+
let parser_path = source_directory.join("parser.c");
|
|
6
|
+
let scanner_path = source_directory.join("scanner.c");
|
|
7
|
+
let mut c_config = cc::Build::new();
|
|
8
|
+
c_config.std("c11").include(source_directory);
|
|
9
|
+
|
|
10
|
+
#[cfg(target_env = "msvc")]
|
|
11
|
+
c_config.flag("-utf-8");
|
|
12
|
+
|
|
13
|
+
let target = std::env::var("TARGET").expect("Cargo must provide TARGET");
|
|
14
|
+
if target == "wasm32-unknown-unknown" {
|
|
15
|
+
let wasm_headers = std::env::var_os("DEP_TREE_SITTER_LANGUAGE_WASM_HEADERS")
|
|
16
|
+
.map(std::path::PathBuf::from)
|
|
17
|
+
.expect(
|
|
18
|
+
"tree-sitter-language must provide its headers when compiling for wasm32-unknown-unknown",
|
|
19
|
+
);
|
|
20
|
+
c_config.include(wasm_headers);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
c_config.file(&parser_path).file(&scanner_path);
|
|
24
|
+
c_config.compile("tree-sitter-sh");
|
|
25
|
+
|
|
26
|
+
println!("cargo:rerun-if-changed={}", parser_path.display());
|
|
27
|
+
println!("cargo:rerun-if-changed={}", scanner_path.display());
|
|
28
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//! POSIX shell grammar for the Tree-sitter parsing library.
|
|
2
|
+
//!
|
|
3
|
+
//! ```
|
|
4
|
+
//! let mut parser = tree_sitter::Parser::new();
|
|
5
|
+
//! parser
|
|
6
|
+
//! .set_language(&tree_sitter_sh::LANGUAGE.into())
|
|
7
|
+
//! .expect("POSIX shell grammar must load");
|
|
8
|
+
//! let tree = parser
|
|
9
|
+
//! .parse("echo hello\n", None)
|
|
10
|
+
//! .expect("parser must return a tree");
|
|
11
|
+
//! assert!(!tree.root_node().has_error());
|
|
12
|
+
//! ```
|
|
13
|
+
|
|
14
|
+
use tree_sitter_language::LanguageFn;
|
|
15
|
+
|
|
16
|
+
unsafe extern "C" {
|
|
17
|
+
fn tree_sitter_sh() -> *const ();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/// The Tree-sitter [`LanguageFn`] for POSIX shell.
|
|
21
|
+
pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_sh) };
|
|
22
|
+
|
|
23
|
+
/// The node type definitions for [`LANGUAGE`].
|
|
24
|
+
pub const NODE_TYPES: &str = include_str!("../../src/node-types.json");
|
|
25
|
+
|
|
26
|
+
/// The syntax highlighting query for [`LANGUAGE`].
|
|
27
|
+
pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
|
|
28
|
+
|
|
29
|
+
#[cfg(test)]
|
|
30
|
+
mod tests {
|
|
31
|
+
#[test]
|
|
32
|
+
fn grammar_loads_and_parses() {
|
|
33
|
+
let mut parser = tree_sitter::Parser::new();
|
|
34
|
+
parser
|
|
35
|
+
.set_language(&super::LANGUAGE.into())
|
|
36
|
+
.expect("POSIX shell grammar must load");
|
|
37
|
+
let tree = parser
|
|
38
|
+
.parse("echo hello\n", None)
|
|
39
|
+
.expect("parser must return a tree");
|
|
40
|
+
assert_eq!(tree.root_node().kind(), "program");
|
|
41
|
+
assert!(!tree.root_node().has_error());
|
|
42
|
+
}
|
|
43
|
+
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tree-sitter-sh",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Tree-sitter grammar for POSIX sh.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "git+https://github.com/konomanoasa/tree-sitter-sh.git",
|
|
7
7
|
"files": [
|
|
8
8
|
"bindings/c",
|
|
9
|
+
"bindings/rust",
|
|
10
|
+
"Cargo.toml",
|
|
9
11
|
"CMakeLists.txt",
|
|
10
12
|
"grammar.js",
|
|
11
13
|
"Makefile",
|
|
@@ -20,6 +22,7 @@
|
|
|
20
22
|
"check": "biome check . && node scripts/check-c.js && node scripts/check-generated.js && npm test",
|
|
21
23
|
"format": "biome check --write . && node scripts/check-c.js --write",
|
|
22
24
|
"generate": "npm run tree-sitter -- generate",
|
|
25
|
+
"parse": "npm run tree-sitter -- parse --scope source.sh",
|
|
23
26
|
"test": "npm run tree-sitter -- test --rebuild && node --test",
|
|
24
27
|
"test:fuzz": "npm run tree-sitter -- fuzz --rebuild --iterations 100 --edits 5",
|
|
25
28
|
"tree-sitter": "node scripts/tree-sitter.js"
|
package/queries/highlights.scm
CHANGED
|
@@ -99,15 +99,11 @@
|
|
|
99
99
|
|
|
100
100
|
(parameter_expansion
|
|
101
101
|
"$" @variable
|
|
102
|
-
parameter:
|
|
103
|
-
|
|
104
|
-
(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
(parameter_expansion
|
|
109
|
-
"$" @variable.builtin
|
|
110
|
-
parameter: (special_parameter))
|
|
102
|
+
parameter: [
|
|
103
|
+
(variable_name)
|
|
104
|
+
(positional_parameter)
|
|
105
|
+
(special_parameter)
|
|
106
|
+
])
|
|
111
107
|
|
|
112
108
|
(command_substitution
|
|
113
109
|
"$" @punctuation.special)
|
|
@@ -303,7 +299,7 @@
|
|
|
303
299
|
(word
|
|
304
300
|
(pattern_bracket_source
|
|
305
301
|
"[" @punctuation.bracket
|
|
306
|
-
(pattern_bracket_negation_source)? @
|
|
302
|
+
(pattern_bracket_negation_source)? @operator
|
|
307
303
|
(pattern_bracket_members_source
|
|
308
304
|
[
|
|
309
305
|
(pattern_bracket_character_source) @character
|
|
@@ -313,26 +309,36 @@
|
|
|
313
309
|
(pattern_bracket_character_source)
|
|
314
310
|
(pattern_bracket_hyphen_source)
|
|
315
311
|
] @character
|
|
316
|
-
operator: (pattern_bracket_range_operator_source) @
|
|
312
|
+
operator: (pattern_bracket_range_operator_source) @operator
|
|
317
313
|
end: [
|
|
318
314
|
(pattern_bracket_character_source)
|
|
319
315
|
(pattern_bracket_hyphen_source)
|
|
320
316
|
] @character)
|
|
321
317
|
(pattern_character_class_source
|
|
322
318
|
"[" @punctuation.bracket
|
|
323
|
-
":" @punctuation.
|
|
319
|
+
":" @punctuation.delimiter
|
|
324
320
|
content: (pattern_character_class_content_source) @character.special
|
|
325
|
-
":" @punctuation.
|
|
321
|
+
":" @punctuation.delimiter
|
|
322
|
+
"]" @punctuation.bracket)
|
|
323
|
+
(pattern_collating_symbol_source
|
|
324
|
+
"[" @punctuation.bracket
|
|
325
|
+
"." @punctuation.delimiter
|
|
326
|
+
value: (pattern_collating_symbol_character_source) @character.special
|
|
327
|
+
"." @punctuation.delimiter
|
|
328
|
+
"]" @punctuation.bracket)
|
|
329
|
+
(pattern_equivalence_class_source
|
|
330
|
+
"[" @punctuation.bracket
|
|
331
|
+
"=" @punctuation.delimiter
|
|
332
|
+
value: (pattern_equivalence_class_character_source) @character.special
|
|
333
|
+
"=" @punctuation.delimiter
|
|
326
334
|
"]" @punctuation.bracket)
|
|
327
|
-
(pattern_collating_symbol_source) @character.special
|
|
328
|
-
(pattern_equivalence_class_source) @character.special
|
|
329
335
|
])
|
|
330
336
|
"]" @punctuation.bracket)))
|
|
331
337
|
|
|
332
338
|
(parameter_pattern
|
|
333
339
|
(pattern_bracket_source
|
|
334
340
|
"[" @punctuation.bracket
|
|
335
|
-
(pattern_bracket_negation_source)? @
|
|
341
|
+
(pattern_bracket_negation_source)? @operator
|
|
336
342
|
(pattern_bracket_members_source
|
|
337
343
|
[
|
|
338
344
|
(pattern_bracket_character_source) @character
|
|
@@ -342,19 +348,29 @@
|
|
|
342
348
|
(pattern_bracket_character_source)
|
|
343
349
|
(pattern_bracket_hyphen_source)
|
|
344
350
|
] @character
|
|
345
|
-
operator: (pattern_bracket_range_operator_source) @
|
|
351
|
+
operator: (pattern_bracket_range_operator_source) @operator
|
|
346
352
|
end: [
|
|
347
353
|
(pattern_bracket_character_source)
|
|
348
354
|
(pattern_bracket_hyphen_source)
|
|
349
355
|
] @character)
|
|
350
356
|
(pattern_character_class_source
|
|
351
357
|
"[" @punctuation.bracket
|
|
352
|
-
":" @punctuation.
|
|
358
|
+
":" @punctuation.delimiter
|
|
353
359
|
content: (pattern_character_class_content_source) @character.special
|
|
354
|
-
":" @punctuation.
|
|
360
|
+
":" @punctuation.delimiter
|
|
361
|
+
"]" @punctuation.bracket)
|
|
362
|
+
(pattern_collating_symbol_source
|
|
363
|
+
"[" @punctuation.bracket
|
|
364
|
+
"." @punctuation.delimiter
|
|
365
|
+
value: (pattern_collating_symbol_character_source) @character.special
|
|
366
|
+
"." @punctuation.delimiter
|
|
367
|
+
"]" @punctuation.bracket)
|
|
368
|
+
(pattern_equivalence_class_source
|
|
369
|
+
"[" @punctuation.bracket
|
|
370
|
+
"=" @punctuation.delimiter
|
|
371
|
+
value: (pattern_equivalence_class_character_source) @character.special
|
|
372
|
+
"=" @punctuation.delimiter
|
|
355
373
|
"]" @punctuation.bracket)
|
|
356
|
-
(pattern_collating_symbol_source) @character.special
|
|
357
|
-
(pattern_equivalence_class_source) @character.special
|
|
358
374
|
])
|
|
359
375
|
"]" @punctuation.bracket))
|
|
360
376
|
|
|
@@ -362,7 +378,7 @@
|
|
|
362
378
|
(word
|
|
363
379
|
(pattern_bracket_source
|
|
364
380
|
"[" @punctuation.bracket
|
|
365
|
-
(pattern_bracket_negation_source)? @
|
|
381
|
+
(pattern_bracket_negation_source)? @operator
|
|
366
382
|
(pattern_bracket_members_source
|
|
367
383
|
[
|
|
368
384
|
(pattern_bracket_character_source) @character
|
|
@@ -372,19 +388,29 @@
|
|
|
372
388
|
(pattern_bracket_character_source)
|
|
373
389
|
(pattern_bracket_hyphen_source)
|
|
374
390
|
] @character
|
|
375
|
-
operator: (pattern_bracket_range_operator_source) @
|
|
391
|
+
operator: (pattern_bracket_range_operator_source) @operator
|
|
376
392
|
end: [
|
|
377
393
|
(pattern_bracket_character_source)
|
|
378
394
|
(pattern_bracket_hyphen_source)
|
|
379
395
|
] @character)
|
|
380
396
|
(pattern_character_class_source
|
|
381
397
|
"[" @punctuation.bracket
|
|
382
|
-
":" @punctuation.
|
|
398
|
+
":" @punctuation.delimiter
|
|
383
399
|
content: (pattern_character_class_content_source) @character.special
|
|
384
|
-
":" @punctuation.
|
|
400
|
+
":" @punctuation.delimiter
|
|
401
|
+
"]" @punctuation.bracket)
|
|
402
|
+
(pattern_collating_symbol_source
|
|
403
|
+
"[" @punctuation.bracket
|
|
404
|
+
"." @punctuation.delimiter
|
|
405
|
+
value: (pattern_collating_symbol_character_source) @character.special
|
|
406
|
+
"." @punctuation.delimiter
|
|
407
|
+
"]" @punctuation.bracket)
|
|
408
|
+
(pattern_equivalence_class_source
|
|
409
|
+
"[" @punctuation.bracket
|
|
410
|
+
"=" @punctuation.delimiter
|
|
411
|
+
value: (pattern_equivalence_class_character_source) @character.special
|
|
412
|
+
"=" @punctuation.delimiter
|
|
385
413
|
"]" @punctuation.bracket)
|
|
386
|
-
(pattern_collating_symbol_source) @character.special
|
|
387
|
-
(pattern_equivalence_class_source) @character.special
|
|
388
414
|
])
|
|
389
415
|
"]" @punctuation.bracket)))
|
|
390
416
|
|
|
@@ -392,7 +418,7 @@
|
|
|
392
418
|
(word
|
|
393
419
|
(pattern_bracket_source
|
|
394
420
|
"[" @punctuation.bracket
|
|
395
|
-
(pattern_bracket_negation_source)? @
|
|
421
|
+
(pattern_bracket_negation_source)? @operator
|
|
396
422
|
(pattern_bracket_members_source
|
|
397
423
|
[
|
|
398
424
|
(pattern_bracket_character_source) @character
|
|
@@ -402,19 +428,29 @@
|
|
|
402
428
|
(pattern_bracket_character_source)
|
|
403
429
|
(pattern_bracket_hyphen_source)
|
|
404
430
|
] @character
|
|
405
|
-
operator: (pattern_bracket_range_operator_source) @
|
|
431
|
+
operator: (pattern_bracket_range_operator_source) @operator
|
|
406
432
|
end: [
|
|
407
433
|
(pattern_bracket_character_source)
|
|
408
434
|
(pattern_bracket_hyphen_source)
|
|
409
435
|
] @character)
|
|
410
436
|
(pattern_character_class_source
|
|
411
437
|
"[" @punctuation.bracket
|
|
412
|
-
":" @punctuation.
|
|
438
|
+
":" @punctuation.delimiter
|
|
413
439
|
content: (pattern_character_class_content_source) @character.special
|
|
414
|
-
":" @punctuation.
|
|
440
|
+
":" @punctuation.delimiter
|
|
441
|
+
"]" @punctuation.bracket)
|
|
442
|
+
(pattern_collating_symbol_source
|
|
443
|
+
"[" @punctuation.bracket
|
|
444
|
+
"." @punctuation.delimiter
|
|
445
|
+
value: (pattern_collating_symbol_character_source) @character.special
|
|
446
|
+
"." @punctuation.delimiter
|
|
447
|
+
"]" @punctuation.bracket)
|
|
448
|
+
(pattern_equivalence_class_source
|
|
449
|
+
"[" @punctuation.bracket
|
|
450
|
+
"=" @punctuation.delimiter
|
|
451
|
+
value: (pattern_equivalence_class_character_source) @character.special
|
|
452
|
+
"=" @punctuation.delimiter
|
|
415
453
|
"]" @punctuation.bracket)
|
|
416
|
-
(pattern_collating_symbol_source) @character.special
|
|
417
|
-
(pattern_equivalence_class_source) @character.special
|
|
418
454
|
])
|
|
419
455
|
"]" @punctuation.bracket)))
|
|
420
456
|
|
|
@@ -422,7 +458,7 @@
|
|
|
422
458
|
word: (word
|
|
423
459
|
(pattern_bracket_source
|
|
424
460
|
"[" @punctuation.bracket
|
|
425
|
-
(pattern_bracket_negation_source)? @
|
|
461
|
+
(pattern_bracket_negation_source)? @operator
|
|
426
462
|
(pattern_bracket_members_source
|
|
427
463
|
[
|
|
428
464
|
(pattern_bracket_character_source) @character
|
|
@@ -432,19 +468,29 @@
|
|
|
432
468
|
(pattern_bracket_character_source)
|
|
433
469
|
(pattern_bracket_hyphen_source)
|
|
434
470
|
] @character
|
|
435
|
-
operator: (pattern_bracket_range_operator_source) @
|
|
471
|
+
operator: (pattern_bracket_range_operator_source) @operator
|
|
436
472
|
end: [
|
|
437
473
|
(pattern_bracket_character_source)
|
|
438
474
|
(pattern_bracket_hyphen_source)
|
|
439
475
|
] @character)
|
|
440
476
|
(pattern_character_class_source
|
|
441
477
|
"[" @punctuation.bracket
|
|
442
|
-
":" @punctuation.
|
|
478
|
+
":" @punctuation.delimiter
|
|
443
479
|
content: (pattern_character_class_content_source) @character.special
|
|
444
|
-
":" @punctuation.
|
|
480
|
+
":" @punctuation.delimiter
|
|
481
|
+
"]" @punctuation.bracket)
|
|
482
|
+
(pattern_collating_symbol_source
|
|
483
|
+
"[" @punctuation.bracket
|
|
484
|
+
"." @punctuation.delimiter
|
|
485
|
+
value: (pattern_collating_symbol_character_source) @character.special
|
|
486
|
+
"." @punctuation.delimiter
|
|
487
|
+
"]" @punctuation.bracket)
|
|
488
|
+
(pattern_equivalence_class_source
|
|
489
|
+
"[" @punctuation.bracket
|
|
490
|
+
"=" @punctuation.delimiter
|
|
491
|
+
value: (pattern_equivalence_class_character_source) @character.special
|
|
492
|
+
"=" @punctuation.delimiter
|
|
445
493
|
"]" @punctuation.bracket)
|
|
446
|
-
(pattern_collating_symbol_source) @character.special
|
|
447
|
-
(pattern_equivalence_class_source) @character.special
|
|
448
494
|
])
|
|
449
495
|
"]" @punctuation.bracket)))
|
|
450
496
|
|
|
@@ -452,7 +498,7 @@
|
|
|
452
498
|
word: (word
|
|
453
499
|
(pattern_bracket_source
|
|
454
500
|
"[" @punctuation.bracket
|
|
455
|
-
(pattern_bracket_negation_source)? @
|
|
501
|
+
(pattern_bracket_negation_source)? @operator
|
|
456
502
|
(pattern_bracket_members_source
|
|
457
503
|
[
|
|
458
504
|
(pattern_bracket_character_source) @character
|
|
@@ -462,19 +508,29 @@
|
|
|
462
508
|
(pattern_bracket_character_source)
|
|
463
509
|
(pattern_bracket_hyphen_source)
|
|
464
510
|
] @character
|
|
465
|
-
operator: (pattern_bracket_range_operator_source) @
|
|
511
|
+
operator: (pattern_bracket_range_operator_source) @operator
|
|
466
512
|
end: [
|
|
467
513
|
(pattern_bracket_character_source)
|
|
468
514
|
(pattern_bracket_hyphen_source)
|
|
469
515
|
] @character)
|
|
470
516
|
(pattern_character_class_source
|
|
471
517
|
"[" @punctuation.bracket
|
|
472
|
-
":" @punctuation.
|
|
518
|
+
":" @punctuation.delimiter
|
|
473
519
|
content: (pattern_character_class_content_source) @character.special
|
|
474
|
-
":" @punctuation.
|
|
520
|
+
":" @punctuation.delimiter
|
|
521
|
+
"]" @punctuation.bracket)
|
|
522
|
+
(pattern_collating_symbol_source
|
|
523
|
+
"[" @punctuation.bracket
|
|
524
|
+
"." @punctuation.delimiter
|
|
525
|
+
value: (pattern_collating_symbol_character_source) @character.special
|
|
526
|
+
"." @punctuation.delimiter
|
|
527
|
+
"]" @punctuation.bracket)
|
|
528
|
+
(pattern_equivalence_class_source
|
|
529
|
+
"[" @punctuation.bracket
|
|
530
|
+
"=" @punctuation.delimiter
|
|
531
|
+
value: (pattern_equivalence_class_character_source) @character.special
|
|
532
|
+
"=" @punctuation.delimiter
|
|
475
533
|
"]" @punctuation.bracket)
|
|
476
|
-
(pattern_collating_symbol_source) @character.special
|
|
477
|
-
(pattern_equivalence_class_source) @character.special
|
|
478
534
|
])
|
|
479
535
|
"]" @punctuation.bracket)))
|
|
480
536
|
|
|
@@ -482,7 +538,7 @@
|
|
|
482
538
|
word: (word
|
|
483
539
|
(pattern_bracket_source
|
|
484
540
|
"[" @punctuation.bracket
|
|
485
|
-
(pattern_bracket_negation_source)? @
|
|
541
|
+
(pattern_bracket_negation_source)? @operator
|
|
486
542
|
(pattern_bracket_members_source
|
|
487
543
|
[
|
|
488
544
|
(pattern_bracket_character_source) @character
|
|
@@ -492,18 +548,28 @@
|
|
|
492
548
|
(pattern_bracket_character_source)
|
|
493
549
|
(pattern_bracket_hyphen_source)
|
|
494
550
|
] @character
|
|
495
|
-
operator: (pattern_bracket_range_operator_source) @
|
|
551
|
+
operator: (pattern_bracket_range_operator_source) @operator
|
|
496
552
|
end: [
|
|
497
553
|
(pattern_bracket_character_source)
|
|
498
554
|
(pattern_bracket_hyphen_source)
|
|
499
555
|
] @character)
|
|
500
556
|
(pattern_character_class_source
|
|
501
557
|
"[" @punctuation.bracket
|
|
502
|
-
":" @punctuation.
|
|
558
|
+
":" @punctuation.delimiter
|
|
503
559
|
content: (pattern_character_class_content_source) @character.special
|
|
504
|
-
":" @punctuation.
|
|
560
|
+
":" @punctuation.delimiter
|
|
561
|
+
"]" @punctuation.bracket)
|
|
562
|
+
(pattern_collating_symbol_source
|
|
563
|
+
"[" @punctuation.bracket
|
|
564
|
+
"." @punctuation.delimiter
|
|
565
|
+
value: (pattern_collating_symbol_character_source) @character.special
|
|
566
|
+
"." @punctuation.delimiter
|
|
567
|
+
"]" @punctuation.bracket)
|
|
568
|
+
(pattern_equivalence_class_source
|
|
569
|
+
"[" @punctuation.bracket
|
|
570
|
+
"=" @punctuation.delimiter
|
|
571
|
+
value: (pattern_equivalence_class_character_source) @character.special
|
|
572
|
+
"=" @punctuation.delimiter
|
|
505
573
|
"]" @punctuation.bracket)
|
|
506
|
-
(pattern_collating_symbol_source) @character.special
|
|
507
|
-
(pattern_equivalence_class_source) @character.special
|
|
508
574
|
])
|
|
509
575
|
"]" @punctuation.bracket)))
|
package/src/parser.c
CHANGED
|
@@ -889903,7 +889903,7 @@ TS_PUBLIC const TSLanguage *tree_sitter_sh(void) {
|
|
|
889903
889903
|
.max_reserved_word_set_size = 0,
|
|
889904
889904
|
.metadata = {
|
|
889905
889905
|
.major_version = 0,
|
|
889906
|
-
.minor_version =
|
|
889906
|
+
.minor_version = 6,
|
|
889907
889907
|
.patch_version = 0,
|
|
889908
889908
|
},
|
|
889909
889909
|
};
|
package/tree-sitter.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
}
|
|
12
12
|
],
|
|
13
13
|
"metadata": {
|
|
14
|
-
"version": "0.
|
|
14
|
+
"version": "0.6.0",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"description": "Tree-sitter grammar for POSIX sh.",
|
|
17
17
|
"authors": [
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"go": false,
|
|
29
29
|
"node": false,
|
|
30
30
|
"python": false,
|
|
31
|
-
"rust":
|
|
31
|
+
"rust": true,
|
|
32
32
|
"swift": false
|
|
33
33
|
}
|
|
34
34
|
}
|