Компилятор часто состоит из нескольких компонентов, один из которых является синтаксическим анализатором.
Общий набор компонентов в компиляторе:
- Lexer - разбить программу на слова.
- Parser - проверьте правильность синтаксиса предложений.
- Семантический анализ - убедитесь, что предложения имеют смысл.
- Оптимизатор - редактируйте предложения для краткости.
- Генератор кода - выводить что-то с эквивалентным семантическим значением, используя другой словарь.
<Ч />
Чтобы добавить немного:
Как упоминалось в другом месте, small C - это рекурсивный достойный компилятор, который генерирует код при его разборе. В основном синтаксический анализ, семантический анализ и генерация кода за один проход. Насколько я помню, он также лексирован в парсере.
Давным-давно я написал компилятор C (фактически несколько: семейство Introl-C для микроконтроллеров), который использовал рекурсивное приличное и выполнял синтаксическую и семантическую проверку во время синтаксического анализа и создавал древовидное представление программы, код которой был генерироваться.
Сегодня я работаю над компилятором , который выполняет исходный код -> токены -> AST -> IR -> код, в значительной степени, как я описал выше.