awesome-repositories.com
Blog
awesome-repositories.com

Descubre los mejores repositorios open-source con nuestra búsqueda potenciada por IA.

ExplorarBúsquedas curadasAlternativas open-sourceSoftware autohospedableBlogMapa del sitio
ProyectoAcerca deCómo clasificamosPrensaServidor MCP
Aviso legalPrivacidadTérminos
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
alecthomas avatar

alecthomas/participle

0
View on GitHub↗
3,869 estrellas·206 forks·Go·MIT·4 vistas

Participle

Participle is a Go parser generator and toolkit for building language frontends. It provides a declarative grammar framework that uses reflection and struct tags to map input patterns directly into typed data structures.

The library features a stateful lexical analyzer that employs state machines to handle nested or modal patterns. It includes a lexer code generator to produce optimized code, reducing runtime memory allocations and increasing throughput.

The project covers recursive descent parsing with support for union types via sealed interfaces and custom parsing logic through interface-based overrides. It also includes an EBNF grammar exporter to generate standard formal representations of a parser's logic for documentation.

The toolkit tracks token positions and range metadata to provide precise diagnostic feedback during syntax errors.

Features

  • Compiler Frontend Development - Provides the fundamental tools for building compiler frontends, including lexical analysis and syntax tree generation.
  • Recursive Descent Parsers - Implements a recursive descent parsing engine to translate input text into structured syntax trees.
  • Frontend Toolkits - Provides a set of utilities for creating language frontends with position tracking and optimized lexer generation.
  • Parser Libraries - Serves as a Go library for building recursive descent parsers that map raw text to typed data structures.
  • Input Tokenizers - Converts raw bytes into a stream of tokens using a configurable lexer or default scanner.
  • Lexical Analyzers - Provides a toolkit for converting raw bytes into token streams using state-machine-driven lexical analysis.
  • Programming Language Development - Offers a framework for designing and implementing custom programming or scripting languages.
  • Stateful Lexers - Provides stateful lexing capabilities to handle nested or modal token patterns via push-pop operations.
  • Source Position Trackings - Populates position and range metadata within the syntax tree to enable precise error reporting.
  • State-Machine Lexers - Employs a push-down automaton state machine to handle nested or modal token states during lexical analysis.
  • Typed Structure Parsing - Converts input text into strongly typed data structures based on a declarative grammar.
  • Grammar-to-Struct Mapping - Uses Go struct tags and reflection to declaratively map text patterns directly into typed data structures.
  • Struct-Tag-Driven Grammar Definitions - Implements a declarative framework that maps input patterns to objects using struct tags and reflection.
  • Position-Aware Tracking - Maintains character offsets and line numbers to provide precise diagnostic feedback for syntax errors.
  • Token Captures - Extracts matching values from the input stream and populates them into fields as strings, lists, or numbers.
  • Configuration File Parsers - Enables the creation of structured parsers for custom configuration formats that map to typed data objects.
  • Formal Grammar Specifications - Generates standard EBNF representations of a parser's logic for formal language documentation.
  • Custom Parsing Logic - Allows developers to implement specific interfaces on grammar nodes to override default capture behavior with custom logic.
  • EBNF Grammar Exporters - Generates standard EBNF representations from defined parsing logic to document language syntax.
  • Lexer Generators - Provides a generator that transforms lexer definitions into optimized Go code to improve performance.
  • Union Types - Supports union types via sealed interfaces to represent grammar alternatives within a single field.
  • Compilers and Interpreters - Library for building custom syntax parsers.

Historial de estrellas

Gráfico del historial de estrellas de alecthomas/participleGráfico del historial de estrellas de alecthomas/participle

Búsqueda con IA

Explora más repositorios increíbles

Describe lo que necesitas en lenguaje sencillo: la IA clasifica miles de proyectos open-source curados por relevancia.

Start searching with AI

Alternativas open-source a Participle

Proyectos open-source similares, clasificados según cuántas características comparten con Participle.
  • pegjs/pegjsAvatar de pegjs

    pegjs/pegjs

    4,908Ver en GitHub↗

    PegJS is a parsing expression grammar tool and JavaScript parser generator. It functions as a grammar compiler that transforms formal grammar specifications into executable JavaScript code for analyzing structured text and processing complex input strings. The system generates deterministic parsers that avoid the ambiguity of context-free grammars. It utilizes a packrat parsing model with memoization to ensure linear time complexity and employs recursive descent parsing to process input in a top-down hierarchical manner. The toolset supports the implementation of domain-specific languages an

    JavaScript
    Ver en GitHub↗4,908
  • dullabs/bhai-langAvatar de DulLabs

    DulLabs/bhai-lang

    4,100Ver en GitHub↗

    Bhai-lang is a TypeScript-based toy programming language and custom syntax interpreter. It functions as an educational language implementation designed to demonstrate core concepts of variable management, conditional logic, and execution flow. The project provides a custom command line interface and an interactive code playground for writing and testing scripts. It serves as a framework for programming language prototyping, allowing for the definition of custom syntax and execution logic. The system covers the full interpreter pipeline, including lexical analysis, recursive descent parsing,

    TypeScriptinterpreterjavascriptparser
    Ver en GitHub↗4,100
  • chai2010/go-ast-bookAvatar de chai2010

    chai2010/go-ast-book

    5,510Ver en GitHub↗

    go-ast-book is a collection of educational and technical resources focused on abstract syntax tree analysis, compiler development, and static code verification. It provides guides and manuals for parsing, traversing, and analyzing Go source code to extract semantic meaning. The project serves as a reference for building compiler frontends, covering the translation of high-level code into intermediate representations and single static assignment forms. It also provides instructions for using these techniques to develop language tooling and perform static code analysis. The resources cover a b

    Go
    Ver en GitHub↗5,510
  • antlr/antlr4Avatar de antlr

    antlr/antlr4

    18,928Ver en GitHub↗

    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

    Java
    Ver en GitHub↗18,928
Ver las 30 alternativas a Participle→

Preguntas frecuentes

¿Qué hace alecthomas/participle?

Participle is a Go parser generator and toolkit for building language frontends. It provides a declarative grammar framework that uses reflection and struct tags to map input patterns directly into typed data structures.

¿Cuáles son las características principales de alecthomas/participle?

Las características principales de alecthomas/participle son: Compiler Frontend Development, Recursive Descent Parsers, Frontend Toolkits, Parser Libraries, Input Tokenizers, Lexical Analyzers, Programming Language Development, Stateful Lexers.

¿Qué alternativas de código abierto existen para alecthomas/participle?

Las alternativas de código abierto para alecthomas/participle incluyen: pegjs/pegjs — PegJS is a parsing expression grammar tool and JavaScript parser generator. It functions as a grammar compiler that… dullabs/bhai-lang — Bhai-lang is a TypeScript-based toy programming language and custom syntax interpreter. It functions as an educational… chai2010/go-ast-book — go-ast-book is a collection of educational and technical resources focused on abstract syntax tree analysis, compiler… antlr/antlr4 — ANTLR is a grammar-based code generator and multi-language parser generator used to design and implement custom… zesterer/chumsky — Chumsky is a parser combinator library used to build high-performance parsers by composing small parsing functions… zaach/jison — Jison is a JavaScript parser generator that implements the LALR parsing algorithm. It creates tools to analyze custom…