awesome-repositories.com
Blog
MCP
awesome-repositories.com

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

ExplorarBúsquedas curadasAlternativas open-sourceSoftware autohospedableBlogMapa del sitio
ProyectoServidor MCPAcerca deCómo clasificamosPrensa
Aviso legalPrivacidadTérminos
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·

19 repositorios

Awesome GitHub RepositoriesFormal Grammar Parser Generators

Tools that generate parsers based on formal grammar specifications to extract structured data from text.

Distinct from Grammar-Based Parsers: Unlike Grammar-Based Parsers [f6_mt2] which are the resulting parsers, this refers to the generator tool itself.

Explore 19 awesome GitHub repositories matching software engineering & architecture · Formal Grammar Parser Generators. Refine with filters or upvote what's useful.

Awesome Formal Grammar Parser Generators GitHub Repositories

Encuentra los mejores repositorios con IA.Buscaremos los repositorios que mejor coincidan usando IA.
  • antlr/antlr4Avatar de antlr

    antlr/antlr4

    18,928Ver en GitHub↗

    ANTLR es un generador de código basado en gramática y un generador de analizadores multilingüe utilizado para diseñar e implementar lenguajes personalizados. Funciona como un kit de herramientas para transformar definiciones de lenguaje formal en código fuente ejecutable para procesar texto estructurado o archivos binarios, al tiempo que proporciona un framework para construir y recorrer automáticamente árboles de análisis jerárquicos. El proyecto se distingue por su capacidad para generar lexers y parsers en varios lenguajes de programación de destino a partir de una única definición de gramática compartida. Admite gramáticas que contienen recursión izquierda directa y utiliza predicción adaptativa para optimizar la velocidad de análisis mientras mantiene la flexibilidad. El sistema cubre una amplia gama de capacidades, incluyendo análisis léxico, verificación semántica mediante evaluación de predicados y gestión de datos jerárquicos. Proporciona herramientas para el análisis de árboles de análisis mediante consultas basadas en rutas y patrones de recorrido de visitante-oyente para desacoplar la lógica de la gramática de las acciones de la aplicación. Las utilidades de línea de comandos están disponibles para probar definiciones de gramática y lógica de depuración, y la herramienta se puede ejecutar dentro de contenedores Docker para evitar instalaciones locales.

    Generates lexer and parser source code for multiple target programming languages from a single grammar definition.

    Java
    Ver en GitHub↗18,928
  • github/semanticAvatar de github

    github/semantic

    9,041Ver en GitHub↗

    Semantic es una librería basada en Haskell y una herramienta de línea de comandos diseñada para el análisis de código fuente políglota. Funciona como un framework de análisis estático de programas y un analizador de árboles de sintaxis abstracta políglota que convierte múltiples lenguajes de programación en árboles de sintaxis estructurados basados en definiciones gramaticales. El sistema se distingue por un motor de comparación semántica de código que detecta cambios estructurales y significativos entre versiones de código en lugar de depender de diferencias textuales. Además, permite el análisis entre diferentes sintaxis de programación traduciendo lenguajes de superficie a una representación intermedia políglota unificada. El framework proporciona un amplio conjunto de capacidades para analizar lenguajes como Rust, Go, Python, Ruby, PHP, TypeScript y TSX. Cubre el análisis semántico mediante el mapeo del alcance del código, la extracción de símbolos y la generación de grafos semánticos, junto con herramientas para el análisis de patrones y la evaluación del comportamiento del programa. El conjunto de herramientas incluye utilidades de línea de comandos para estandarizar el diseño de archivos fuente de Haskell.

    Produces strongly typed abstract syntax trees by applying formal language grammar definitions to raw source text.

    Haskell
    Ver en GitHub↗9,041
  • ocaml/ocamlAvatar de ocaml

    ocaml/ocaml

    6,514Ver en GitHub↗

    OCaml is a strongly typed functional language featuring a sophisticated type system and a focus on safety and expressiveness. It provides a comprehensive compiling toolchain that transforms source code into either portable bytecode or high-performance native binaries. The project is distinguished by a shared memory parallel runtime that executes computations across multiple processor cores using domains, and an algebraic effect system for managing side effects and control flow through execution context handlers. It also includes a dedicated parser generator to automatically create lexers and

    Includes a dedicated parser generator to automatically create lexers and parsers from formal grammar specifications.

    OCamlcompilerfunctional-languageocaml
    Ver en GitHub↗6,514
  • lark-parser/larkAvatar de lark-parser

    lark-parser/lark

    5,914Ver en GitHub↗

    Lark es un kit de herramientas de análisis sintáctico (parsing) para Python utilizado para definir gramáticas y convertir texto sin formato en árboles de análisis anotados. Sirve como un generador de árboles de sintaxis abstracta y un lenguaje de definición de gramática para especificar reglas de lenguaje a través de terminales y expresiones regulares. La biblioteca proporciona dos implementaciones principales de análisis: una biblioteca de análisis Earley capaz de manejar todos los lenguajes libres de contexto, incluidos aquellos con ambigüedad y recursión a la izquierda, y una biblioteca de análisis LALR de alto rendimiento diseñada para lenguajes deterministas con bajo consumo de memoria. Más allá del análisis central, el kit de herramientas incluye capacidades para la composición de gramáticas modulares, transformación de árboles basada en reglas y seguimiento de coordenadas para posiciones de origen. También admite la serialización de gramáticas LALR en módulos de análisis independientes.

    Automatically generates hierarchical abstract syntax trees by matching input tokens against defined grammar rules.

    Pythoncykearleygrammar
    Ver en GitHub↗5,914
  • harc/ohmAvatar de harc

    harc/ohm

    5,530Ver en GitHub↗

    Ohm es un kit de herramientas de construcción de compiladores y una librería de combinadores de analizadores (parser combinators) utilizada para construir analizadores, intérpretes y compiladores. Proporciona un lenguaje de gramática formal para especificar las reglas estructurales de los formatos de datos y garantizar un análisis preciso de las cadenas de entrada. El proyecto funciona como una herramienta de depuración de análisis y un visualizador de ejecución de programas. Genera trazas de texto y visualizaciones gráficas para mostrar la lógica paso a paso utilizada durante el análisis y renderiza cambios de estado en tiempo de ejecución y jerarquías de llamadas a métodos. El kit de herramientas cubre el desarrollo de analizadores personalizados y la construcción de compiladores e intérpretes. Incluye capacidades para la visualización de lenguajes de programación, depuración de ejecución de algoritmos y definición de gramática formal.

    Enables the definition of formal grammars to create structured representations of text input.

    JavaScript
    Ver en GitHub↗5,530
  • chai2010/go-ast-bookAvatar de chai2010

    chai2010/go-ast-book

    5,510Ver en GitHub↗

    go-ast-book es una colección de recursos técnicos y educativos centrados en el análisis de árboles de sintaxis abstracta (AST), desarrollo de compiladores y verificación estática de código. Proporciona guías y manuales para analizar, recorrer y examinar código fuente en Go con el fin de extraer su significado semántico. El proyecto sirve como referencia para construir frontends de compiladores, cubriendo la traducción de código de alto nivel a representaciones intermedias y formas de asignación estática única (SSA). También proporciona instrucciones para utilizar estas técnicas en el desarrollo de herramientas de lenguaje y análisis estático de código. Los recursos cubren una amplia gama de capacidades de análisis estático, incluyendo tokenización léxica, análisis estructural de expresiones y declaraciones, y seguimiento de coordenadas para archivos fuente. También detalla procesos de análisis semántico como la resolución de identificadores, verificación de corrección de tipos y análisis de flujo de control para concurrencia y ejecución diferida.

    Translates Go language constructs such as selector expressions and slice operations into AST structures.

    Go
    Ver en GitHub↗5,510
  • ohmjs/ohmAvatar de ohmjs

    ohmjs/ohm

    5,471Ver en GitHub↗

    Ohm is a formal grammar parser generator and domain-specific language framework. It provides a system for defining custom languages to parse, validate, and extract data from input text, transforming raw strings into hierarchical abstract syntax trees based on specified formal rules. The project utilizes an Earley parsing algorithm, which allows it to support all context-free grammars, including those with left recursion and ambiguity, without requiring predefined operator precedence. It also includes a dedicated debugging toolkit for tracing and visualizing the step-by-step state transitions

    Provides a tool for defining custom languages using formal grammars to parse, validate, and extract data.

    JavaScriptcompilergrammarsjavascript
    Ver en GitHub↗5,471
  • pest-parser/pestAvatar de pest-parser

    pest-parser/pest

    5,355Ver en GitHub↗

    Pest es una librería de parsing en Rust y un generador automático de parsers que transforma definiciones de gramática formal en parsers funcionales. Se especializa en Parsing Expression Grammar (PEG) para reconocer y estructurar patrones de texto complejos, proporcionando un sistema para el parsing de gramáticas libres de contexto. La librería implementa tokenización de copia cero (zero-copy) y compilación estática de gramática para reducir la sobrecarga en tiempo de ejecución. Admite compatibilidad con runtime no-std, permitiendo que el parser sea compilado para entornos embebidos o bare-metal donde la librería estándar no está disponible. El proyecto cubre una gama de capacidades de parsing, incluyendo la extracción de pares de tokens anidados y validación de sintaxis automatizada. Se utiliza para implementar lenguajes específicos de dominio (DSL), parsing de lenguajes personalizados y evaluación de expresiones matemáticas. También proporciona informes de errores automatizados para identificar tokens inesperados o entradas faltantes.

    Automatically generates a functional parser implementation and error reporting from a defined formal grammar.

    Rust
    Ver en GitHub↗5,355
  • racket/racketAvatar de racket

    racket/racket

    5,157Ver en GitHub↗

    Racket es un lenguaje de programación de propósito general y multiparadigma de la familia Lisp, diseñado para la creación de lenguajes. Funciona como un banco de trabajo de lenguajes, proporcionando una plataforma para diseñar e implementar lenguajes de programación personalizados a través de un sistema flexible de macros y módulos. El sistema se distingue por ofrecer una suite integral para la ingeniería de semántica, permitiendo la construcción de subconjuntos de lenguajes especializados y capas educativas. Incluye herramientas para el diseño de lenguajes personalizados, como la generación de lexers y parsers, así como la capacidad de definir reglas de expansión de módulos y selección dinámica de lenguaje en tiempo de lectura. El proyecto proporciona un entorno de desarrollo integrado con un editor incorporado, depurador visual y un gestor de paquetes de software. Su superficie de capacidades se extiende a una biblioteca estándar de propósito general que cubre renderizado de gráficos 2D, procesamiento de datos binarios, integración con SQL y bases de datos deductivas, y la construcción de interfaces gráficas de usuario. El entorno admite la compilación de código fuente en archivos ejecutables independientes para su distribución.

    Produces lexers and parsers from formal grammar specifications to convert token streams into structured representations.

    Racketracket
    Ver en GitHub↗5,157
  • pegjs/pegjsAvatar de pegjs

    pegjs/pegjs

    4,908Ver en GitHub↗

    PegJS es una herramienta de gramática de expresión de análisis (parsing expression grammar) y generador de parsers para JavaScript. Funciona como un compilador de gramática que transforma especificaciones de gramática formal en código JavaScript ejecutable para analizar texto estructurado y procesar cadenas de entrada complejas. El sistema genera parsers deterministas que evitan la ambigüedad de las gramáticas libres de contexto. Utiliza un modelo de parsing packrat con memoización para asegurar una complejidad de tiempo lineal y emplea parsing de descenso recursivo para procesar la entrada de manera jerárquica de arriba hacia abajo. El conjunto de herramientas soporta la implementación de lenguajes específicos de dominio (DSL) y el desarrollo de lenguajes personalizados. Incluye capacidades para la definición recursiva de reglas gramaticales, acciones semánticas en línea para transformar texto coincidente en datos estructurados y predicados semánticos para coincidencias condicionales. El motor de generación incluye opciones de configuración para equilibrar la velocidad de ejecución del parser resultante frente al tamaño final del código de salida.

    Functions as a tool that generates executable JavaScript parsers from formal grammar specifications.

    JavaScript
    Ver en GitHub↗4,908
  • google/wuffsAvatar de google

    google/wuffs

    4,773Ver en GitHub↗

    Wuffs es un conjunto de herramientas para generar analizadores y decodificadores de memoria segura y aislados (sandboxed) a partir de especificaciones de lenguaje de dominio específico. Funciona como un compilador que transforma estas especificaciones en código ejecutable para C, Go o Rust, diseñado específicamente para decodificar formatos de archivo no confiables mientras se previenen desbordamientos de búfer y enteros. El proyecto emplea un modelo de ejecución aislado que prohíbe las llamadas al sistema y la gestión manual de la memoria para garantizar que los cálculos estén libres de efectos secundarios. Utiliza un sistema de tipos refinado y verificación de restricciones en tiempo de compilación para hacer cumplir la seguridad de la memoria, junto con aritmética saturada para evitar desbordamientos numéricos. El sistema proporciona implementaciones seguras para procesar datos estructurados, formatos de imagen y flujos comprimidos. Sus capacidades cubren la decodificación y codificación de imágenes, la descompresión de varios formatos de archivo y el cálculo de sumas de comprobación de integridad de datos. La integración se simplifica mediante la generación de bibliotecas C autónomas de un solo archivo y soporte de bibliotecas de solo cabecera.

    A feature that translates a domain-specific language into executable code for other target environments such as Go or Rust.

    Ccodecmemory-safetyparsing
    Ver en GitHub↗4,773
  • zesterer/chumskyAvatar de zesterer

    zesterer/chumsky

    4,545Ver en GitHub↗

    Chumsky es una librería de combinadores de parser utilizada para construir parsers de alto rendimiento componiendo pequeñas funciones de parsing en gramáticas complejas. Proporciona múltiples motores de parsing, incluyendo implementaciones de descenso recursivo y escalada de precedencia para resolver el orden de operaciones en expresiones matemáticas y lógicas. La librería se distingue por su parsing de texto de copia cero (zero-copy), que minimiza las asignaciones de memoria para aumentar el rendimiento, y su capacidad para ejecutarse sin una librería estándar para su uso en entornos embebidos o con recursos limitados. También cuenta con un parser de recuperación de errores que identifica entradas mal formadas y reanuda el procesamiento para informar múltiples errores de sintaxis en una sola pasada. El framework cubre una amplia gama de capacidades, incluyendo gestión de estado sensible al contexto, soporte para gramáticas recursivas e integración de patrones de expresiones regulares. Incluye herramientas para el análisis de la estructura del parser, inspección de nodos y caché de resultados para admitir backtracking y recursión a la izquierda. La librería admite el desarrollo de lenguajes personalizados, parsing de formatos de datos y herramientas de lenguaje de programación.

    Supports the development of custom parsers by defining formal grammars to derive structured representations of text.

    Rustcontext-free-grammarerrorslexing
    Ver en GitHub↗4,545
  • zaach/jisonAvatar de zaach

    zaach/jison

    4,385Ver en GitHub↗

    Jison es un generador de parsers para JavaScript que implementa el algoritmo de análisis LALR. Crea herramientas para analizar lenguajes de programación personalizados convirtiendo entradas estructuradas en tokens y árboles. El proyecto funciona como un generador compatible con Bison, aceptando gramáticas en un formato compatible con el generador de parsers Bison para producir parsers en JavaScript. Cubre los requisitos para el desarrollo de frontends de compiladores, incluyendo la implementación de lenguajes específicos de dominio (DSL) y herramientas de análisis sintáctico. Sus capacidades se extienden al análisis de lenguajes personalizados y a la generación de parsers mediante una interfaz de línea de comandos.

    Provides a tool that transforms formal grammar specifications into a functional JavaScript parser.

    JavaScript
    Ver en GitHub↗4,385
  • kach/nearleyAvatar de kach

    kach/nearley

    3,740Ver en GitHub↗

    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

    Transforms modular BNF-like language descriptions into functional parsers that handle recursive grammars.

    JavaScript
    Ver en GitHub↗3,740
  • hardmath123/nearleyAvatar de Hardmath123

    Hardmath123/nearley

    3,740Ver en GitHub↗

    Nearley is a JavaScript parser toolkit used to define context-free grammars and generate corresponding parsers. It features an EBNF grammar compiler that transforms language definitions written in extended Backus-Naur Form into executable JavaScript code, utilizing an Earley parser implementation to process any context-free grammar. The toolkit distinguishes itself by its ability to handle left-recursion and ambiguity without failing, allowing it to identify and return multiple valid derivations for a single input string. It also includes a grammar fuzzing generator to produce random strings

    Compiles grammar definitions into typed languages to provide annotations and flexibility for post-processors.

    JavaScript
    Ver en GitHub↗3,740
  • eliben/pycparserAvatar de eliben

    eliben/pycparser

    3,473Ver en GitHub↗

    pycparser is a C99 parser library that converts C source code into an abstract syntax tree consisting of Python objects. It functions as an abstract syntax tree generator, transforming preprocessed C code into a structured hierarchy for programmatic analysis and transformation. The library integrates with a C preprocessor to handle directives before parsing. It also features a stub header parser, which uses minimal mock headers to allow the parsing of C code without requiring a full system C library installation. The project provides tools for static code analysis, C program analysis, and so

    Implements a C99 parsing engine generated from a formal grammar using the Python Lex-Yacc (PLY) framework.

    Python
    Ver en GitHub↗3,473
  • hyperjumptech/grule-rule-engineAvatar de hyperjumptech

    hyperjumptech/grule-rule-engine

    2,505Ver en GitHub↗

    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

    Generates parsers from formal grammar definitions to translate rule syntax into executable logic.

    Gogolanghacktoberfesthacktoberfest2021
    Ver en GitHub↗2,505
  • tabatkins/railroad-diagramsAvatar de tabatkins

    tabatkins/railroad-diagrams

    1,744Ver en GitHub↗

    Railroad-diagrams es una utilidad para generar representaciones visuales de gramáticas formales y estructuras de lenguaje. Funciona como una biblioteca que transforma sistemas de notación densos, como la forma de Backus-Naur o expresiones regulares, en diagramas de flujo legibles. La herramienta utiliza un motor de diseño basado en coordenadas y composición de componentes recursiva para construir diagramas como árboles jerárquicos. Al separar la lógica de cálculo geométrico de la capa de salida, admite el renderizado a través de gráficos vectoriales escalables (SVG) o texto Unicode, asegurando que los diagramas permanezcan claros y escalables en diferentes entornos. Los usuarios pueden ajustar parámetros visuales incluyendo el espaciado de línea, la curvatura y la alineación de elementos para adaptarse a requisitos de documentación específicos. Los diagramas generados pueden exportarse como archivos de imagen independientes o marcado sin formato para su integración en manuales técnicos y especificaciones basadas en web.

    Provides a utility for replacing dense BNF notation or regular expressions with clear, readable flowcharts.

    Python
    Ver en GitHub↗1,744
  • blazegraph/databaseAvatar de blazegraph

    blazegraph/database

    985Ver en GitHub↗

    This project is a high-performance semantic graph database engine designed for storing and querying massive RDF datasets. It functions as a specialized platform for managing linked data and complex relationship models, utilizing standard semantic web protocols to integrate and analyze distributed information sources. The system distinguishes itself through its use of B-Tree indexing to enable rapid traversal of relationships within large-scale datasets and its support for the Triple Pattern Fragments protocol to facilitate scalable web-based access. It provides automated tools for transformin

    Transforms formal grammar definitions into executable source code to enable the parsing and processing of semantic queries.

    Javablazegraphgraph-databaserdf
    Ver en GitHub↗985
  1. Home
  2. Software Engineering & Architecture
  3. Trees
  4. Syntax Tree Construction
  5. Formal Grammar Parser Generators

Explorar subetiquetas

  • AST GeneratorsTools that generate strongly typed abstract syntax trees based on formal grammar specifications. **Distinct from Formal Grammar Parser Generators:** Focuses on the resulting AST structure for analysis rather than general parser generation logic.
  • Bison-Compatible GeneratorsParser generators that accept grammars in the Bison format. **Distinct from Formal Grammar Parser Generators:** Specifically targets compatibility with the Bison grammar format, unlike general formal grammar generators.
  • Compiler Front-End GenerationUsing parser generators to build the initial stages of compilers, including lexing and parsing. **Distinct from Formal Grammar Parser Generators:** Distinct from Formal Grammar Parser Generators: focuses on the application of the generator to create compiler front-ends.
  • Custom Parser DevelopmentDefining formal grammars to match input strings and derive structured representations of text. **Distinct from Formal Grammar Parser Generators:** Focuses on the process of developing the parser logic using the generator, rather than just the generator tool itself.
  • LALR ParsersParsers generated from grammars using look-ahead left-to-right shift-reduce algorithms. **Distinct from Formal Grammar Parser Generators:** Specifically refers to the resulting LALR parser implementation generated by PLY, rather than the generator tool itself
  • Multi-Language Parser GenerationThe capability of a generator to target multiple different programming languages for parser output. **Distinct from Formal Grammar Parser Generators:** Distinct from Formal Grammar Parser Generators: emphasizes the multi-target output capability.
  • Multi-Target Code GenerationGenerating parser source code for multiple target programming languages from a single grammar. **Distinct from Formal Grammar Parser Generators:** Distinct from Formal Grammar Parser Generators: specifically targets the ability to produce code for multiple target languages.
  • Typed Code GenerationGeneration of type-annotated parser code from formal grammar specifications. **Distinct from Formal Grammar Parser Generators:** Distinct from general Formal Grammar Parser Generators by focusing on the type-safety of the generated output code.