2 dépôts
Generating 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.
Explore 2 awesome GitHub repositories matching software engineering & architecture · Multi-Target Code Generation. 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.
Produces lexer and parser source code for multiple target programming languages from a single shared grammar.
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.