Я шукаю чіткого визначення того, що таке "токенізатор", "аналізатор" і "лексер" і як вони пов'язані один з одним (наприклад, чи використовує аналізатор токенізатор чи навпаки)? Мені потрібно створити програму буде проходити через вихідні файли c / h для витягування декларації даних та визначень.
Я шукав приклади і можу знайти деяку інформацію, але мені дуже важко зрозуміти основні поняття, такі як граматичні правила, розбір дерев та дерево абстрактних синтаксисів та те, як вони взаємодіють одне з одним. Врешті ці концепції потрібно зберігати у фактичній програмі, але 1) як вони виглядають, 2) чи є загальні реалізації.
Я переглядав Вікіпедію на такі теми та програми, як Lex та Yacc, але ніколи не пройшов клас компілятора (EE major), мені важко повністю зрозуміти, що відбувається.