New Parser Framework: Bablr

conartist62 pts0 comments

BABLR<br>Welcome to"],"data-astro-cid-nlow4r3u":[0,true]}" ssr client="only" opts="{"name":"DemoText","value":"solid"}">

The next-gen LR parser framework for creating elegant and efficient language<br>tools

Read our<br>release announcement!

Our APIs get out of your way so you can write code

We're building an API-first IDE centered around a Document Object Model (or DOM) for code. We hope to create a new generation of tools that are more<br>trustworthy, transparent, powerful, and approachable in order to make software<br>literacy less rare. We believe when that software literacy is rare the incentives<br>are strong for software to be used to manipulate people rather than to serve<br>them.

Tool Authors<br>Create and maintain tools with powerful abstractions and simplified workflows.

IDE Developers<br>Build rich editing experiences with comprehensive language support.

Language Authors<br>Design and implement languages with sophisticated parsing capabilities.

Roadmap

Building the future of parsing, one milestone at a time

Planned<br>1.0.0<br>Declare the BABLR APIs stable

More implementations<br>Try using BABLR to port itself to... Python? Rust?

Snapshot testing<br>Use BABLR to update test files when the expected results change

Paneditor<br>A browser-based semantic code editor using an agAST document as a DOM. Structural search powered by Spamex

Far.OS<br>A UNIX-inspired in-browser operating system with streaming data and a virtual filesystem

In Progress<br>Documentation<br>API docs, guides, architecture and more

Broader Language Support<br>Currently incomplete grammars include Typescript, Python, and Ruby. Help us finish those and add more!

Virtual Filesystem<br>nodes let you put a whole repo into one CSTML or agAST tree!

Structural Hashing<br>Enables progressive tree transfer and git-like version control

Snippets/Forge<br>A remote peer with a fancy web UI! Free for open source projects

Completed<br>CSTML<br>A modern, XML-like markup language that avoids repeating XML's mistakes

agAST<br>Uses btrees to store CSTML documents in a way that is monomorphic, deeply immutable, and safe from prototype injection

Guarded Spans<br>A parser author can set a guard pattern which, until cleared, will seem to end the input when matched

Themes<br>Users can use CSS to add custom styling to code

CLI<br>Runs and traces parsers. Includes helpful syntax highlighting.

Open Source

Learn about BABLR and its mission. Contribute to our growing community.

Community

Join our Discord to offer feedback, ask questions, and help guide our<br>roadmap.

Documentation

Comprehensive guides and examples to get you started quickly.

Frequently Asked Questions

What is BABLR?

BABLR is a parser framework roughly comparable to Tree-sitter, but<br>built from the ground up for the web. It is meant to be "everything<br>but the GUI" of an IDE. It can provide version control, syntax<br>awareness, and the integration APIs that will allow products built on<br>the BABLR core to support our ecosystem of compatible libraries and<br>extensions.

Its purpose is to faciliate experimentation with new UX paradigms,<br>particularly by faciliating the creation of new generation of<br>"semantic-syntactic" code editors. Such an editor is syntactic in that<br>it presents code as 2D text, but can also be semantic by not (ever)<br>allowing invalid syntax like unclosed quotes or mismatched braces.<br>Instead such an editor should be centered around compostion: it should<br>make logically-coherent pieces of code feel like they can be taken<br>apart and snapped together with the delightful ease usually associated<br>with Lego bricks.

Why another toolchain?

Existing projects which BABLR competes with generally fit into one of a<br>few categories:<br>Tools for writing Javascript, like ESLint, Prettier, or Babel

Toolchains for writing Javascript, like Biome (in Rust), VoidZero<br>(in Rust), or Typescript (moving to Go)

Toolchains for working with code in any language, like ANTLR,<br>TreeSitter, or SrcML

BABLR is the first full toolchain written in Javascript for working with<br>code in any language!

We needed to own a full toolchain to be able to experiement with<br>simplicity-focused full-stack adaptations like gap parsing.

We wanted our toolchain to be multilingual so that once we built<br>trust in our it we could take it with us to projects written in any<br>programming language and give it to people who speak any human<br>language.

We wanted the toolchain to be written in Javascript so that it would<br>be an asset to anyone with a web browser, and could welcome to its<br>community of collaborators and maintainers anyone who knows<br>Javascript

Is BABLR open source?

BABLR code is open source under the MIT License. In addition the<br>project is "open" in the sense that its complete development history<br>is recorded in a public forum (our<br>Discord)<br>where community members are welcome to come and share their<br>experiences and insights for how to improve the product.

Because we need to make money the Silphium Labs team that built BABLR<br>will also start to build closed-source products, yet we believe...

bablr code language like open source

Related Articles