19 Repos
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 ist ein grammatikbasierter Codegenerator und Parser-Generator für mehrere Sprachen, der zum Entwerfen und Implementieren benutzerdefinierter Sprachen verwendet wird. Er fungiert als Toolkit zur Transformation formaler Sprachdefinitionen in ausführbaren Quellcode für die Verarbeitung strukturierter Text- oder Binärdateien, während er gleichzeitig ein Framework für die automatische Konstruktion und Durchquerung hierarchischer Parse-Bäume bereitstellt. Das Projekt zeichnet sich durch seine Fähigkeit aus, Lexer und Parser in verschiedenen Zielprogrammiersprachen aus einer einzigen gemeinsamen Grammatikdefinition zu generieren. Es unterstützt Grammatiken, die direkte Linksrekursion enthalten, und nutzt adaptive Vorhersagen, um die Parsing-Geschwindigkeit zu optimieren und gleichzeitig die Flexibilität zu wahren. Das System deckt ein breites Spektrum an Fähigkeiten ab, einschließlich lexikalischer Analyse, semantischer Prüfung durch Prädikatsauswertung und hierarchischem Datenmanagement. Es bietet Tools für die Analyse von Parse-Bäumen durch pfadbasierte Abfragen und Visitor-Listener-Durchquerungsmuster, um die Grammatiklogik von Anwendungsaktionen zu entkoppeln. Befehlszeilen-Dienstprogramme sind für das Testen von Grammatikdefinitionen und das Debuggen von Logik verfügbar, und das Tool kann in Docker-Containern ausgeführt werden, um lokale Installationen zu vermeiden.
Generates lexer and parser source code for multiple target programming languages from a single grammar definition.
Semantic ist eine auf Haskell basierende Bibliothek und ein Kommandozeilen-Tool für die polyglotte Quellcode-Analyse. Es fungiert als Framework für statische Programmanalyse und als polyglotter Parser für abstrakte Syntaxbäume, der verschiedene Programmiersprachen in strukturierte Syntaxbäume auf Basis von Grammatikdefinitionen umwandelt. Das System zeichnet sich durch eine semantische Code-Vergleichs-Engine aus, die strukturelle und inhaltliche Änderungen zwischen Code-Versionen erkennt, anstatt sich auf rein textuelle Unterschiede zu verlassen. Es ermöglicht zudem die Analyse über verschiedene Programmiersyntaxen hinweg, indem es Oberflächensprachen in eine einheitliche, polyglotte Zwischenrepräsentation übersetzt. Das Framework bietet eine breite Palette an Funktionen für das Parsen von Sprachen wie Rust, Go, Python, Ruby, PHP, TypeScript und TSX. Es deckt die semantische Analyse durch Code-Scope-Mapping, Extraktion von Symbolen und die Generierung semantischer Graphen ab, ergänzt durch Werkzeuge zur Musteranalyse und Bewertung des Programmverhaltens. Das Toolset enthält Kommandozeilen-Dienstprogramme zur Standardisierung von Haskell-Quellcodedateien.
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 ist ein Python-Parsing-Toolkit, das zum Definieren von Grammatiken und zum Konvertieren von Rohtext in annotierte Parse-Trees verwendet wird. Es dient als Abstract-Syntax-Tree-Generator und als Grammatik-Definitionssprache zur Spezifizierung von Sprachregeln durch Terminals und reguläre Ausdrücke. Die Bibliothek bietet zwei primäre Parsing-Implementierungen: eine Earley-Parsing-Bibliothek, die alle kontextfreien Sprachen verarbeiten kann (einschließlich solcher mit Mehrdeutigkeit und Linksrekursion), und eine performante LALR-Parsing-Bibliothek für deterministische Sprachen mit geringem Speicherbedarf. Über das reine Parsing hinaus enthält das Toolkit Funktionen für die modulare Grammatikkomposition, regelbasierte Baumtransformation und Koordinatenverfolgung für Quellpositionen. Es unterstützt zudem die Serialisierung von LALR-Grammatiken in eigenständige Parser-Module.
Automatically generates hierarchical abstract syntax trees by matching input tokens against defined grammar rules.
Ohm ist ein Toolkit für den Compilerbau und eine Parser-Kombinator-Bibliothek zum Erstellen von Parsern, Interpretern und Compilern. Es bietet eine formale Grammatiksprache zur Spezifikation der strukturellen Regeln von Datenformaten, um ein präzises Parsen von Eingabe-Strings zu gewährleisten. Das Projekt fungiert als Debugging-Tool für das Parsen und als Visualisierungstool für die Programmausführung. Es generiert Text-Traces und grafische Visualisierungen, um die schrittweise Logik während des Parsens aufzuzeigen, und rendert Laufzeitzustandsänderungen sowie Hierarchien von Methodenaufrufen. Das Toolkit deckt die Entwicklung benutzerdefinierter Parser sowie die Konstruktion von Compilern und Interpretern ab. Es umfasst Funktionen für die Visualisierung von Programmiersprachen, das Debugging von Algorithmus-Ausführungen und die Definition formaler Grammatiken.
Enables the definition of formal grammars to create structured representations of text input.
go-ast-book ist eine Sammlung technischer Bildungsressourcen zur Analyse abstrakter Syntaxbäume (AST), Compiler-Entwicklung und statischer Code-Verifizierung. Es bietet Anleitungen und Handbücher zum Parsen, Traversieren und Analysieren von Go-Quellcode, um semantische Informationen zu extrahieren. Das Projekt dient als Referenz für den Bau von Compiler-Frontends und deckt die Übersetzung von High-Level-Code in Zwischenrepräsentationen und Single Static Assignment (SSA) Formen ab. Es bietet zudem Anleitungen zur Nutzung dieser Techniken für die Entwicklung von Sprach-Tooling und statischer Code-Analyse. Die Ressourcen decken ein breites Spektrum an statischen Analysefähigkeiten ab, einschließlich lexikalischer Tokenisierung, strukturellem Parsen von Ausdrücken und Deklarationen sowie Koordinaten-Tracking für Quelldateien. Zudem werden semantische Analyseprozesse wie Identifier-Auflösung, Typprüfung und Kontrollflussanalyse für Nebenläufigkeit und Deferred Execution detailliert beschrieben.
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 ist eine Rust-Parsing-Bibliothek und ein automatischer Parser-Generator, der formale Grammatikdefinitionen in funktionale Parser umwandelt. Er ist auf Parsing Expression Grammars (PEG) spezialisiert, um komplexe Textmuster zu erkennen und zu strukturieren, und bietet ein System für kontextfreies Grammatik-Parsing. Die Bibliothek implementiert Zero-Copy-Tokenisierung und statische Grammatik-Kompilierung, um den Laufzeit-Overhead zu reduzieren. Sie unterstützt no-std-Laufzeitkompatibilität, wodurch der Parser für eingebettete oder Bare-Metal-Umgebungen kompiliert werden kann, in denen keine Standardbibliothek verfügbar ist. Das Projekt deckt eine Reihe von Parsing-Funktionen ab, einschließlich der Extraktion verschachtelter Token-Paare und automatisierter Syntax-Validierung. Es wird für die Implementierung domänenspezifischer Sprachen (DSLs), benutzerdefinierter Sprach-Parser und die Auswertung mathematischer Ausdrücke verwendet. Zudem bietet es automatisierte Fehlerberichte zur Identifizierung unerwarteter Token oder fehlender Eingaben.
Automatically generates a functional parser implementation and error reporting from a defined formal grammar.
Racket ist eine Mehrzweck-Programmiersprache mit mehreren Paradigmen aus der Lisp-Familie, die für die Sprachschöpfung entwickelt wurde. Sie fungiert als Sprach-Workbench und bietet eine Plattform zum Entwerfen und Implementieren benutzerdefinierter Programmiersprachen durch ein flexibles System aus Makros und Modulen. Das System zeichnet sich durch eine umfassende Suite für Semantik-Engineering aus, die den Aufbau spezialisierter Sprach-Subsets und Bildungsschichten ermöglicht. Es enthält Tools für das Design benutzerdefinierter Sprachen, wie Lexer- und Parser-Generierung, sowie die Fähigkeit, Modul-Erweiterungsregeln und dynamische Sprachauswahl zur Lesezeit zu definieren. Das Projekt bietet eine integrierte Entwicklungsumgebung mit eingebautem Editor, visuellem Debugger und einem Software-Paketmanager. Die Funktionspalette erstreckt sich auf eine Standardbibliothek für allgemeine Zwecke, die 2D-Grafik-Rendering, Binärdatenverarbeitung, SQL- und deduktive Datenbankintegration sowie den Bau grafischer Benutzeroberflächen abdeckt. Die Umgebung unterstützt das Kompilieren von Quellcode in eigenständige ausführbare Dateien für die Distribution.
Produces lexers and parsers from formal grammar specifications to convert token streams into structured representations.
PegJS ist ein Parsing-Expression-Grammar-Tool und ein JavaScript-Parser-Generator. Es fungiert als Grammatik-Compiler, der formale Grammatikspezifikationen in ausführbaren JavaScript-Code zur Analyse strukturierter Texte und zur Verarbeitung komplexer Eingabezeichenfolgen umwandelt. Das System generiert deterministische Parser, die die Mehrdeutigkeit kontextfreier Grammatiken vermeiden. Es nutzt ein Packrat-Parsing-Modell mit Memoization, um lineare Zeitkomplexität sicherzustellen, und verwendet rekursives Abstieg-Parsing, um Eingaben in einer Top-Down-hierarchischen Weise zu verarbeiten. Das Toolset unterstützt die Implementierung domänenspezifischer Sprachen und die Entwicklung benutzerdefinierter Sprachen. Es enthält Fähigkeiten für rekursive Grammatikregeldefinitionen, Inline-semantische Aktionen zur Transformation von gematchtem Text in strukturierte Daten und semantische Prädikate für bedingtes Matching. Die Generierungs-Engine enthält Konfigurationsoptionen, um die Ausführungsgeschwindigkeit des resultierenden Parsers gegen die finale Ausgabecodegröße abzuwägen.
Functions as a tool that generates executable JavaScript parsers from formal grammar specifications.
Wuffs is a toolset for generating memory-safe, sandboxed parsers and decoders from domain-specific language specifications. It functions as a compiler that transforms these specifications into executable code for C, Go, or Rust, specifically designed to decode untrusted file formats while preventing buffer and integer overflows. The project employs a sandboxed execution model that prohibits system calls and manual memory management to ensure computations are side-effect free. It utilizes a refined type system and compile-time constraint verification to enforce memory safety, alongside saturat
A feature that translates a domain-specific language into executable code for other target environments such as Go or Rust.
Chumsky ist eine Parser-Kombinator-Bibliothek, die verwendet wird, um Hochleistungs-Parser durch die Komposition kleiner Parsing-Funktionen zu komplexen Grammatiken aufzubauen. Sie bietet mehrere Parsing-Engines, einschließlich rekursiver Abstieg- und Precedence-Climbing-Implementierungen zur Auflösung der Reihenfolge von Operationen in mathematischen und logischen Ausdrücken. Die Bibliothek zeichnet sich durch ihr Zero-Copy-Text-Parsing aus, das Speicherallokationen minimiert, um den Durchsatz zu erhöhen, sowie durch ihre Fähigkeit, ohne Standardbibliothek für den Einsatz in eingebetteten oder ressourcenbeschränkten Umgebungen zu laufen. Sie verfügt zudem über einen fehlerkorrigierenden Parser, der fehlerhafte Eingaben identifiziert und die Verarbeitung fortsetzt, um mehrere Syntaxfehler in einem einzigen Durchgang zu melden. Das Framework deckt ein breites Spektrum an Funktionen ab, einschließlich kontextsensitivem Zustandsmanagement, Unterstützung für rekursive Grammatiken und die Integration von Mustern regulärer Ausdrücke. Es enthält Tools für die Parser-Strukturanalyse, Knoteninspektion und Result-Caching zur Unterstützung von Backtracking und Linksrekursion. Die Bibliothek unterstützt die Entwicklung benutzerdefinierter Sprachen, das Parsen von Datenformaten und Programmiersprachen-Tooling.
Supports the development of custom parsers by defining formal grammars to derive structured representations of text.
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
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 ist ein Utility zur Generierung visueller Repräsentationen formaler Grammatiken und Sprachstrukturen. Es fungiert als Bibliothek, die dichte Notationssysteme, wie Backus-Naur-Form oder reguläre Ausdrücke, in lesbare Flussdiagramme umwandelt. Das Tool nutzt eine koordinatenbasierte Layout-Engine und rekursive Komponentenkomposition, um Diagramme als hierarchische Bäume zu konstruieren. Durch die Trennung der geometrischen Berechnungslogik von der Ausgabeschicht unterstützt es das Rendering durch Scalable Vector Graphics (SVG) oder Unicode-Text, wodurch sichergestellt wird, dass Diagramme über verschiedene Umgebungen hinweg klar und skalierbar bleiben. Benutzer können visuelle Parameter wie Zeilenabstand, Krümmung und Elementausrichtung anpassen, um spezifische Dokumentationsanforderungen zu erfüllen. Die generierten Diagramme können als eigenständige Bilddateien oder Roh-Markup für die Integration in technische Handbücher und webbasierte Spezifikationen exportiert werden.
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.