awesome-repositories.comCatégoriesBlog
MCP
awesome-repositories.com

Découvrez les meilleurs dépôts open-source grâce à notre recherche par IA.

ExplorerRecherches sélectionnéesAlternatives open sourceLogiciels auto-hébergésBlogPlan du site
ProjetServeur MCPÀ proposNotre méthodologiePresse
Mentions légalesConfidentialitéConditions d'utilisation
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·

19 dépôts

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

Trouvez les meilleurs dépôts grâce à l'IA.Nous recherchons les dépôts les plus pertinents grâce à l'IA.
  • antlr/antlr4Avatar de antlr

    antlr/antlr4

    18,928Voir sur GitHub↗

    ANTLR est un générateur de code basé sur la grammaire et un générateur d'analyseur multi-langage utilisé pour concevoir et implémenter des langages personnalisés. Il fonctionne comme une boîte à outils pour transformer des définitions de langage formel en code source exécutable pour traiter du texte structuré ou des fichiers binaires, tout en fournissant un framework pour construire et parcourir automatiquement des arbres d'analyse hiérarchiques. Le projet se distingue par sa capacité à générer des lexers et des analyseurs dans divers langages de programmation cibles à partir d'une seule définition de grammaire partagée. Il prend en charge les grammaires contenant une récursion à gauche directe et utilise une prédiction adaptative pour optimiser la vitesse d'analyse tout en maintenant la flexibilité. Le système couvre un large éventail de capacités, notamment l'analyse lexicale, la vérification sémantique via l'évaluation de prédicats et la gestion de données hiérarchiques. Il fournit des outils pour l'analyse des arbres d'analyse via des requêtes basées sur le chemin et des modèles de parcours visiteur-auditeur pour découpler la logique de grammaire des actions de l'application. Des utilitaires en ligne de commande sont disponibles pour tester les définitions de grammaire et déboguer la logique, et l'outil peut être exécuté dans des conteneurs Docker pour éviter les installations locales.

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

    Java
    Voir sur GitHub↗18,928
  • github/semanticAvatar de github

    github/semantic

    9,041Voir sur GitHub↗

    Semantic est une bibliothèque basée sur Haskell et un outil en ligne de commande conçu pour l'analyse de code source polyglotte. Il fonctionne comme un framework d'analyse statique et un parseur d'arbres de syntaxe abstraite (AST) capable de convertir plusieurs langages de programmation en arbres structurés basés sur des définitions de grammaire. Le système se distingue par son moteur de comparaison sémantique qui détecte les changements structurels et fonctionnels entre les versions de code, plutôt que de se limiter aux différences textuelles. Il permet une analyse transversale en traduisant les langages sources en une représentation intermédiaire polyglotte unifiée. Le framework offre une large gamme de capacités pour parser des langages comme Rust, Go, Python, Ruby, PHP, TypeScript et TSX. Il couvre l'analyse sémantique via le mappage de portée, l'extraction de symboles, la génération de graphes sémantiques, ainsi que des outils d'analyse de motifs et d'évaluation du comportement des programmes. L'ensemble d'outils inclut des utilitaires en ligne de commande pour standardiser la mise en page des fichiers sources Haskell.

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

    Haskell
    Voir sur GitHub↗9,041
  • ocaml/ocamlAvatar de ocaml

    ocaml/ocaml

    6,514Voir sur 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
    Voir sur GitHub↗6,514
  • lark-parser/larkAvatar de lark-parser

    lark-parser/lark

    5,914Voir sur GitHub↗

    Lark est un toolkit d'analyse syntaxique Python utilisé pour définir des grammaires et convertir du texte brut en arbres d'analyse annotés. Il sert de générateur d'arbre syntaxique abstrait et de langage de définition de grammaire pour spécifier des règles de langage via des terminaux et des expressions régulières. La bibliothèque fournit deux implémentations d'analyse principales : une bibliothèque d'analyse Earley capable de gérer tous les langages non contextuels, y compris ceux avec ambiguïté et récursion à gauche, et une bibliothèque d'analyse LALR haute performance conçue pour les langages déterministes avec une faible surcharge mémoire. Au-delà de l'analyse de base, le toolkit inclut des capacités pour la composition de grammaire modulaire, la transformation d'arbre basée sur des règles et le suivi des coordonnées pour les positions sources. Il prend également en charge la sérialisation des grammaires LALR en modules d'analyse autonomes.

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

    Pythoncykearleygrammar
    Voir sur GitHub↗5,914
  • harc/ohmAvatar de harc

    harc/ohm

    5,530Voir sur GitHub↗

    Ohm est une boîte à outils de construction de compilateurs et une bibliothèque de combinateurs d'analyseurs syntaxiques utilisée pour créer des analyseurs, des interpréteurs et des compilateurs. Elle fournit un langage de grammaire formelle pour spécifier les règles structurelles des formats de données afin d'assurer une analyse précise des chaînes d'entrée. Le projet fonctionne comme un outil de débogage d'analyse syntaxique et un visualiseur d'exécution de programme. Il génère des traces textuelles et des visualisations graphiques pour montrer la logique étape par étape utilisée lors de l'analyse et rend les changements d'état à l'exécution ainsi que les hiérarchies d'appels de méthodes. La boîte à outils couvre le développement d'analyseurs personnalisés et la construction de compilateurs et d'interpréteurs. Elle inclut des capacités pour la visualisation de langages de programmation, le débogage d'exécution d'algorithmes et la définition de grammaires formelles.

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

    JavaScript
    Voir sur GitHub↗5,530
  • chai2010/go-ast-bookAvatar de chai2010

    chai2010/go-ast-book

    5,510Voir sur GitHub↗

    go-ast-book est une collection de ressources éducatives et techniques axées sur l'analyse des arbres de syntaxe abstraite (AST), le développement de compilateurs et la vérification de code statique. Il fournit des guides et manuels pour parser, parcourir et analyser le code source Go afin d'en extraire la signification sémantique. Le projet sert de référence pour construire des frontends de compilateurs, couvrant la traduction de code de haut niveau en représentations intermédiaires et en formes d'assignation statique unique (SSA). Il fournit également des instructions pour utiliser ces techniques afin de développer des outils de langage et effectuer de l'analyse de code statique. Les ressources couvrent un large éventail de capacités d'analyse statique, incluant la tokenisation lexicale, le parsing structurel des expressions et déclarations, et le suivi des coordonnées pour les fichiers sources. Il détaille également les processus d'analyse sémantique tels que la résolution d'identifiants, la vérification de la correction des types et l'analyse du flux de contrôle pour la concurrence et l'exécution différée.

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

    Go
    Voir sur GitHub↗5,510
  • ohmjs/ohmAvatar de ohmjs

    ohmjs/ohm

    5,471Voir sur 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
    Voir sur GitHub↗5,471
  • pest-parser/pestAvatar de pest-parser

    pest-parser/pest

    5,355Voir sur GitHub↗

    Pest est une bibliothèque de parsing Rust et un générateur de parser automatique qui transforme des définitions de grammaire formelles en parsers fonctionnels. Il se spécialise dans les Parsing Expression Grammars (PEG) pour reconnaître et structurer des motifs textuels complexes, fournissant un système pour le parsing de grammaires non contextuelles. La bibliothèque implémente une tokenisation sans copie (zero-copy) et une compilation de grammaire statique pour réduire la surcharge à l'exécution. Elle supporte la compatibilité no-std, permettant au parser d'être compilé pour des environnements embarqués ou bare-metal où la bibliothèque standard est indisponible. Le projet couvre une gamme de capacités de parsing, incluant l'extraction de paires de tokens imbriqués et la validation syntaxique automatisée. Il est utilisé pour implémenter des langages dédiés (DSL), le parsing de langages personnalisés et l'évaluation d'expressions mathématiques. Il fournit également des rapports d'erreurs automatisés pour identifier les tokens inattendus ou les entrées manquantes.

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

    Rust
    Voir sur GitHub↗5,355
  • racket/racketAvatar de racket

    racket/racket

    5,157Voir sur GitHub↗

    Racket est un langage de programmation généraliste multi-paradigme de la famille Lisp, conçu pour la création de langages. Il fonctionne comme un atelier de langage, fournissant une plateforme pour concevoir et implémenter des langages de programmation personnalisés via un système flexible de macros et de modules. Le système se distingue en offrant une suite complète pour l'ingénierie sémantique, permettant la construction de sous-ensembles de langages spécialisés et de couches éducatives. Il inclut des outils pour la conception de langages personnalisés, tels que la génération de lexer et de parser, ainsi que la capacité de définir des règles d'expansion de module et une sélection de langage dynamique au moment de la lecture. Le projet fournit un environnement de développement intégré avec un éditeur intégré, un débogueur visuel et un gestionnaire de paquets logiciels. Sa surface de capacités s'étend à une bibliothèque standard généraliste couvrant le rendu graphique 2D, le traitement de données binaires, l'intégration SQL et de bases de données déductives, et la construction d'interfaces utilisateur graphiques. L'environnement prend en charge la compilation du code source en fichiers exécutables autonomes pour la distribution.

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

    Racketracket
    Voir sur GitHub↗5,157
  • pegjs/pegjsAvatar de pegjs

    pegjs/pegjs

    4,908Voir sur GitHub↗

    PegJS est un outil de grammaire d'expression d'analyse et un générateur d'analyseur JavaScript. Il fonctionne comme un compilateur de grammaire qui transforme les spécifications de grammaire formelle en code JavaScript exécutable pour analyser du texte structuré et traiter des chaînes d'entrée complexes. Le système génère des analyseurs déterministes qui évitent l'ambiguïté des grammaires non contextuelles. Il utilise un modèle d'analyse packrat avec mémoïsation pour garantir une complexité temporelle linéaire et emploie une analyse par descente récursive pour traiter l'entrée de manière hiérarchique descendante. La boîte à outils prend en charge l'implémentation de langages spécifiques au domaine et le développement de langages personnalisés. Elle inclut des capacités pour la définition de règles de grammaire récursives, des actions sémantiques en ligne pour transformer le texte correspondant en données structurées, et des prédicats sémantiques pour la correspondance conditionnelle. Le moteur de génération inclut des options de configuration pour équilibrer la vitesse d'exécution de l'analyseur résultant par rapport à la taille finale du code de sortie.

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

    JavaScript
    Voir sur GitHub↗4,908
  • google/wuffsAvatar de google

    google/wuffs

    4,773Voir sur GitHub↗

    Wuffs est une boîte à outils pour générer des parseurs et décodeurs sécurisés en mémoire et sandboxés à partir de spécifications de langage de domaine. Il fonctionne comme un compilateur qui transforme ces spécifications en code exécutable pour C, Go ou Rust, spécifiquement conçu pour décoder des formats de fichiers non fiables tout en empêchant les dépassements de tampon et d'entier. Le projet emploie un modèle d'exécution sandboxé qui interdit les appels système et la gestion manuelle de la mémoire pour assurer que les calculs sont sans effets de bord. Il utilise un système de types raffiné et une vérification des contraintes à la compilation pour appliquer la sécurité mémoire, aux côtés d'une arithmétique saturante pour empêcher les dépassements numériques. Le système fournit des implémentations sécurisées pour traiter des données structurées, des formats d'image et des flux compressés. Ses capacités couvrent le décodage et l'encodage d'images, la décompression de divers formats de fichiers et le calcul de checksums d'intégrité des données. L'intégration est simplifiée via la génération de bibliothèques C autonomes en fichier unique et la prise en charge de bibliothèques header-only.

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

    Ccodecmemory-safetyparsing
    Voir sur GitHub↗4,773
  • zesterer/chumskyAvatar de zesterer

    zesterer/chumsky

    4,545Voir sur GitHub↗

    Chumsky is a parser combinator library used to build high-performance parsers by composing small parsing functions into complex grammars. It provides multiple parsing engines, including recursive descent and precedence-climbing implementations for resolving the order of operations in mathematical and logical expressions. The library is distinguished by its zero-copy text parsing, which minimizes memory allocations to increase throughput, and its ability to run without a standard library for use in embedded or resource-constrained environments. It also features an error-recovering parser that

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

    Rustcontext-free-grammarerrorslexing
    Voir sur GitHub↗4,545
  • zaach/jisonAvatar de zaach

    zaach/jison

    4,385Voir sur GitHub↗

    Jison est un générateur d'analyseur syntaxique (parser generator) JavaScript qui implémente l'algorithme d'analyse LALR. Il crée des outils pour analyser des langages de programmation personnalisés en convertissant des entrées structurées en jetons et en arbres. Le projet fonctionne comme un générateur compatible avec Bison, acceptant des grammaires dans un format compatible avec le générateur d'analyseur Bison pour produire des analyseurs JavaScript. Il couvre les besoins du développement de frontend de compilateur, y compris l'implémentation de langages dédiés (DSL) et d'outils d'analyse syntaxique. Ses capacités s'étendent à l'analyse de langages personnalisés et à la génération d'analyseurs via une interface en ligne de commande.

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

    JavaScript
    Voir sur GitHub↗4,385
  • kach/nearleyAvatar de kach

    kach/nearley

    3,740Voir sur 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
    Voir sur GitHub↗3,740
  • hardmath123/nearleyAvatar de Hardmath123

    Hardmath123/nearley

    3,740Voir sur 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
    Voir sur GitHub↗3,740
  • eliben/pycparserAvatar de eliben

    eliben/pycparser

    3,473Voir sur 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
    Voir sur GitHub↗3,473
  • hyperjumptech/grule-rule-engineAvatar de hyperjumptech

    hyperjumptech/grule-rule-engine

    2,505Voir sur 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
    Voir sur GitHub↗2,505
  • tabatkins/railroad-diagramsAvatar de tabatkins

    tabatkins/railroad-diagrams

    1,744Voir sur GitHub↗

    Railroad-diagrams est un utilitaire pour générer des représentations visuelles de grammaires formelles et de structures linguistiques. Il fonctionne comme une bibliothèque qui transforme des systèmes de notation denses, tels que la forme de Backus-Naur ou les expressions régulières, en organigrammes lisibles. L'outil utilise un moteur de mise en page basé sur les coordonnées et une composition de composants récursive pour construire des diagrammes en tant qu'arbres hiérarchiques. En séparant la logique de calcul géométrique de la couche de sortie, il prend en charge le rendu via des graphiques vectoriels évolutifs (SVG) ou du texte Unicode, garantissant que les diagrammes restent clairs et évolutifs à travers différents environnements. Les utilisateurs peuvent ajuster les paramètres visuels, y compris l'espacement des lignes, la courbure et l'alignement des éléments pour répondre aux exigences de documentation spécifiques. Les diagrammes générés peuvent être exportés sous forme de fichiers image autonomes ou de balisage brut pour une intégration dans des manuels techniques et des spécifications basées sur le web.

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

    Python
    Voir sur GitHub↗1,744
  • blazegraph/databaseAvatar de blazegraph

    blazegraph/database

    985Voir sur 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
    Voir sur GitHub↗985
  1. Home
  2. Software Engineering & Architecture
  3. Trees
  4. Syntax Tree Construction
  5. Formal Grammar Parser Generators

Explorer les sous-tags

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