Je travaillais sur IronLua pendant mon temps libre. Lexing et l'analyse est actuellement fait. J'ai en quelque sorte cessé de travailler dessus par frustration car l'implémentation des coroutines Lua dans .NET sans avoir recours à des hacks de threads sales n'est pas facile. Ceci est lié à la façon dont je compile les fonctions de Lua, et c'est un problème que je dois résoudre tôt lors de la conception du compilateur.Compilateur CPS pour l'implémentation coroutine
J'ai fait des recherches sur les implémentations coroutine, et il s'avère que mes premières impressions sur les suites étaient correctes. Comme la création de coroutine, le rendement et d'autres opérations ne sont pas des mots-clés de langue, mais des fonctions dans la table "coroutine", je ne peux pas basculer statiquement en compilation CPS car la table coroutine a été écrasée par un script précédent. Bien que je comprenne que les scripts d'écrasement de la table de coroutine sont rares, je voudrais être prudent et aborder la question aussi proprement que possible.
Mon plan est d'utiliser le style continuation-passing pour chaque expression, peu importe si nous sommes dans une coroutine ou non. Tout serait suivi d'une continuation.
Outre la difficulté évidente d'écrire un compilateur en premier lieu, et en y ajoutant la transformation CPS, je suis troublé par cette décision de conception et ses implications en termes de performances.
Je suis à la recherche de conseils sur l'implémentation de la coroutine Lua dans .NET.
Merci pour votre temps.
merci, je vais jeter un oeil à leur source. mettra à jour. – Raine