J'ai déjà fait un scanner, maintenant je suis supposé faire un analyseur. Quelle est la différence?Quelle est la différence entre un analyseur et un scanner?
Répondre
Un scanner transforme simplement une chaîne d'entrée (disons un fichier) en une liste de jetons. Ces jetons représentent des éléments tels que des identificateurs, des parenthèses, des opérateurs, etc.
Un analyseur convertit cette liste de jetons en un objet semblable à un arbre pour représenter comment les jetons s'assemblent pour former un ensemble cohérent (parfois appelé phrase).
En termes d'analyseurs de langage de programmation, la sortie est généralement appelée un arbre de syntaxe abstraite (AST). Chaque noeud de l'AST représente une construction différente du langage, par ex. une instruction IF serait un nœud avec 2 ou 3 sous-nœuds, un nœud CONDITION, un nœud THEN et potentiellement un nœud ELSE.
Un analyseur ne donne aucune signification aux nœuds au-delà de la cohésion structurelle. La prochaine chose à faire est d'extraire le sens de cette structure (parfois appelée analyse contextuelle).
Parsing (dans un sens général) consiste à transformer les symboles (caractères, chiffres, parens gauche, etc.) en phrases de votre grammaire.
L'analyseur lexical (le « analyseur syntaxique ») analyse des symboles individuels à partir du fichier de code source en jetons. A partir de là, le "parser" proprement dit transforme ces jetons entiers en phrases de votre grammaire.
En d'autres termes, le lexeur combine des symboles en jetons, et l'analyseur combine des jetons pour former des phrases.
- 1. Quelle est la différence entre un nanokernel et un exokernel?
- 2. Quelle est la différence entre un DataSource et un DataAdapter?
- 3. Quelle est la différence entre un HashMap et un TreeMap?
- 4. Quelle est la différence entre un midlet et un corelet?
- 5. Quelle est la différence entre un REPL et un interpréteur?
- 6. Quelle est la différence entre un "nonce" et un "GUID"?
- 7. Quelle est la différence entre un itérateur et un générateur?
- 8. Quelle est la différence entre un assistant et un partiel?
- 9. Quelle est la différence entre nohup et un démon?
- 10. Quelle est la différence entre une instance et un objet?
- 11. Quelle est la différence entre un URI et une URL?
- 12. Quelle est la différence entre une méthode et un protocole
- 13. Quelle est la différence entre une vue et un flux?
- 14. Quelle est la différence entre "$^N" et "$ +"?
- 15. Quelle est la différence entre = et: =
- 16. Quelle est la différence entre dict() et {}?
- 17. quelle est la différence entre:.! et: r !?
- 18. Quelle est la différence entre ~ et! opérateur?
- 19. Dans Webtrends, quelle est la différence entre un HIT, un VISIT et un PAGE VIEW?
- 20. Quelle est la différence entre un objet modèle MVC, un objet de domaine et un DTO
- 21. Quelle est la différence entre un User Story et un Feature dans la terminologie Agile?
- 22. Quelle est la différence entre la saturation et la luminosité?
- 23. Quelle est la différence entre la sérialisation et l'encodage?
- 24. Quelle est la différence entre ces extraits?
- 25. Quelle est la différence entre applicationDidReceiveMemoryWarning, didReceiveMemoryWarning?
- 26. Quelle est la différence entre ces importations?
- 27. Quelle est la différence entre ces commentaires
- 28. Quelle est la différence entre la version et l'itération?
- 29. Quelle est la différence entre la programmation parallèle et multicœur?
- 30. Quelle est la différence entre la plate-forme et l'outil?
J'ai retiré la balise 'Flex' et l'ai remplacée par la balise' lexical-analyseur 'plus générale puisque la balise 'Flex' de StackOverflow fait référence à Adobe Flex Framework. –