Skip to main content

A Windows Batch/CMD grammar for tree-sitter

Project description

tree-sitter-batch

Windows Batch/CMD grammar for tree-sitter.

Parses .bat and .cmd files into a concrete syntax tree for syntax highlighting, code navigation, and analysis.

Features

  • Control flowIF/ELSE (EXIST, DEFINED, ERRORLEVEL, comparison with NOT), FOR (/D /R /L /F), GOTO, CALL
  • VariablesSET (plain, /A arithmetic, /P prompt), %VAR%, !VAR!, %%i, %~dp0, %VAR:old=new%
  • Operators — pipes |, redirects > >> 2> 2>&1, conditional && ||
  • Structure — labels :name, comments REM ::, parenthesized blocks, @ECHO OFF
  • ScopeSETLOCAL/ENDLOCAL with ENABLEDELAYEDEXPANSION
  • Case-insensitive — all keywords match regardless of casing

Example

@echo off
REM Build script
setlocal enabledelayedexpansion

set "PROJECT=MyApp"
set /a VERSION=1

if not exist "dist" (
  mkdir dist
)

for %%f in (src\*.txt) do (
  copy "%%f" "dist\"
)

if %ERRORLEVEL% == 0 (
  echo Build successful
) else (
  echo Build failed
  exit /b 1
)

exit /b 0

Parsed tree:

(program
  (echo_off)
  (comment)
  (setlocal_stmt)
  (variable_assignment
    (set_keyword) (variable_name) (assignment_value))
  (variable_assignment
    (set_keyword) (set_option) (variable_name) (assignment_value))
  (if_stmt
    (string)
    (parenthesized
      (cmd (command_name) (argument_list (argument_value)))))
  (for_stmt
    (for_variable)
    (for_set)
    (parenthesized
      (cmd (command_name) (argument_list (string) (string)))))
  (if_stmt
    (variable_reference)
    (comparison_op)
    (integer)
    (parenthesized
      (cmd (command_name) (argument_list (argument_value) (argument_value))))
    (else_clause
      (parenthesized
        (cmd (command_name) (argument_list (argument_value) (argument_value)))
        (exit_stmt (integer)))))
  (exit_stmt (integer)))

Installation

npm

npm install tree-sitter-batch

Cargo

cargo add tree-sitter-batch

PyPI

pip install tree-sitter-batch

Go

import tree_sitter_batch "github.com/wharflab/tree-sitter-batch/bindings/go"

The root package also exports the bundled queries/highlights.scm via go:embed:

import batch "github.com/wharflab/tree-sitter-batch"

lang := batch.GetLanguage()
query, _ := batch.GetHighlightsQuery()
// or access the raw .scm source:
// raw := batch.HighlightsQuery

Usage

Node.js

import Parser from "tree-sitter";
import Batch from "tree-sitter-batch";

const parser = new Parser();
parser.setLanguage(Batch);

const tree = parser.parse(`@echo off\necho Hello World\n`);
console.log(tree.rootNode.toString());

Rust

let mut parser = tree_sitter::Parser::new();
let language = tree_sitter_batch::LANGUAGE;
parser.set_language(&language.into()).unwrap();

let tree = parser.parse("@echo off\necho Hello\n", None).unwrap();
println!("{}", tree.root_node().to_sexp());

Python

from tree_sitter import Language, Parser
import tree_sitter_batch

parser = Parser(Language(tree_sitter_batch.language()))
tree = parser.parse(b"@echo off\necho Hello\n")
print(tree.root_node.sexp())

Syntax Highlighting

The grammar ships with a queries/highlights.scm file for use in editors that support tree-sitter highlighting (Neovim, Helix, Zed, etc.).

References

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tree_sitter_batch-0.6.0.tar.gz (26.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tree_sitter_batch-0.6.0-cp310-abi3-win_arm64.whl (19.6 kB view details)

Uploaded CPython 3.10+Windows ARM64

tree_sitter_batch-0.6.0-cp310-abi3-win_amd64.whl (20.9 kB view details)

Uploaded CPython 3.10+Windows x86-64

tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_x86_64.whl (35.5 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_aarch64.whl (36.3 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

tree_sitter_batch-0.6.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (37.4 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

tree_sitter_batch-0.6.0-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (35.9 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

tree_sitter_batch-0.6.0-cp310-abi3-macosx_11_0_arm64.whl (19.2 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

tree_sitter_batch-0.6.0-cp310-abi3-macosx_10_9_x86_64.whl (18.9 kB view details)

Uploaded CPython 3.10+macOS 10.9+ x86-64

File details

Details for the file tree_sitter_batch-0.6.0.tar.gz.

File metadata

  • Download URL: tree_sitter_batch-0.6.0.tar.gz
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tree_sitter_batch-0.6.0.tar.gz
Algorithm Hash digest
SHA256 2e6757f5c2621178d82644ac99ca813eaa4c5e09f4e4187e33c19523d44c2010
MD5 bbc24930f2b46744a6c976c3cb4334a8
BLAKE2b-256 c79db9ae823fe2ce20e5ea2b6823e3fe2c16450524d7fdb60c79b02ba8465f49

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0.tar.gz:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 5b07622d3a179354e673c5c8466246bb4b4ef3b103118ad189ebf2e555364227
MD5 e2b0423730a657d039eae85afe126953
BLAKE2b-256 e8ea9a06d94e164ee8b93a155570a6f729b491aab3f63a5883ad421cde5b8040

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-win_arm64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f107c67542f5bcecd985011971697cd7284bf11308d55c5998e5be8ce1b04663
MD5 007321f985a34be617236823f62ed789
BLAKE2b-256 9637ca762977be8b630521d4406a7474e5d2a5ad30320a45c4c51f7ced9353b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-win_amd64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 948681f080c86facb8072f64df2187e5456be6b17e5fdeb6b8e518961ab3eafb
MD5 3ea9e0da589c851b1ed5043b70f99b11
BLAKE2b-256 151fb1e532ccb6ca712a836fe1ef4f9fd83357cb854f8169f5b35a8a1b7b6bc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 af9cb270002665cca2ef86b1dd320f5eb2044f81185ecfcbecaf519f05bdd98b
MD5 b76e9f20732bccdb6eb876baefbfda16
BLAKE2b-256 c28e5eef54533f46ddbf678384aa3b4d79c3e471591a2fc666672f724778a13e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-musllinux_1_2_aarch64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0229628f8651d60c3320163bcfc4ee634f179864c392a275244c5e4d567499cf
MD5 66bb7f6db297441fa43486f241f3e4bf
BLAKE2b-256 ee832bb09d3eb094010b51dce5be8fa29574497dbe4a03cfebe32f9a670eb354

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 d46a9a226acdc044c48320515d85118c183f2fe72da7f1db4b4cba5797a463e0
MD5 1e240b1f064dda60593e1af8eeb4112d
BLAKE2b-256 395ea33cfe91116abcef446b94f5ec062004702d584ffe49e4fe257e1ee289cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e5fe7148a0485c41ad76ee58b0e874157ec0fe9fa8bdeca295163af500e1a350
MD5 ca3d95f0d65c7a9433f49351ef6e511c
BLAKE2b-256 7eedca86cd31cb00ce3aba3b88e0e4e1475cf6c131f701201038010a7b56e2b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tree_sitter_batch-0.6.0-cp310-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter_batch-0.6.0-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9ca6b97ba1b5d9986f912e7b4980d6037e36dc95017c9115f8712b073ef0c683
MD5 1596a6ffdb4099dedd89dfa70744753c
BLAKE2b-256 10a9d6a732e3f4bbd28190bef6e9214a971c208ffb37bb2eeae021a87341507c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tree_sitter_batch-0.6.0-cp310-abi3-macosx_10_9_x86_64.whl:

Publisher: publish_pypi.yml on wharflab/tree-sitter-batch

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page