17 repositorios
Identifying code fragments using a combination of literals, regular expressions, and flexible AST bindings.
Distinct from Text Pattern Matching: Distinct from simple text search or binary matching; it operates on the structure of source code.
Explore 17 awesome GitHub repositories matching programming languages & runtimes · Structural Pattern Matching. Refine with filters or upvote what's useful.
xi-editor is a high-performance text editor core written in Rust. It employs a client-server architecture that separates the backend editor logic from the user interface, allowing diverse frontends to communicate with the core via a standardized protocol. The project is distinguished by its use of rope-based text buffers for efficient manipulation of large documents and a collaborative engine powered by conflict-free replicated data types to synchronize concurrent edits. It further features an extensible plugin system that integrates external binaries and third-party tools through JSON-based
Employs non-commutative monoids to track nesting balance for fast identification of matching parentheses and brackets.
Reason is a strongly typed functional language and multi-target compiler designed to produce either JavaScript for web environments or native machine code for operating systems. It serves as an OCaml-compatible language that shares an abstract syntax tree with OCaml, providing a practical syntax for the OCaml ecosystem. The project functions as a type-safe frontend language, incorporating JSX support to build user interfaces through structural elements that translate into type-safe function calls. It enables deep integration with the JavaScript ecosystem, allowing the use of existing librarie
Ships powerful structural pattern matching to execute conditional logic based on data shapes.
emmet-vim is a plugin for Vim that functions as a markup automation tool and code expander. It allows for the rapid generation of HTML and CSS structures by expanding shorthand text expressions into full code elements. The tool provides a set of shortcuts for wrapping, balancing, and manipulating tags. It includes a text object extension that enables navigation and editing commands for jumping between nested element boundaries. The project covers a range of capabilities for frontend code refactoring and document hierarchy restructuring. These include tag wrapping, element removal, attribute
Enables moving the cursor across element boundaries to navigate and edit nested structures quickly.
attrs is a Python library that automatically generates initialization, representation, equality, hashing, and ordering methods from declarative class attribute definitions. At its core, it provides a class decorator metaprogramming framework that intercepts class creation to rewrite the class body, producing dunder methods without manual boilerplate. The library includes a comprehensive attribute validation toolkit with built-in validators for type checks, range constraints, regex matching, length limits, and logical composition of validation rules. The library distinguishes itself through it
Generates match arguments to enable structural pattern matching on instances in Python 3.10+.
This is a TC39 proposal to add declarative pattern matching syntax to the ECMAScript language. It introduces a match expression that allows developers to inspect and branch on data structures using patterns with destructuring, guards, and logical combinators. The proposal defines a custom matcher protocol via a well-known symbol, enabling objects to implement user-defined matching logic with arbitrary extraction and decomposition. The proposal supports matching against literal primitives using SameValue equality with special handling for signed zero and NaN, as well as relational comparison
Extends language grammar with a match expression that destructures values against nested patterns declaratively.
Scala.js es un compilador y cadena de herramientas de lenguaje multiplataforma que transforma código fuente de Scala en JavaScript o WebAssembly. Funciona como una herramienta tipada estáticamente para el ecosistema JavaScript, permitiendo el desarrollo de aplicaciones para navegadores web y entornos Node.js. El proyecto sirve como framework de interoperabilidad con JavaScript, permitiendo la creación de fachadas y bindings tipados de forma segura para interactuar con librerías externas y objetos globales. Proporciona mecanismos para la invocación de JavaScript tanto estática como dinámica, incluyendo la generación de bindings de TypeScript y la capacidad de exportar lógica interna para su uso en código JavaScript externo. La cadena de herramientas incluye una herramienta de construcción frontend para empaquetado de producción y optimización de salida, incluyendo eliminación de código muerto y división de módulos. Cubre una amplia superficie de capacidades, incluyendo verificación de tipos de elementos DOM para desarrollo de UI, intercambio de código multiplataforma para desarrollo full-stack y varios frameworks de pruebas para verificar artefactos de construcción optimizados. Los scripts compilados pueden ejecutarse directamente dentro de un entorno de línea de comandos utilizando un intérprete de JavaScript.
Extracts values from nested data structures using pattern matching to replace traditional conditional logic.
Vis es un editor de texto modal basado en terminal que utiliza atajos de teclado de vi y un sistema de expresiones regulares estructurales. Funciona como un entorno programable donde Lua se utiliza para la configuración, mapeos de teclas personalizados y desarrollo de plugins. El editor se distingue por un sistema de resaltado de sintaxis basado en gramáticas de expresión de análisis (PEG) y un motor de coincidencia de patrones que trata el texto como una estructura para operaciones complejas de búsqueda y reemplazo. También se integra directamente con el shell del sistema, permitiendo a los usuarios enviar rangos de texto a comandos externos y capturar la salida resultante. El proyecto proporciona amplias capacidades para la manipulación de texto, incluyendo el uso de múltiples cursores y selecciones, un grafo dirigido para el historial de deshacer y rehacer no lineal, y una interfaz de múltiples ventanas renderizada mediante secuencias de escape VT-100. Los usuarios pueden definir movimientos y operadores personalizados a través de la API de scripting integrada. La aplicación se puede compilar en un único binario vinculado estáticamente para mayor portabilidad.
Identifies text ranges using extended regular expressions to target specific patterns for commands.
c2rust is a source-to-source translation suite and C-to-Rust transpiler designed to convert C source code and libraries into functionally equivalent unsafe Rust code. It operates as a pipeline that preserves original behavior and data structures, producing translated code that compiles as compatible shared libraries or Rust crates. The system includes an automated Rust refactoring framework that uses pattern-based AST rewriting to transform unsafe Rust into safe, idiomatic constructs. It utilizes an ownership inference engine to determine when raw pointers can be converted into safe reference
Parses pattern strings into syntax fragments and matches them against source code to extract transformation bindings.
Sugar es una biblioteca de utilidades de JavaScript diseñada para extender objetos y prototipos nativos con métodos adicionales para la manipulación y transformación de datos. Funciona como un kit de herramientas para utilidades de objetos, manipulación de fechas, inflexión de cadenas y el polyfilling de características del lenguaje estándar faltantes o rotas. La biblioteca proporciona la capacidad de mapear métodos de utilidad directamente sobre prototipos integrados o envolver valores en objetos temporales para permitir el encadenamiento de métodos sin modificar los prototipos globales. También incluye un sistema de polyfill para asegurar un comportamiento consistente en diferentes entornos de ejecución mediante la implementación de funcionalidades modernas del lenguaje faltantes. Las capacidades incluyen el formato internacional de fechas y el análisis de cadenas de fechas humanizadas. La biblioteca también maneja el procesamiento de lenguaje natural mediante la inflexión y normalización de cadenas, el recorrido profundo de propiedades de objetos anidados y la ordenación de arrays consciente de la configuración regional. Además, proporciona herramientas para clonar objetos mutables y definir rangos de valores para números, fechas y cadenas.
Simplifies array element matching using strings, regular expressions, or partial object shortcuts.
GritQL is an AST-based code transformation engine and structural search tool. It uses a declarative query language to identify and rewrite source code patterns across multiple programming languages by matching abstract syntax tree nodes rather than literal text. The system functions as an automated refactoring framework for large-scale migrations and API updates. It distinguishes itself by utilizing sequential transformation pipelines and reusable blueprints that can be synced between local environments and remote repositories. The tool covers a broad range of capabilities including static a
Restricts a pattern's matches to nodes that satisfy additional structural conditions like parent or sibling relationships.
Codemod es un conjunto de herramientas de software para realizar transformaciones estructurales de código fuente. Funciona como una herramienta automatizada de migración de bases de código que utiliza manipulaciones de árboles de sintaxis abstracta (AST) en lugar de simples expresiones regulares para ejecutar refactorizaciones a gran escala en múltiples archivos. El proyecto se distingue por una interfaz de transformación interactiva que proporciona diffs coloreados, permitiendo a los usuarios revisar, aceptar o modificar manualmente cada coincidencia. También admite un flujo de trabajo de refactorización distribuido, que permite la segmentación de una base de código en bloques de trabajo asignados para dividir las tareas de migración entre múltiples colaboradores. El conjunto de herramientas cubre amplias capacidades para lógica de transformación programable, motores de búsqueda de coincidencia de patrones y filtrado de archivos basado en extensiones para restringir las operaciones a subconjuntos específicos de un proyecto.
Identifies specific code fragments using structural pattern matching based on AST bindings and regular expressions.
Memgraph is an in-memory, distributed graph database designed for high-performance labeled property graph management. It utilizes a Cypher query engine for declarative data retrieval and manipulation, providing a scalable knowledge graph backend that integrates vector search and graph traversals. The system distinguishes itself as a real-time graph analytics platform, employing native C++ and CUDA implementations to execute complex network analysis and dynamic community detection on streaming data. It provides specialized support for AI integration, including GraphRAG capabilities, the constr
Retrieves nodes and relationships that match structural patterns, labels, or paths.
FluentAssertions is a library of extension methods for .NET that provides a human-readable syntax for verifying expectations in unit tests. It serves as a validation layer that integrates with MSTest, NUnit, and xUnit to throw framework-specific exceptions upon assertion failure. The project includes a structural equivalency engine that performs deep member-by-member validation of .NET objects using configurable matching rules. It is designed for test-driven and behavior-driven development by generating descriptive failure messages that explain the difference between actual and expected resul
Provides a deep member-by-member validation engine for .NET objects with configurable matching rules.
OpenRewrite is an automated refactoring engine and source-to-source migration framework. It uses a lossless semantic tree parser to represent source code as type-aware trees that preserve original whitespace and formatting, enabling precise and deterministic modifications. The project utilizes a declarative refactoring pipeline where sequences of transformations are defined in YAML to resolve breaking changes and technical debt. It features type-aware pattern matching and cross-language model mapping to apply similar refactoring patterns across different programming languages. The framework
Identifies specific code structures using textual templates and AST bindings to extract parameters for transformations.
Places match on the same line as the method declaration and avoids expanding all arguments for type-only matches.
Comby es una utilidad de línea de comandos diseñada para la búsqueda y transformación estructural de código en diversos lenguajes de programación. Funciona como un motor de transformación de código que identifica y modifica patrones de código fuente utilizando plantillas conscientes de la sintaxis, asegurando que las operaciones respeten los límites del lenguaje como bloques anidados, cadenas y comentarios. La herramienta destaca por mapear varios lenguajes de programación a una representación estructural unificada, permitiendo una coincidencia de patrones consistente que ignora los espacios en blanco y el formato irrelevantes. Realiza estas operaciones ejecutando tareas de búsqueda y reemplazo a través de una máquina de estados que valida la integridad estructural, permitiendo modificaciones precisas mientras se preserva la sangría original y las convenciones estilísticas de los archivos fuente. Más allá de la simple búsqueda y reemplazo, la herramienta admite migraciones de bases de código a gran escala y refactorización automatizada aplicando actualizaciones de sintaxis en todo el proyecto. Los usuarios pueden verificar estas modificaciones a través de una interfaz de terminal interactiva, que permite la inspección y reconciliación selectiva de los cambios antes de que se confirmen en el sistema de archivos.
Matches code patterns by parsing syntax boundaries into abstract templates that ignore irrelevant whitespace.
Z is a pattern matching library for JavaScript that evaluates variables against structural shapes, data types, and literal values to branch program execution conditionally. It functions as a functional programming utility designed to deconstruct arrays and objects into parts during conditional evaluation. The library transforms human-friendly pattern matching syntax into optimized nested conditional statements during compilation or initialization phases, evaluating complex structural conditions and returning matching branch results directly as standard expression values. It inspects runtime d
Evaluates target objects against structural templates to extract inner values and execute corresponding handler functions conditionally.