Компилятор имеет 7 фаз следующим образом:
- Лексический анализ
- Синтаксический анализ
- Семантический анализ
- Промежуточная генерация кода
- Оптимизация кода
- Генерация кода
- Таблица символов
В процессе лексического анализа во время компиляции фрагмента кода не требуется возврата. Такая переменная, как Apple, компилятор сразу узнает свой идентификатор, когда встретит букву «А» на этапе лексического анализа. Однако такая переменная, как 123apple, компилятор не сможет решить, является ли ее число или идентификатор, пока он не достигнет «a», и ему необходимо вернуться назад, чтобы перейти на фазу лексического анализа, чтобы определить, является ли она переменной. Но это не поддерживается в компиляторе.
Когда вы анализируете токен, вам нужно только взглянуть на первый символ, чтобы определить, является ли он идентификатором или литералом, а затем отправить его правильной функции для обработки. Так что это оптимизация производительности.