31 dépôts
Tools for modifying and rewriting syntax trees to generate new code structures.
Distinct from Syntax Tree Construction: Focuses on the mutation and transformation of the tree nodes rather than the initial construction of the tree.
Explore 31 awesome GitHub repositories matching software engineering & architecture · Syntax Tree Transformers. Refine with filters or upvote what's useful.
This project is a unified toolchain for JavaScript and TypeScript development, providing a suite of specialized tools for bundling, parsing, linting, and formatting source code. The toolchain is implemented in Rust and utilizes a shared internal representation to allow multiple tools to operate on the same parsed source code. It employs a parallelized analysis pipeline and single-pass parsing with error recovery to process files across CPU cores. The suite covers several core capability areas, including static analysis for identifying programmatic errors, automated style standardization, and
Implements tools for modifying and rewriting syntax trees to perform linting and formatting tasks.
oxc is a high-performance JavaScript toolchain developed in Rust for parsing, transforming, and analyzing JavaScript and TypeScript source code. It provides a set of core utilities including a parser that converts code into an abstract syntax tree, a linter for identifying problematic patterns, a formatter for standardizing visual style, and a minifier for reducing production file sizes. The project focuses on high-performance execution through a system design that utilizes single-pass parsing, zero-copy string slicing, and parallel worker processing to handle large codebases. It further opti
Implements a biphasic system that separates syntax tree analysis from code generation to optimize transformation speed.
CoffeeScript is a source-to-source transpiler that transforms a concise high-level syntax into standard JavaScript. It enables the development of logic for web applications and server-side environments by converting source code into a format compatible with browsers and server runtimes. The project provides a workflow for rapid prototyping and script execution automation, allowing users to run source files through a compiler and execute the resulting code immediately without a manual build step. The tooling leverages lexical analysis and abstract syntax tree transformations to manipulate cod
Implements syntax tree transformers to rewrite language constructs into JavaScript.
Prepack is a build-time code evaluator and JavaScript bundle optimizer. It functions as a static analysis compiler that pre-evaluates static code and precalculates function results and global assignments during the build phase to accelerate startup times and reduce bundle size. The project specifically targets JSX optimization by processing syntax and node serialization to improve user interface rendering efficiency. It utilizes a partial evaluation engine and static execution analysis to replace runtime computations with precalculated constants. The tool covers a range of capabilities inclu
Implements syntax tree transformations to inline expressions and strip type annotations during the build process.
YAPF est un formateur de code Python et un outil de conformité de style. Il fonctionne comme un reformateur basé sur AST qui utilise des arbres de syntaxe concrets pour assurer la cohérence structurelle et une présentation visuelle uniforme à travers les fichiers sources. Le moteur utilise un optimiseur de mise en page basé sur des pénalités pour déterminer les meilleurs sauts de ligne en calculant des coûts numériques pour différents choix de formatage. Il emploie un processeur de code multi-processus pour distribuer le formatage de plusieurs fichiers à travers plusieurs cœurs de CPU. L'outil couvre le reformatage du code source par des modifications de fichiers sur place, l'analyse des différences et le traitement de fragments de code partiels. Il inclut un système de configuration basé sur des règles pour gérer les préréglages de style, les règles de mise en page et les paramètres au niveau du projet. Les capacités d'intégration incluent la vérification de la conformité au style pour les pipelines d'intégration continue, l'automatisation des hooks git et la fonctionnalité de formatage à la sauvegarde basée sur l'éditeur.
Reconstructs source code by modifying concrete syntax tree representations while preserving the original structural integrity.
AST Explorer est un outil basé sur le web pour analyser le code source en arbres de syntaxe abstraits et visualiser la structure d'arbre résultante. Il sert d'inspecteur de code et de terrain de jeu pour la transformation, permettant aux utilisateurs d'explorer la représentation structurelle de divers langages de programmation via une interface de navigateur interactive. L'outil fournit un environnement de transformation où les utilisateurs peuvent appliquer des règles de modification aux arbres analysés pour tester la logique de modification de code. Il présente un mappage bidirectionnel qui met en évidence les nœuds d'arbre correspondants et le texte source simultanément à mesure que le curseur se déplace dans l'éditeur. La plateforme supporte l'importation de code via des téléchargements de fichiers ou des interfaces de glisser-déposer et permet le partage d'états de code spécifiques et de configurations d'analyseur via des URL encodées par état.
Provides a pipeline for applying modification functions to a syntax tree to rewrite the underlying code.
SWIG is a tool that generates wrapper code to expose C and C++ libraries to a wide range of higher-level programming languages. It reads annotated C/C++ header files and produces language-specific bindings from a single interface definition, supporting languages such as Python, Java, Ruby, C#, Perl, and many others. The generated wrapper code is free from the project's GPL license, allowing users to distribute it under their own terms. The tool handles modern C++ features including templates, namespaces, smart pointers, and constructs up to C++20 through specialized parsing and code generatio
Builds an internal parse tree from C/C++ source and transforms it into target language bindings.
ts-morph est une bibliothèque de manipulation d'AST TypeScript et un wrapper de haut niveau pour l'API du compilateur TypeScript. Il fournit une interface programmatique pour analyser, modifier et générer du code source TypeScript, servant d'outil pour le refactoring de code automatisé et la génération de code source. La bibliothèque simplifie le processus de navigation et d'inspection des structures de projet en offrant une abstraction orientée objet sur l'API du compilateur sous-jacente. Elle permet la transformation programmatique de bases de code existantes pour automatiser les mises à jour structurelles et les migrations de code en masse. Ses capacités couvrent l'analyse de code statique, la navigation dans les éléments de code et la gestion des fichiers source via l'importation, la génération et la suppression. Le projet intègre la vérification de type et utilise la découverte de fichiers basée sur des globs pour maintenir une représentation en mémoire de la base de code, qui peut ensuite être persistée sur le système de fichiers physique.
Provides tools for modifying and rewriting TypeScript syntax trees to generate new code structures.
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.
Uses a visitor-pattern mechanism to transform parse trees into custom data structures via specific grammar branch mappings.
ts-migrate est un outil de migration automatisé conçu pour transformer le code source JavaScript en fichiers TypeScript compilables. Il fonctionne comme un framework de migration de code qui utilise des arbres de syntaxe abstraits (AST) pour effectuer des refactorisations à grande échelle et des changements structurels dans un projet. L'outil fournit un framework personnalisable pour définir des règles de transformation basées sur des plugins, permettant l'automatisation de changements de code spécifiques. Il inclut des moteurs spécialisés pour convertir les définitions de type JSDoc en annotations TypeScript natives et un utilitaire pour supprimer les erreurs de compilation en insérant des assertions de type ou des commentaires d'ignorance. Le système couvre un large éventail de capacités de migration, incluant la conversion des types de propriétés React et des méthodes de cycle de vie, la normalisation des définitions de classes, et la possibilité de cibler des répertoires spécifiques de manière incrémentale via un filtrage basé sur des motifs.
Modifies syntax trees to reorganize class members and apply accessibility modifiers.
Hy est une implémentation Lisp pour Python qui permet d'écrire une syntaxe Lisp compilée en bytecode Python. Il opère comme un dialecte Lisp basé sur Python et un langage S-expression, offrant un accès complet à la bibliothèque standard et à l'écosystème Python. Le langage se concentre sur la métaprogrammation basée sur les macros, avec un système de macros parcourant l'AST et des macros de lecture qui permettent des transformations de syntaxe et des règles de parsing personnalisées. Il permet la manipulation de l'arbre de syntaxe abstraite pour étendre les capacités du langage. Le projet inclut une boucle read-eval-print (REPL) pour le développement interactif et prend en charge l'exécution de scripts autonomes. Il couvre des capacités de programmation fonctionnelle telles que le pattern matching structurel et le développement de programmes asynchrones utilisant les constructions async et await. Le code source peut être traduit en fichiers sources Python équivalents pour inspection ou distribution.
Provides a macro system for creating custom syntax transformations that modify the abstract syntax tree.
Recast est un analyseur et imprimeur AST JavaScript conçu pour le refactoring de code automatisé. Il convertit le code source en arbres de syntaxe abstraite qui peuvent être modifiés puis réimprimés en code source. Le projet se concentre sur les transformations préservant le formatage, stockant les métadonnées originales d'espacement et d'indentation au sein des nœuds de l'arbre de syntaxe pour reconstruire le code sans perdre sa mise en page originale. Il génère également des source maps au niveau des caractères pour maintenir des correspondances précises entre l'entrée originale et la sortie transformée. La boîte à outils inclut des utilitaires pour la manipulation de l'arbre de syntaxe utilisant un modèle visiteur, ainsi que des options pour le pretty-printing de style générique. Une interface en ligne de commande est fournie pour exécuter ces fonctions de transformation sur les fichiers cibles et écrire les résultats sur le disque.
Provides tools for modifying and rewriting syntax trees to perform complex code transformations.
Poi est un bundler de modules extensible et sans configuration et un compilateur d'actifs pour le développement frontend moderne. Il fonctionne comme un système de construction qui transforme JavaScript, JSX et CSS en fichiers compatibles avec les navigateurs et les combine en packages uniques pour la livraison web. L'outil est construit autour d'une architecture de plugin qui permet des extensions personnalisées au pipeline de construction et l'ajout d'une logique de traitement d'actifs spécialisée. Il utilise un système de mappage basé sur des conventions pour automatiser les paramètres de construction et les sorties cibles sans avoir besoin de fichiers de configuration manuels. Le projet couvre un large éventail de capacités de regroupement, notamment la compilation de framework frontend, la résolution automatique d'actifs et le traitement de fichiers statiques. Il utilise des transformations d'arbre syntaxique abstrait pour permettre la modification programmatique et la compilation spécifique au framework du code source.
Implements syntax tree transformations to enable programmatic modification and framework-specific compilation of source code.
Unified est un moteur de traitement d'arbres de syntaxe et un écosystème de contenu conçu pour analyser, transformer et sérialiser du contenu textuel. Il fonctionne comme un pipeline de contenu basé sur des plugins qui convertit le texte brut en arbres de syntaxe abstraits structurés utilisant des objets JavaScript simples pour une inspection et une modification programmatiques. Le projet se distingue par une architecture modulaire qui permet une traduction inter-écosystème, permettant aux arbres de syntaxe d'être convertis entre différentes spécifications telles que HTML et Markdown. Il utilise un système de clonage de processeur immuable et des conteneurs d'état partagés, garantissant que les pipelines de traitement peuvent être étendus et personnalisés sans altérer les configurations originales. Le système fournit des capacités complètes pour la gestion des arbres de syntaxe, y compris la traversée en profondeur, la sélection de nœuds basée sur CSS et les transformations récursives. Sa surface de traitement s'étend à l'analyse du langage naturel, à l'analyse de GitHub Flavored Markdown et au mappage des arbres de syntaxe vers des éléments DOM virtuels pour la visualisation dans le navigateur. La logique de traitement peut être intégrée dans des applications web via des bundlers de modules ou des CDN.
Runs sequences of plugins to modify or analyze syntax trees before serialization.
TSDoc est un standard de documentation et une spécification pour l'écriture de commentaires structurés dans le code TypeScript. Il fournit un système portable pour définir des métadonnées, des balises et des références croisées au sein du code source afin d'assurer une analyse et un rendu cohérents à travers différents outils. Le projet inclut un analyseur de commentaires de documentation qui convertit les commentaires en un arbre de syntaxe structuré et un validateur qui applique la cohérence syntaxique. Il permet la définition de balises de documentation personnalisées via des fichiers de configuration externes et prend en charge plusieurs modes de validation de syntaxe pour aider à la conformité aux spécifications. La spécification couvre un large éventail de besoins en documentation d'API, y compris le marquage des étapes de publication, la stabilité et la dépréciation. Elle prend en charge le détail des paramètres de fonction, les valeurs de retour et les types d'exception, ainsi que la gestion de la visibilité interne, de l'héritage et des références croisées entre les déclarations.
Converts structured syntax trees back into plain text comments to allow for automated modification of source code.
Lost est un système de grille CSS et un plugin PostCSS conçu pour définir les largeurs et positions des colonnes en utilisant des calculs mathématiques pour des designs d'écran responsifs. Il fonctionne comme un outil de build qui traite les règles de grille personnalisées en mises en page CSS compatibles avec les navigateurs. Le framework transforme les déclarations de mise en page non standard en propriétés natives CSS Grid et Flexbox. Il utilise un pipeline basé sur PostCSS pour calculer les coordonnées exactes et les largeurs de colonnes, garantissant que les styles résultants sont compatibles avec les navigateurs web standards. Le projet opère comme une couche middleware agnostique aux préprocesseurs, lui permettant de traiter des styles indépendamment du fait que la source soit du CSS brut, Sass ou Less. Il automatise la génération de structures de grille responsives qui ajustent les tailles et positions des éléments en fonction des dimensions de l'écran.
Implements a PostCSS-based transformation of the CSS abstract syntax tree to modify layout properties.
Myth est un outil de construction CSS et un préprocesseur qui transforme les spécifications de style modernes et la syntaxe future en code compatible pour les navigateurs web actuels. Il fonctionne comme un outil de polyfill, convertissant les fonctionnalités avancées en CSS standard pour assurer un rendu cohérent entre les navigateurs. Le projet fournit un préfixage vendeur automatisé basé sur les données de support des navigateurs et résout les variables CSS en valeurs statiques pour la compatibilité avec les navigateurs hérités. Il gère également la transpilation des alias de media queries personnalisés et la manipulation des fonctions de couleur avancées en formats standard. L'ensemble d'outils inclut une interface de ligne de commande pour la compilation des feuilles de style, avec une compression de sortie pour la minification et la génération de source maps pour le débogage. Il prend en charge en outre les calculs mathématiques au moment de la construction et la surveillance des changements de fichiers pour automatiser le pipeline de traitement.
Uses an abstract syntax tree to transform modern CSS specifications into browser-compatible code.
pyupgrade est un modernisateur de code statique et un outil de mise à niveau de syntaxe pour Python. Il réécrit automatiquement le code source pour implémenter des fonctionnalités de langage modernes et une syntaxe basée sur une version cible spécifiée. L'outil se concentre sur la suppression de la dette technique en supprimant les imports obsolètes, les correctifs de compatibilité et les blocs conditionnels obsolètes spécifiques à une version. Il refactorise également les annotations de type pour utiliser les standards actuels, tels que les alias génériques simplifiés et les opérateurs d'union. Sa surface de capacités inclut la mise à jour de l'utilisation de la bibliothèque standard, l'optimisation des appels de fonctions intégrées et la conversion de constructeurs de collections verbeux ou de formatage de chaînes en équivalents modernes concis. Ces transformations sont effectuées via un moteur de règles versionné qui préserve le formatage original et les commentaires.
Implements transformations on concrete syntax trees to ensure that original source formatting and comments are preserved during rewriting.
csso is a CSS minifier and optimizer that reduces stylesheet file sizes through structural analysis and algebraic transformations. It functions as an abstract syntax tree processor, converting styles into a structured tree to perform deep analysis and semantic-preserving code transformations while maintaining the original visual presentation. The project distinguishes itself through usage-aware optimization, analyzing external HTML markup and class identifiers to prune unused styles and reorganize rules based on actual document usage. It also performs structural refactoring by identifying and
Implements a transformation system that modifies the CSS abstract syntax tree to optimize style rules.
unplugin-auto-import is a build-time import automation plugin and AST-based code transformer. It analyzes source code to identify missing identifiers and automatically injects the required import statements during the bundling process. The project functions as a cross-bundler build plugin, providing a unified abstraction layer that ensures consistent behavior across Vite, Webpack, and Rollup. It utilizes a pattern-based module resolver to scan local directories via glob patterns and employs a TypeScript declaration generator to maintain type definition files for IDE autocompletion. Its capab
Parses source code into a structural tree to identify missing identifiers and inject import statements.