J'ai écrit un petit compilateur pour une machine à pile simple. Il peut assembler et gérer l'étendue/les fonctions via un nombre de hacks de machine virtuelle uniquement. C'est-à-dire que j'ai défini la portée et les définitions des variables de portée dans le bytecode lui-même.Comment gérer la portée lors de la génération de bytecode avec un compilateur manuscrit
Puis-je obtenir quelques conseils sur la façon dont je transportera plus étendue.
Les problèmes que je rencontre sont surtout, comment puis-je le faire savoir quand et quand ne pas écraser une variable en dehors d'une variable à l'intérieur, et similaire. Le bytecode est mutable et je préférerais le changer.
D'autres problèmes incluent comment conserver les variables à l'extérieur après le retour. Alors qu'une variable a encore sa valeur. Je peux le pousser à empiler, mais je pourrais avoir beaucoup de variables.
Je pense qu'il ya un travail de compilateur fait pour vérifier ces choses, mais je ne peux pas penser à ce qu'il faudrait faire pour le faire.
Voulez-vous parler des fermetures? – delnan
Sorta, mais non. Fondamentalement, comment générer bytecode pour gérer les variables avec la portée, ou plutôt des exemples de (qui pourrait être plus utile). – Chase