web-dev-qa-db-fra.com

Transpirer <xy> langue dans une personnalisation

Notre société a une langue d'assemblage héritée avec des choix de conception terribles. Je suis à peu près sûr que la langue ne va pas changer, depuis que trop de choses hérités peuvent changer leur comportement qui seraient évidemment involontés.

J'aimerais utiliser/trouver n'importe quelle langue qui a au moins une syntaxe de type C (ou quelque chose de similaire, ne le rendez pas exotique, comme Lisp ou donc :) Seuls les éléments de base sont nécessaires, pour Exemple:

  • les fonctions
  • variables locales
  • opérateurs de base (((bitwise, mathématiques de base)
  • Commentaires

    • Aucune variables globales n'existe

Non OOP ou quelque chose de spécial est nécessaire. Je ne veux pas exécuter ce morceau de code, je veux juste utiliser une syntaxe décente, qui lors d'une "compilation" est convertie en ce moid L'ensemble -(ASM serait au moins organisé, mais c'est pire Langue.

Que pouvez-vous me recommander de commencer à regarder? Si ce n'est pas nécessaire, je ne voudrais pas écrire mon propre analyseur pour cela. Je suis bon à C++, mais une langue est correcte si cela convient mieux à mes besoins.

6
original.roland

Vous ne voulez probablement pas utiliser quelque chose comme LLVM pour votre cas d'utilisation. C'est une IR extrêmement flexible, ce qui signifie que vous finirez par mettre en œuvre un tas de choses dont vous n'avez pas vraiment besoin, juste pour le faire fonctionner. Si vous deviez pouvoir exécuter un programme C arbitraire existant sur votre langage de montage, , alors Cela en valait la peine.

Les analyseurs ne sont pas vraiment si difficiles à écrire. Surtout, vous devez dépasser tous les jargon de la science informatique. Faites une recherche d'analyseurs de descente récursive pour la méthode la plus facile à comprendre (à mon avis). La prochaine méthode la plus simple consiste probablement à trouver une bibliothèque de combinaisons d'analyseurs pour votre langue. Après cela, en utilisant un générateur d'analyseur comme Bison .

La partie délicate prend l'arborescence de syntaxe abstraite votre analyseur produit et émet votre code cible. Des tutoriels d'analyseurs ont généralement un interprète parce que c'est plus facile. Une fois que vous avez traversé ceux-ci, alors faites un interprète pour votre langue personnalisée, vous aurez les connaissances de base pour avoir une meilleure idée de la prochaine étape.

0
Karl Bielefeldt