Je cherche une définition claire de ce que sont un "tokenizer", "parser" et "lexer" et comment ils sont liés les uns aux autres (par exemple, un analyseur utilise-t-il un tokenizer ou vice versa)? J'ai besoin de créer un programme qui passera par les fichiers source c / h pour extraire la déclaration de données et les définitions.
J'ai cherché des exemples et je peux trouver des informations, mais j'ai vraiment du mal à comprendre les concepts sous-jacents tels que les règles de grammaire, les arbres d'analyse et l'arbre de syntaxe abstraite et comment ils sont liés les uns aux autres. Finalement, ces concepts doivent être stockés dans un programme réel, mais 1) à quoi ressemblent-ils, 2) y a-t-il des implémentations communes.
J'ai regardé Wikipedia sur ces sujets et programmes comme Lex et Yacc, mais n'ayant jamais suivi de cours de compilation (majeure EE), j'ai du mal à comprendre pleinement ce qui se passe.