36d6c3947aabeaa0e6a99707cfdc94702b92932c
- Remove 'asciiend' from ascii_string grammar rule (handled by scanner) - Add scanner logic to skip comment-only lines when measuring indentation - Update scanner to include 'asciiend' in ASCII_CONTENT token - Implement external scanner for BLOCK_COMMENT (partial fix) Results: Reduced parse errors from 156 to 119 (23% improvement)
tree-sitter-stonescript
A Tree-sitter grammar for the StoneScript programming language.
Overview
This grammar provides syntax parsing support for StoneScript, the scripting language used in the game Stone Story RPG. It enables syntax highlighting, code analysis, and other language features in editors that support Tree-sitter.
Installation
Node.js
npm install tree-sitter-stonescript
From Source
git clone https://github.com/kurbezz/tree-sitter-stonescript.git
cd tree-sitter-stonescript
npm install
npm run build
Usage
Node.js
const Parser = require('tree-sitter');
const StoneScript = require('tree-sitter-stonescript');
const parser = new Parser();
parser.setLanguage(StoneScript);
const sourceCode = `
var x = 5
if x > 3
weapon sword
`;
const tree = parser.parse(sourceCode);
console.log(tree.rootNode.toString());
Rust
Add this to your Cargo.toml:
[dependencies]
tree-sitter = "0.20"
tree-sitter-stonescript = { path = "path/to/tree-sitter-stonescript" }
Testing
npm test
This will run the corpus tests located in the corpus/ directory.
Language Features
The grammar supports:
- Variables and assignments
- Conditional statements (if/else)
- Functions
- Operators (arithmetic, comparison, logical)
- Comments
- String literals
- Number literals
- Built-in game objects and functions
File Extensions
.ss.txt(when containing StoneScript code)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details
Related Projects
- stone-script-lsp - Language Server Protocol implementation for StoneScript
- zed-stonescript - Zed editor extension for StoneScript
Resources
Languages
C
40.4%
C++
28.5%
JavaScript
22%
Rust
8.3%
Python
0.8%