Mauvais conseils lorsque vous travaillez avec ANTLR

Votre attention est invitée à un ensemble de conseils nuisibles qui vous aideront à créer l'analyseur le plus productif. N'oubliez pas de tout faire selon les instructions, sinon quelque chose ira mal!

1. ATN - pas un bug, mais une fonctionnalité


Terrence Par a fait une excellente fonctionnalité pour optimiser la prédiction de branche dans votre grammaire. Exclusivement par souci des performances de votre analyseur, le champ est statique et accumulera à jamais les informations! Bien sûr, vous ne remarquerez pas beaucoup de différence sur les petits fichiers, l'essentiel est de ne pas analyser 2-3 mégaoctets de fichiers dans vos tests, même s'il n'y a pas assez de mémoire pour quelqu'un d'autre!

2. Cherchez ceux qui n'ont pas l'habitude de regarder en arrière les explosions!


Si votre grammaire vérifie tous les jetons du flux sur chaque règle, vous pouvez garantir l'exactitude du traitement! S'il n'y a pas assez de pile, alors il suffit de décupler sa taille, l'essentiel est de faire plus de règles!

3. SLL pour les mauviettes


Pourquoi faire l'optimisation si ANTLR4 peut le faire pour vous? La grammaire en mode TOUS vous fait gagner un temps précieux en lisant de tels articles. N'oubliez pas d'ajouter les mêmes jetons à chaque alternative, surtout si elle est belle.

4. AST - toutes les informations dont vous disposez


N'oubliez pas d'écouter Terrence et d'ajouter le support visiteur, auditeur à votre analyseur. L'intégration de code dans une grammaire n'est pas seulement des difficultés inutiles, mais aussi un problème potentiel de refactoring! En contournant chaque nœud de l'arbre, vous pouvez non seulement tenter votre chance, mais également vérifier les nerfs du client!

5. Plus de règles, dieu des règles!


Mais saviez-vous qu'avec l'aide d'ANTLR4, vous pouvez construire une tour de Babel? Dans les sections de code avec une grande imbrication ne peut pas être trouvée? Une fonction à l'intérieur d'une fonction avec une énorme quantité d'expressions? Ne montrez tout simplement pas au client le travail sur les fichiers js minifiés, de toute façon, personne ne les comprend, même les navigateurs.

6. Le lexer n'est nécessaire que pour créer des jetons.


N'essayez en aucun cas de faire quelque chose avec les jetons dans le lexer, emballer le bloc {} dans le jeton ne vous permettra pas de profiter de la visualisation des machines du client qui nécessitent plus de mémoire!

La mémoire doit couler! Que memleak soit avec vous!

Source: https://habr.com/ru/post/undefined/


All Articles