Если вы имеете в виду, что print(3)
выполняется до оценки 2<3
, то это, безусловно, будет иметь место. Вы не можете написать интерпретатор, который немедленно оценивает каждое утверждение, потому что (если у вас есть условные выражения, циклы и т. Д.), Каждое утверждение не обязательно оценивается только один раз или даже один раз.
Оператор if
уменьшается только тогда, когда весь оператор был проанализирован, и весь оператор включает в себя предложение then
. Поэтому внутренний оператор должен быть проанализирован до синтаксического анализа оператора if
.
Так что немедленная оценка возможна только для простых калькуляторов. Все, что сложнее, должно преобразовать программу в некоторую структуру данных, которая может быть выполнена или обработана иным образом после завершения анализа.
Распространенным представлением анализируемой программы является абстрактное синтаксическое дерево (AST), которое будет выводом синтаксического анализатора.