Je cherche une définition claire de ce que sont un "tokenizer", un "parser" et un "lexer" et comment ils sont liés les uns aux autres (par exemple, un parser utilise-t-il un tokenizer ou vice versa) ? J'ai besoin de créer un programme qui parcourra les fichiers source c/h pour en extraire les déclarations et définitions de données.
J'ai cherché des exemples et j'ai pu trouver quelques informations, mais j'ai vraiment du mal à saisir les concepts sous-jacents comme les règles de grammaire, les arbres d'analyse et l'arbre syntaxique abstrait, et comment ils sont liés les uns aux autres. A terme, ces concepts devront être stockés dans un programme réel, mais 1) à quoi ressemblent-ils, 2) existe-t-il des implémentations communes.
J'ai consulté Wikipédia sur ces sujets et des programmes comme Lex et Yacc, mais n'ayant jamais suivi de cours de compilation (spécialisation EE), j'ai du mal à comprendre pleinement ce qui se passe.
2 votes
Utile : Guide de l'analyse syntaxique : Algorithmes et terminologie