Dans mon maître, j'ai vu comment écrire des parseurs, des compilateurs utilisant ANTLR. Mais dans le monde réel, nous avons souvent besoin d'analyser et d'extraire du contenu pertinent à partir d'une charge importante de données de flux entrantes. Chaque langue a son propre moteur d'expression régulière qui peut être utilisé pour analyser les données. Alternativement, nous pouvons écrire une grammaire EBNF et prendre un outil lisse comme ANTLR pour générer automatiquement l'analyseur. Cette dernière approche est moins sujette aux erreurs et garantie d'être plus fiable que la première (en particulier dans le cas de certains espaces supplémentaires, de nouvelles lignes). Je voudrais juste savoir quelle serait la limite entre ce monde 2 quand on irait écrire une grammaire entière et générer son propre parseur vs on utilise rapidement le moteur regex langage intégré et déployer un petit analyseur qui peut faites le travail assez rapidement. Encore une fois, je ne cherche pas d'arguments, mais j'essaie d'analyser dans quelle mesure et avec quelle approche les gens vont écrire des parseurs.Quand écrire un analyseur en utilisant la grammaire par rapport à la langue en utilisant des expressions régulières
3
A
Répondre
3
Si votre flux d'entrée peut être traité par une expression régulière et qu'il n'est pas complexe, utilisez une expression régulière. Un flot d'enregistrements où chaque enregistrement a un créneau et une valeur peut être traité raisonnablement de cette façon.
Si le flux a des enregistrements arbitrairement imbriqués, le faire par regex est peu pratique (en fait impossible), et vous devriez passer à l'aide d'un générateur BNF et parser.
Questions connexes
- 1. questions de grammaire arboricoles en utilisant des expressions régulières
- 2. Grammaire sans contexte décrivant des expressions régulières?
- 3. Comment simplifier cette instruction en utilisant des expressions régulières?
- 4. Expressions régulières dans Lua en utilisant .gsub()
- 5. Parsing chaîne complexe en utilisant des expressions régulières
- 6. Convertir un BBCode en utilisant des expressions régulières
- 7. en utilisant des variables javascript dans des expressions régulières javascript
- 8. En utilisant la fin de la marque verbale avec unicode dans les expressions régulières en Python
- 9. Analyseur syntaxique C++ requis + prise en charge des expressions régulières
- 10. Comment diviser en utilisant un caractère de préfixe en utilisant des expressions régulières?
- 11. comment concaténer des expressions régulières en javascript?
- 12. texte Parse utilisant des expressions régulières
- 13. expressions régulières en Java
- 14. Comment faites-vous le remplacement de chaîne insensible à la casse en utilisant des expressions régulières?
- 15. Obtenir T-SQL en utilisant les expressions régulières
- 16. Comment supprimer des balises d'une chaîne en python en utilisant des expressions régulières? (PAS en HTML)
- 17. Expressions régulières en C#
- 18. Javascript pour correspondre à un numéro spécifique en utilisant des expressions régulières
- 19. Expressions régulières en java
- 20. Accélération des expressions régulières en Python
- 21. Comment changer les noms de fichiers en utilisant des expressions régulières en Python?
- 22. Comment exclure des caractères/symboles en utilisant la grammaire ANTLR?
- 23. Expressions régulières en PHP
- 24. flex (analyseur lexical) expressions régulières - définitions Réutiliser
- 25. Générer une abréviation à partir d'une chaîne en JavaScript en utilisant des expressions régulières?
- 26. En utilisant VB.NET expressions régulières pour supprimer Excel XML Conversion
- 27. Comment définir une plage et trier par nombre dans Vim en utilisant des expressions régulières?
- 28. Obtenir la dernière occurrence d'une chaîne en utilisant des expressions régulières
- 29. Expressions régulières en Java
- 30. Je dois supprimer les balises Java Script en utilisant des expressions régulières et JRegex
Incase des applications critiques de sécurité telles que la finance et la santé où même une petite erreur mineure causera des ravages, pensez-vous que regex est recommandable du tout? Je veux dire qu'en est-il de la fiabilité même pour un simple enregistrement? –
Pourquoi les expressions régulières sont-elles moins fiables que le "si" ou toute autre instruction dans votre langue, si votre langue est bien implémentée? En fait, dans le cas des applications «critiques pour la sécurité», si vous voulez vraiment dire cela, vous devrez démontrer que * tout * votre code est en sécurité, pas seulement les parties qui lisent les enregistrements, et vous trouverez beaucoup plus difficile que tout ce que vous utilisez pour faire des enregistrements. Mais je ne suis pas sûr de comprendre «sécurité critique» et «financière» dans la même phrase; es-tu sérieux? –
La sécurité critique peut être limitée aux soins de santé plutôt (bien d'autres existent aussi comme aéronautique etc.). Finances désolé ne tombe pas sous le même. mon erreur. –