Ich suche nach einer klaren Definition dessen, was ein "Tokenizer", "Parser" und "Lexer" sind und wie sie miteinander zusammenhängen (z. B. verwendet ein Parser einen Tokenizer oder umgekehrt)? Ich muss ein Programm erstellen, das c / h-Quelldateien durchläuft, um Datendeklarationen und Definitionen zu extrahieren.
Ich habe nach Beispielen gesucht und kann einige Informationen finden, aber ich habe wirklich Mühe, die zugrunde liegenden Konzepte wie Grammatikregeln, Analysebäume und abstrakten Syntaxbaum zu verstehen und wie sie miteinander zusammenhängen. Letztendlich müssen diese Konzepte in einem tatsächlichen Programm gespeichert werden, aber 1) wie sehen sie aus, 2) gibt es gemeinsame Implementierungen.
Ich habe mir Wikipedia zu diesen Themen und Programmen wie Lex und Yacc angesehen, aber da ich noch nie eine Compiler-Klasse (EE-Major) durchlaufen habe, fällt es mir schwer, vollständig zu verstehen, was los ist.