GithubHelp home page GithubHelp logo

mlbrgl / jtree Goto Github PK

View Code? Open in Web Editor NEW

This project forked from breck7/jtree

0.0 0.0 0.0 74.46 MB

Build your own language using Tree Notation.

Home Page: http://jtree.treenotation.org

JavaScript 74.13% TypeScript 25.13% CSS 0.44% HTML 0.31%

jtree's Introduction

import header.scroll
permalink index.html
title JTree: Tree Notation SDK for TypeScript & Javascript
startColumns 4
import ciBadges.scroll

# Links
Tree Notation Homepage
 https://treenotation.org
Tree Notation Sandbox
 https://jtree.treenotation.org/sandbox
Tree Language Designer
 https://jtree.treenotation.org/designer
Release Notes
 https://jtree.treenotation.org/releaseNotes.html
Tree Notation FAQ
 https://faq.treenotation.org
TrueBase
 https://truebase.pub/
TypeScript Library
 https://github.com/treenotation/jtree
Tree Notation Subreddit
 https://reddit.com/r/treenotation
Ohayo - A data science studio powered by Tree Notation
 https://github.com/treenotation/ohayo
UnitTests
 https://jtree.treenotation.org/sandbox/test.html
PerfTests
 https://jtree.treenotation.org/sandbox/perfTests.html

? Who is this package built for?
Jtree is for people who want to design Tree Languages, make Tree editing tools, 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.

? How do I build a new language?
You can try the Grammar tutorial.
 link grammarTutorial.html Grammar tutorial

# 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.
 https://jtree.treenotation.org/designer 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.

# Using Jtree

## Quick start
- Open https://gitpod.io/#https://github.com/breck7/jtree
- Run:
code
 npm install -g ts-node
 npm install .
 npm run test

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

# Basic TreeNode library for npm projects:
code
 const {TreeNode} = require("jtree/products/TreeNode.js")
 const tree = new TreeNode("hello world")
 console.log(tree.asString)

# Basic TreeNode library + Grammar Language for the browser:
code
 <script src="../../products/Utils.browser.js"></script>
 <script src="../../products/TreeNode.browser.js"></script>
 <script src="../../products/GrammarLanguage.browser.js"></script>

## jtree "sandbox" web app for exploring base Tree Notation
code
 npm install .
 npm run local
 open http://localhost:3333/

## jtree "Designer" web app for building new Tree Languages
code
 npm install .
 npm run local
 open http://localhost:3333/designer

## TreeComponentFramework for building web apps
This is a web framework still in the research stage. Whether it evolves into a serious line of effort is unknown.

## Sample Languages
More than 12 example Tree Languages for helping with various tasks. See the `langs/` folder.

##  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.

## Building all tools and running tests
code
 npm run build
 npm test

# 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.

## Visualization of the code base
 https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=breck7%2Fjtree Visualization
image images/diagram.svg

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

# 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  TreeNotation subreddit.
 https://reddit.com/r/treenotation subreddit

## How to bump versions
code
 npm run updateVersion NEW_NUMBER

# 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!

## Editing in Sublime Text
It is helpful to set `"goto_anything_exclude_gitignore": true` to ignore files in gitignore. Read more here.
 https://breckyunits.com/code/my-sublime-setttings.html here

# ❤️ Public Domain ❤️

import footer.scroll

jtree's People

Contributors

breck7 avatar jimbo1167 avatar celtic-coder avatar xyproto avatar earthboundkid avatar sapatgit avatar bb010g avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.