19 dépôts
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.