J'ai relu http://cm.bell-labs.com/who/ken/trust.html et je n'arrive pas à saisir le concept de la phase II avec la languette verticale. Ma question à vous les gars est: Les caractères sont-ils vérifiés deux fois maintenant avec l'inclusion du caractère d'échappement \ v? Parce que la façon dont je le vois est qu'avec ce nouveau compilateur installé, lorsque \ v est utilisé, il passera par le code de la figure 3, puis à l'instruction de retour ('\ v'), le code de la figure 4 puis s'appelle qui renvoie la vraie représentation ASCII d'un onglet vertical. Cela ne ralentira-t-il pas le temps de compilation, bien que cela donne une meilleure représentation du compilateur actuel? S'il vous plaît laissez-moi savoir si vous avez besoin de moi pour reformuler ma question. À votre santé!Compilateur/Bootstrapping - Plus lent en recompilant les anciens compilateurs bootstrap?
Répondre
Le code n'est pas traversé deux fois. Dans l'état initial, la figure 3 ne peut pas être compilée car \v
n'a pas de signification définie. (Il suffit de penser comme une variable de fantaisie qui est définie à l'intérieur le compilateur.)
Une fois que vous avez compilé la figure. Code de 4 vous avez dit que \v
peuplements pour 11
. Le compilateur résultant peut mapper \v
à une valeur, ainsi vous pouvez définir \v
pour représenter \v
.
Un exemple non compilateur avec des variables réelles serait quelque chose comme ceci:
x = 11;
/* ... */
x = x;
Une fois que vous avez défini ce que x
représente, vous pouvez l'utiliser et même affecter sa valeur elle-même. La différence principale avec l'analyseur est qu'au lieu d'avoir les deux déclarations à des positions différentes dans le même fichier, les définitions de \v
sont réparties sur deux versions différentes du compilateur, la deuxième étant compilée par le nouveau compilateur (parce que l'ancien compilateur n'inclut pas cette définition).
- 1. Bootstrap absurdement lent chez Django (40 ans et plus): Pourquoi?
- 2. trouver les plus anciens fichiers accédés
- 3. Twitter Bootstrap carrousel ne fonctionne pas sur les anciens navigateurs
- 4. SQL pour supprimer les enregistrements les plus anciens d'une table
- 5. CURAND plus lent
- 6. parallèle, mais plus lent
- 7. AvalonDock plus lent en 64 bits
- 8. mémoire partagée entre les compilateurs?
- 9. Masquer les anciens messages d'événements plus anciens que la date actuelle
- 10. ASP.NET. Redirection de navigateurs plus anciens
- 11. Comment supprimer tous les objets plus anciens que maintenant?
- 12. iphone app mystérieusement de plus en plus lent
- 13. Supprimer les anciens enregistrements
- 14. Rediriger les anciens navigateurs
- 15. Détection mobile et prise en charge de périphériques plus anciens
- 16. Trouver des fichiers plus anciens que X et les compter
- 17. Alternatives pour usb_pipe_endpoint dans les noyaux plus anciens
- 18. Redis: trouve tous les objets plus anciens que
- 19. Quels compilateurs prennent en charge CUDA
- 20. Compilateurs pour les scripts shell
- 21. Solr renvoie les enregistrements les plus anciens au lieu de 'plus récent'; Paramètres 'Rows' et 'Start'
- 22. CachedRowSet plus lent que ResultSet?
- 23. OpenGl DisplayList est plus lent
- 24. Trouver les fichiers les plus anciens et avoir la taille maximale en python sur SUNOS
- 25. IBM RFT Soudainement plus lent
- 26. Monodroid est-il plus lent?
- 27. bootstrap - Puis-je remplacer complètement mes anciens fichiers CSS avec bootstrap?
- 28. SWF chargé devient plus lent
- 29. SmtpClient devient progressivement plus lent
- 30. Supprimer tous les anciens enregistrements
Ah, je l'ai maintenant. Je pensais qu'il fallait juste continuer à référencer ce code dans le nouveau compilateur, mais il suffit simplement de remplacer le \ v dans le code octet par 11. Par conséquent, lorsque vous continuez à recompiler cette source avec le nouveau compilateur, vous obtiendrez le même octet code. L'abstraction m'a embrouillé. Je vous remercie! – edaniels