tree-sitter-moo
v0.2.15
Published
Tree-sitter grammar for ToastStunt/LambdaMOO verb code.
Downloads
1,492
Maintainers
Readme
tree-sitter-moo
Tree-sitter grammar for MOO verb code. The grammar targets ToastStunt as the initial superset dialect while keeping LambdaMOO compatibility in view.
Install
Install the parser with the core Tree-sitter runtime:
npm install tree-sitter@^0.25.0 tree-sitter-mooParse MOO code from Node:
const Parser = require("tree-sitter");
const MOO = require("tree-sitter-moo");
const parser = new Parser();
parser.setLanguage(MOO);
const source = 'player:tell("Hello from MOO.");';
const tree = parser.parse(source);
console.log(tree.rootNode.toString());The package exports the native Node binding at tree-sitter-moo, a
browser-loadable Wasm parser at tree-sitter-moo/wasm, and query files for
editor integrations.
Supported Syntax
This parser currently validates against 446 checked-in valid MOO verb fixtures
imported from
moo-for-llms, with no ERROR
or MISSING nodes.
Supported language surface includes:
- raw verb bodies in
.moofiles - assignments, assignment expressions, scatter assignment, and list splicing
if/elseif/else,while,for,try/except, andfork- function calls, verb calls,
pass(...), property access, computed properties - list literals, list indexing/ranges, numeric range literals
- ToastStunt map literals and map indexing
- inline error-catching expressions
- object refs, system objects, error constants, and type constants
- durable MOO string-literal comments, exposed as
commentnodes
Version 1 parses raw verb bodies as provided by a MOO server. .moo files are
treated as plain verb code with no wrapper metadata, object declarations, or
database-dump syntax.
Stored verb code uses standalone string-literal statements for durable comments.
Parser-discarded forms such as // ... and /* ... */ are not treated as MOO
comments by this grammar because they are not portable stored verb code.
ToastStunt-only forms such as maps, MAP, WAIF, ANON, and BOOL are
accepted by default. A future dialect mode can distinguish ToastStunt from
LambdaMOO when tooling needs that distinction.
Documentation
- Usage: Node API, Wasm parser, CLI usage, and package exports
- Language bindings: Node, Wasm, Go, Rust, Python, C, and Swift examples
- Editor setup: Neovim, Emacs, Helix, and extension notes
- Testing: local test tiers, fixture validation, and CI expectations
- Contributing: development and pull request workflow
- Fixtures: fixture provenance and validation policy
- Release process: npm release workflow and checklist
- Security: security reporting policy
- Roadmap: planned follow-up work
- Changelog: release notes and known gaps
License
MIT. See LICENSE.
