2009-06-24 8 views
3

J'ai écrit un DSL en utilisant Antlr pour générer un lexeur et un analyseur à partir de mon fichier de grammaire. L'analyseur génère un arbre de syntaxe abstraite qui contient divers nœuds (par exemple un nœud de fonction) que je peux calculer. Dans le code pour les nœuds de fonction, je m'occupe de vérifier les noms des fonctions et les types de paramètres pour les correspondances à partir d'une bibliothèque de fonctions. J'ai une mise en cache simple ici pour optimiser la fonction de recherche (si j'appelle A + B avec deux ints alors il y a de fortes chances que la prochaine fois que j'utiliserai l'opérateur plus, ce sera avec 2 ints). Récemment, j'ai lu sur le DLR et il semble être conçu pour accueillir ce type d'implémentation de langage de script. A première vue ça ne me regarde pas comme si ça générait l'analyseur ou le lexer mais il semble que ça aide les autres parties de l'implémentation. Je me demandais quels seraient les principaux avantages pour moi d'utiliser le DLR.Quels sont les principaux avantages du passage au DLR pour mon langage de script?

Répondre

2

L'accès complet au framework .NET est le plus important.

2
  • L'accès à la bibliothèque de classes de base .Net et types
  • L'accès aux bibliothèques tierces écrites pour .Net
  • Vous pouvez laisser Microsoft vous soucier de l'entretien de l'API (mises à jour de sécurité, etc.)
  • Vous
  • peut accueillir la langue dans Visual studio
4

Si vous implémentez la liaison avec soin, le DLR vous donnera un mécanisme de mise en cache très puissant - probablement plus fortement que vous n'optimized être réaliste capable de le faire sur votre OW n. En outre, vous avez plus de chances d'obtenir une bonne interopérabilité avec d'autres langues, car vous utiliserez un protocole d'objet dynamique "standard". Par exemple, C# 4 serait en mesure d'appeler dans votre langue sans aucun travail supplémentaire, simplement en utilisant le type dynamic. Pour faire cela sans le DLR, vous devez générer des types CLR statiques "normaux".

Il est difficile de savoir avec certitude quel avantage il y aurait parce que nous ne savons pas pour quoi vous voulez utiliser votre langue, ou combien elle le fait déjà. Cependant, il y a évidemment beaucoup de gens très intelligents qui travaillent sur le DLR - il me semble que si vous créez un langage dynamique pour fonctionner sur .NET, il serait logique de profiter de leur travail.

+0

Merci Jon, plusieurs bonnes motivations là surtout le type dynamique. J'aurais aimé pouvoir le faire lors de votre présentation à l'open-source-jam. – Jason

+0

C'était seulement 5 minutes - aucun détail du tout. J'ai presque fini avec le chapitre dynamique de C# en profondeur, donc cela devrait être disponible bientôt. –

Questions connexes