Tree-sitter grammars for InterSystems ObjectScript.
This repository publishes five related grammars:
objectscript: playground/snippet grammar.objectscript_udl: class-file grammar for.cls.objectscript_core: routine/statement grammar.objectscript_expr: expression grammar.objectscript_routine: routine-header grammar for.mac,.inc, and.int.
Grammar extension graph:
objectscript_expr -> objectscript_core -> objectscript_udl -> objectscript
objectscript_expr -> objectscript_core -> objectscript_routine
- npm:
tree-sitter-objectscript - PyPI:
tree-sitter-objectscript - Rust crates:
tree-sitter-objectscript(UDL + routine grammars)tree-sitter-objectscript-playground(playground grammar)
Language bindings are available under bindings/:
- C:
bindings/c - Go:
bindings/go - Node.js:
bindings/node - Python:
bindings/python - Rust:
bindings/rustandbindings/rust-playground - Swift:
bindings/swift
Quick binding checks from repo root:
nvm use
npm ci
cargo test --lib --package tree-sitter-objectscript
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -U pip setuptools wheel pytest tree-sitter
python3 setup.py build_ext --inplace
PYTHONPATH=$PWD/bindings/python python3 -m pytest -q bindings/python/tests/test_binding.py
npm test
go test ./bindings/go/...
swift test
make testFor Node bindings specifically, .nvmrc pins the expected Node version.
- Zed: ObjectScript extension
- Neovim (
nvim-treesitter):- Install grammars with
:TSInstall objectscript_udl,:TSInstall objectscript, and:TSInstall objectscript_routine - Optional filetype mapping for
.cls:
- Install grammars with
vim.filetype.add({
extension = {
cls = "objectscript_udl",
},
})- Emacs: emacs-objectscript-ts-mode
Install the tree-sitter CLI, then run commands from a grammar directory (objectscript, udl, core, expr, or objectscript_routine):
tree-sitter generate
tree-sitter test
tree-sitter buildFor playground work:
tree-sitter build --wasm
tree-sitter playgroundIf you change an upstream grammar (expr or core), regenerate downstream grammars as needed (udl, objectscript, objectscript_routine).
See CONTRIBUTING.md for setup, workflow, query sync, and binding test instructions.
MIT. See LICENSE.