Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
title JTree: Tree Notation SDK for TypeScript & Javascript
permalink index

 <a href=""><img src="" style="width: 49%;"/></a> <a href=""><img src=""/ height="20" width="153"></a>

section Links

 - Tree Notation Homepage🔗
 - Tree Notation Sandbox🔗
 - Tree Language Designer🔗
 - Tree Notation FAQ🔗
 - TreeBase🔗
 - TypeScript Library🔗
 - Tree Notation Subreddit🔗
 - Ohayo🔗 A Data Science App Powered By Tree Notation
 - UnitTests🔗
 - PerfTests🔗

question Who is this package built for?

 Jtree is for people who want to design Tree Languages, make
 Tree editing tools, use TreeBase, or use the Tree Component
 Web Framework.

 You can think of jtree as similar to the Java Development
 Kit, except for Tree Notation instead of Java.

question How do I build a new language?

 You can try the checklist🔗

section Grammar Files

 Jtree contains a Tree Language called "Grammar". You can
 write new Grammar files to define new languages. By creating
 a grammar file you get a parser, a type checker, syntax
 highlighting, autocomplete, a compiler, and virtual machine
 for executing your new language. Jtree also includes a
 simple web Tree Language Designer🔗

 To make your language do really interesting things, you'll
 want to write some code to extend your language nodes in
 another language that you know. Jtree lets you create new
 languages using just Tree Notation, Tree Notation +
 TypeScript, or Tree Notation + Javascript. Tree Notation and
 Tree Languages can be built with any language, however, not
 just TypeScript and Javascript. We are looking for
 volunteers to build libraries/sdks in other host languages.

section Using Jtree

 Jtree currently includes around 10 compiled projects (aka
 "products") and more than a dozen Tree Languages.

subsection jtree base library for npm projects:

 const {jtree} = require("jtree")
 const tree = new jtree.TreeNode("hello world")

subsection jtree base library for the browser:

 <script src="" />

subsection jtree command line tool

 npm install -g jtree
 jtree help

subsection TreeBase

 npm install -g jtree
 jtree base

subsection jtree "sandbox" web app for exploring base Tree Notation

 npm install -g jtree
 jtree kitchen
 open http://localhost:3333/

subsection jtree "Designer" web app for building new Tree Languages

 npm install -g jtree
 jtree kitchen
 open http://localhost:3333/designer

subsection TreeComponentFramework for building web apps

 (directions coming soon)

subsection Sample Languages

 More than 12 example Tree Languages for helping with
 various tasks

 See the "langs/" folder.

subsection  Build Tools

 If you look at the source, you will also see a set of build
 tools (such as Builder and TypeScriptRewriter). These are
 currently undocumented and not recommended for external use.

subsection Building all tools and running tests

 jtree build produceAll
 npm test

section Monorepo

 Jtree is a monorepo. With on average
 over 1 major version released each month for the past 2.5
 years, it would take a lot of overhead to constantly be
 updating 10+ different repositories and modules every month.
 Once we're more confident in the theory and best practices,
 it might make sense to break this repo into independent modules.

 That being said, we despise unnecessary dependencies as much
 as anyone. If anyone wants to create some automated
 submodules built from the projects in this monorepo, to
 allow for consuming of a smaller subset of the code and
 dependencies in this module, feel free to do so.

subsection Visualization of the code base

image diagram.svg

section Development Status

 All breaking changes are mentioned in the releaseNotes🔗./releaseNotes.html. We
 follow semantic versioning, so breaking changes should not
 happen if you stay on the same major version.

section Tree Notation Libraries in Other Languages

 If you build a Tree Notation library/SDK in another
 language, let us know and we'll add a link.

 If you are working on a Tree Notation library in a new host
 language, feel free to post an issue or ask for help in the 
 reeNotation subreddit🔗

subsection How to bump versions

 jtree build updateVersion NEW_NUMBER

section Alternatives Considered

 This is the first Tree Notation library in existence, so
 there were no alternative implementations. Note and Space
 were predecessors to Tree Notation.

 If a better alternative low level notation to Tree Notation
 is possible, it has yet to be discovered.

 All that said, the important part of this repo is not the
 code but the design patterns. Tree Notation is very simple,
 and you can implement the patterns contained here in your
 own code without using this library. In fact, that is often
 the best way to use Tree Notation!

section ❤️ Public Domain ❤️


Build your own language using Tree Notation.