Disons que j'ai un gros bloc de code que j'ai déjà lexé et analysé.
Supposons qu'un seul caractère change; Je voudrais mettre à jour mon analyse, mais comme la modification est très petite par rapport à l'ensemble, je voudrais savoir s'il est possible de ne pas analyser à nouveau l'ensemble, mais s'il existe des algorithmes pour déterminer la plage à ré-analyser et pour gérer correctement le déplacement des limites des jetons.
Merci d'avance!
Réponses:
Conformément à la demande @Agos, j'ai transformé le commentaire en réponse.
Tout d'abord, je dois admettre que je ne suis pas vraiment bien informé dans ce domaine. Pourtant, je vous suggère de lire les articles Construire des analyseurs conviviaux et une analyse incrémentielle efficace et flexible pour avoir une vue des algorithmes utilisés pour l' analyse incrémentielle avant 2000.
Pour des traitements mis à jour, vous pouvez consulter ces articles:
Plus d'informations: Il existe (au moins) deux approches d'analyse / compilation:
la source
si votre analyseur incrémental enregistre l'état à chaque fin de ligne, vous ré-analysez uniquement à partir du dernier état d'analyseur valide (dans le meilleur des cas, par exemple après une analyse complète, ce n'est que le début de la ligne où la modification commence) et arrêtez l'analyse à la fin de la ligne où se termine la modification (l'analyseur interne peut regarder au-delà de la modification pour reconnaître correctement la structure)
la source