Maison >développement back-end >Tutoriel Python >Explication détaillée de l'enregistrement de l'analyse du code WeChat côté PC et de l'exemple de code de connexion

Explication détaillée de l'enregistrement de l'analyse du code WeChat côté PC et de l'exemple de code de connexion

高洛峰
高洛峰original
2017-03-14 13:37:305736parcourir

Cet article explique en détail l'exemple de code pour l'enregistrement et la connexion au scan WeChat côté PC

Après avoir écrit la partie lexicale, il y a beaucoup de tâches, et j'ai enfin le temps le week-end pour mettre en œuvre le excellente partie d'analyse grammaticale.

Après avoir terminé le code, j'ai trouvé que le programme était trop court. Sans compter le statut machine, il n'avait que 186 lignes (dont les commentaires), et les le code clé comptait moins de 100 lignes. Après avoir exécuté le débogage, j'ai trouvé que tout allait bien. Il peut réellement analyser function.php dans OneThink. Ce fichier peut être appelé le maître des programmes Php. Il contient toutes sortes de monstres et de monstres. Il est vraiment pénible de le déboguer. Bien sûr je ne le dirai pas, haha ​​​​

Explication détaillée de lenregistrement de lanalyse du code WeChat côté PC et de lexemple de code de connexion

Comme le programme est trop court, je vais l'expliquer en détail dans au cas où vous ne comprendriez pas. Le secret :)

Nous savons que l'analyse grammaticale inclut généralement LL(1), LR(0), SLR(1), LALR(1), LR(1) et autres. méthodes d'analyse. Les plus courants sont LL(1), LR(0)

LL Cette méthode d'analyse scanne de gauche à droite et déduit vers l'extrême gauche ; LR scanne de gauche à droite et déduit LL. Adopte LR utilise une table de prédiction, tandis que LR utilise une table d'analyse ; la difficulté de LR est supérieure à celle de LL, et sa capacité analytique est également supérieure à celle de LL. De plus, LR a plus de changements. Par conséquent, pour un projet aussi amusant, bien sûr, LR doit être utilisé pour créer progressivement (zhuang) un nouveau (bi). Le

Le modèle de l’analyseur LR est tel qu’illustré ci-dessous.

Explication détaillée de lenregistrement de lanalyse du code WeChat côté PC et de lexemple de code de connexion

comprend deux piles dont la plus importante est de générer des tables d'analyse LR. Bien sûr, je ne vais pas suivre honnêtement les méthodes classiques du manuel. Comment créer quelque chose de nouveau (lan) ? C'est la clé.

Nous voyons que SLR(1), LALR(1) et LR(1) sont tous des améliorations de LR(0). La plus importante est (1), qui représente l'avenir. Pourquoi attendre avec impatience ? Pour réduire la taille de la table d'analyse. Il existe d'innombrables possibilités pour l'avenir, les possibilités diminuent et l'échelle de l'analyse sera également considérablement réduite. Si l'on veut réduire l'échelle d'analyse, il faut regarder devant, et plus on regarde, plus la table d'analyse sera petite, et inversement, la programmation sera plus difficile. Alors, y a-t-il un moyen pour moi de gagner de l'argent en restant debout sans regarder vers l'avant, sans augmenter la difficulté et réduire la table d'analyse ?

Oui, c'est vraiment le cas. Ce n'est pas un problème pour un homme paresseux âgé. On sait que le besoin de regarder vers l'avant vient de la grammaire expression : telle que A → Abc, plus la longueur de son expression unique est longue, plus l'incertitude est grande. Par conséquent, limiter la longueur maximale des expressions de méthode peut garantir une certitude à 100 % dans cette longueur, et il n'est pas du tout nécessaire de anticiper. J'ai nommé cette méthode de longueur limitée LR, c'est-à-dire LLLR(0,n), n>=3.

Donc, cette fois j'ai naturellement choisi LLLR(0,3) comme méthode d'analyse, et pour la commodité de mise en œuvre, j'ai décidé de ne pas sauvegarder l'état, il n'est donc pas nécessaire de générer une table d'analyse, et la table ne sera pas générée. Plus aucune table n'est générée...

Bon sang ! C'est trop paresseux. Ne pas sauvegarder l'état signifie que vous devez rechercher depuis le début à chaque fois. Qu'en est-il de l'efficacité, c'est la vie d'un programmeur !

Ne soyez pas impatient, la longueur maximale de l'expression est de 3 et l'étape de recherche maximale est de 3 étapes. Ne vous inquiétez pas, c'est tout. :)

C'est le secret du compilateur Php ultra-simple de 100 lignes. Et si c'était suffisant pour créer quelque chose de nouveau (bi). Le code source est ici : converterV0.4.

zip Profitez-en !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn