For domain specific languages, the strongest matches are tree-sitter/tree-sitter (Tree-sitter is a prominent parser generation framework that builds), racket/racket (Racket is a full-featured language workbench designed explicitly for) and babel/babel (Babel is a widely used JavaScript compiler and AST). zaach/jison and geal/nom round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Discover the best open-source domain-specific language repositories on GitHub, ranked by stars and activity. Compare and pick the right one.
Tree-sitter is a parsing system and incremental parsing framework designed to generate high-performance syntax trees from source code. It functions as a language parsing engine that compiles formal grammar definitions into portable code, which can then be integrated into text editors and development tools to facilitate structural analysis, code navigation, and syntax highlighting. The project distinguishes itself through its ability to maintain valid, usable syntax tree structures even when source code contains syntax errors or incomplete fragments. It utilizes a generalized parsing algorithm
Tree-sitter is a prominent parser generation framework that builds robust abstract syntax trees and supports incremental parsing for custom grammars, directly matching your need for building and executing domain-specific languages.
Racket is a general-purpose, multi-paradigm programming language in the Lisp family designed for language creation. It functions as a language workbench, providing a platform for designing and implementing custom programming languages through a flexible system of macros and modules. The system distinguishes itself by offering a comprehensive suite for semantics engineering, allowing for the construction of specialized language subsets and educational layers. It includes tools for custom language design, such as lexer and parser generation, as well as the ability to define module expansion rul
Racket is a full-featured language workbench designed explicitly for language creation, providing robust macro systems and tools for designing custom programming languages, abstract syntax trees, and semantics engineering.
Babel is a pluggable JavaScript compiler and transpiler that converts modern ECMAScript syntax into backwards-compatible versions of the language. It functions as an abstract syntax tree manipulator, parsing source code into a hierarchical structure to traverse and modify nodes for custom code transformations. The system utilizes a plugin-driven architecture to apply specific transformation rules and supports presets that bundle multiple plugins into named configuration groups. This enables the transformation of experimental syntax and the injection of non-global polyfills to ensure consisten
Babel is a widely used JavaScript compiler and AST manipulation tool that handles parsing, traversal, and code generation, making it a powerful choice for working with language syntax though specifically tailored to JavaScript rather than arbitrary general-purpose DSLs.
Jison is a JavaScript parser generator that implements the LALR parsing algorithm. It creates tools to analyze custom programming languages by converting structured input into tokens and trees. The project functions as a Bison-compatible generator, accepting grammars in a format compatible with the Bison parser generator to produce JavaScript parsers. It covers the requirements for compiler frontend development, including the implementation of domain-specific languages and syntax analysis tooling. Its capabilities extend to custom language parsing and the generation of parsers via a command
Jison is a JavaScript parser generator that builds LALR parsers and abstract syntax trees from custom grammars, making it a useful tool for implementing domain-specific languages despite lacking built-in code generation features.
nom is a Rust parser combinator framework used to build complex parsers for binary and text data. It functions as an abstract syntax tree generator and a bit-level binary parser, allowing users to construct structured data by combining small, reusable parsing functions. The framework provides specialized support for zero-copy binary parsing, extracting data as slices from raw byte arrays to avoid memory allocations. It also includes a streaming data parser capable of processing partial input chunks from networks or files and signaling when additional input is required. The project covers a b
Nom is a parser combinator framework in Rust that lets you build custom grammar parsers and handle data extraction, though it focuses on parser building blocks rather than a full end-to-end language workbench or code generation suite.
Sweet-core is a JavaScript source-to-source compiler and Lisp-style macro system. It functions as a syntax transformer that extends JavaScript by allowing the definition of custom syntax and operators during the compilation process. The system provides a framework for building domain-specific languages through hygienic, recursive macro expansion and the creation of new language constructs. It distinguishes itself by supporting custom operator definitions with configurable associativity and precedence to control expression evaluation. The compiler includes a specialized module system for mana
Sweet-core is a JavaScript macro system and source-to-source compiler that provides custom grammar extensions and abstract syntax tree transformations, making it a capable tool for building domain-specific languages despite lacking a traditional parser generator.
ANTLR is a grammar-based code generator and multi-language parser generator used to design and implement custom languages. It functions as a toolkit for transforming formal language definitions into executable source code for processing structured text or binary files, while providing a framework for automatically constructing and traversing hierarchical parse trees. The project is distinguished by its ability to generate lexers and parsers in various target programming languages from a single shared grammar definition. It supports grammars containing direct left recursion and utilizes adapti
ANTLR is a robust parser generator and language development toolkit that lets you define custom grammars, build syntax trees, and generate multi-language code for processing domain-specific languages.
Grule is a business rule engine for Go that decouples complex decision-making logic from core application code. It provides a framework for defining, versioning, and executing business rules through a domain-specific language, allowing logic to be managed independently of the underlying software implementation. The engine distinguishes itself by utilizing a formal grammar-based parser and a Rete-inspired pattern matching algorithm to evaluate logic against data facts efficiently. It supports dynamic system modeling by enabling runtime updates to policies and providing thread-safe knowledge ba
Grule is a business rule engine and domain-specific language framework for Go that features a formal grammar parser and abstract syntax tree evaluation, fitting the core requirements for executing custom business languages.
The .NET Compiler Platform is a collection of open-source APIs for C# and Visual Basic that provides deep code analysis, refactoring, and automated source code generation. It serves as the core infrastructure for building development tools, offering a platform to inspect, modify, and understand source code through immutable syntax trees and semantic models. The platform distinguishes itself by providing full-fidelity syntax trees that preserve every character of source code, including whitespace and comments, alongside an incremental compilation pipeline that enables near-instant feedback dur
The .NET Compiler Platform provides deep code analysis, immutable syntax trees, and compiler APIs, making it a powerful choice for building language tools within the C# ecosystem despite being tailored specifically to C# and Visual Basic rather than arbitrary custom DSLs.
Nearley is a JavaScript parser toolkit and context-free grammar compiler. It functions as an Earley parser generator that transforms BNF-like grammar definitions into executable code capable of analyzing text and generating abstract syntax trees. The project is distinguished by its ability to handle any context-free grammar, including those with left recursion and ambiguity, by maintaining multiple valid derivations for a single input. It further supports incremental parsing, allowing input strings to be processed in chunks to provide partial results and real-time feedback. Beyond core parsi
Nearley is a JavaScript parser toolkit and Earley parser generator that compiles grammars into executable code for building abstract syntax trees, making it a solid building block for domain-specific languages.
DBML is a domain-specific language and schema definition language used for documenting database architecture and design. It provides a human-readable text format for defining database tables, columns, and relationships in a standardized way. The project functions as a relational schema parser and SQL schema generator. It transforms declarative design specifications into an abstract syntax tree for programmatic manipulation and converts these definitions into executable SQL statements across various database dialects. The system covers relational data modeling, database schema design, and arc
DBML provides a domain-specific language for database schemas along with built-in parsing, abstract syntax tree generation, and SQL code generation, though it is tailored specifically for database design rather than a general-purpose language workbench.
Eve is a domain-specific language IDE and integrated logic editor that combines a custom programming language with a dedicated editor to define application logic and state. It functions as a reactive state management system that monitors state variables and automatically triggers functional responses. The environment features an integrated runtime-editor loop that couples the language execution environment with the text editor to accelerate the development cycle. This setup enables the definition of software behavior and state transitions using an embedded domain-specific language. The proje
Eve is a domain-specific language IDE and reactive programming environment that integrates a custom language with an editor for managing application logic, though it is more focused on reactive state management than traditional parser generation.
Kaitai Struct is a framework for declarative binary specification that provides automated parser and serializer generation across multiple programming languages. It uses a portable, domain-specific language to describe the layout of binary files and network packets, converting these specifications into source code for reading and writing binary data. The system enables cross-language data processing by translating a single structural definition into native source code for languages including C++, C#, Go, Java, JavaScript, Python, and Rust. This approach allows the same binary data specificati
Kaitai Struct is a declarative DSL framework specifically designed for generating parsers and serializers for binary data structures across multiple programming languages.
| Repository | Stars | Sprache | Lizenz | Letzter Push |
|---|---|---|---|---|
| tree-sitter/tree-sitter | 23.8K | Rust | mit | |
| racket/racket | 5.2K | Racket | NOASSERTION | |
| babel/babel | 44K | TypeScript | MIT | |
| zaach/jison | 4.4K | JavaScript | — | |
| geal/nom | 10.4K | Rust | MIT | |
| sweet-js/sweet-core | 4.6K | JavaScript | BSD-2-Clause | |
| antlr/antlr4 | 18.9K | Java | BSD-3-Clause | |
| hyperjumptech/grule-rule-engine | 2.5K | Go | NOASSERTION | |
| dotnet/roslyn | 20.2K | C# | mit | |
| kach/nearley | 3.7K | JavaScript | MIT |