tree-sitter-dwscript
v0.4.2
Published
DWScript (Pascal dialect) grammar for Tree-sitter
Maintainers
Readme
tree-sitter-dwscript
DWScript (Pascal dialect) grammar for Tree-sitter
This repository contains a Tree-sitter grammar for DWScript, a Pascal dialect that extends Delphi/Object Pascal with modern features like scoped enums, property expressions, and inline variable declarations.
Features
- Full DWScript syntax support, including extensions beyond standard Pascal
- Case-insensitive keywords
- Support for units, classes, interfaces, records, and more
- Syntax highlighting queries for editors
- Bindings for multiple languages (C, Go, Node.js, Python, Rust, Swift)
Documentation
- DWScript Keywords - Complete list of supported keywords
Installation
As a library
Node.js
npm install tree-sitter-dwscriptPython
pip install tree-sitter-dwscriptOther languages
See the bindings/ directory for installation instructions for C, Go, Rust, and Swift.
From source
git clone https://github.com/your/repo
cd tree-sitter-dwscript
npm install
npm run generate # Generate the parser from grammar.js
npm run build # Build the libraryUsage
In Node.js
const Parser = require('tree-sitter');
const DWScript = require('tree-sitter-dwscript');
const parser = new Parser();
parser.setLanguage(DWScript);
const sourceCode = `
var x: Integer := 42;
begin
x := x + 1;
end.
`;
const tree = parser.parse(sourceCode);
console.log(tree.rootNode.toString());In Python
import tree_sitter_dwscript as dwscript
from tree_sitter import Language, Parser
DWSCRIPT_LANGUAGE = Language(dwscript.language())
parser = Parser(DWSCRIPT_LANGUAGE)
source_code = b"var x: Integer;"
tree = parser.parse(source_code)
print(tree.root_node.sexp())Command line
Use the Tree-sitter CLI to parse files:
tree-sitter parse yourfile.dwsOr test the grammar:
tree-sitter testDevelopment
Prerequisites
- Node.js (for building and testing)
- Tree-sitter CLI:
npm install -g tree-sitter-cli
Building
npm run generate # Generate src/parser.c from grammar.js
npm run build # Build the shared libraryTesting
npm test # Run corpus testsTests are located in test/corpus/. Each .txt file contains input DWScript code and expected parse tree.
Playground
npm start # Launch Tree-sitter playground for interactive testingAdding features
- Update
grammar.jswith new rules - Run
npm run generate - Add test cases to
test/corpus/ - Run
npm testto verify
File structure
grammar.js: Grammar definitionsrc/: Generated parser filesbindings/: Language-specific bindingscorpus/: Test casesqueries/: Syntax highlighting and semantic queriesdocs/: DocumentationPLAN.md: Development roadmap
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new features
- Ensure all tests pass
- Submit a pull request
License
MIT License - see LICENSE file for details
