99 lines
2.0 KiB
Markdown
99 lines
2.0 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
npm install tree-sitter-stonescript
|
|
```
|
|
|
|
### From Source
|
|
|
|
```bash
|
|
git clone https://github.com/kurbezz/tree-sitter-stonescript.git
|
|
cd tree-sitter-stonescript
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Node.js
|
|
|
|
```javascript
|
|
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`:
|
|
|
|
```toml
|
|
[dependencies]
|
|
tree-sitter = "0.20"
|
|
tree-sitter-stonescript = { path = "path/to/tree-sitter-stonescript" }
|
|
```
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
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](https://github.com/kurbezz/stonescript-language-server) - Language Server Protocol implementation for StoneScript
|
|
- [zed-stonescript](https://github.com/kurbezz/zed-stonescript) - Zed editor extension for StoneScript
|
|
|
|
## Resources
|
|
|
|
- [Stone Story RPG](https://stonestoryrpg.com/)
|
|
- [StoneScript Documentation](https://stonestoryrpg.com/stonescript/)
|
|
- [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) |