В цикле код должен выполняться несколько раз (обычно).Таким образом, он не может быть выполнен так, как он анализируется, поскольку он анализируется только один раз.
Аналогично, в условных выражениях цель (и) выполняются один или ноль раз, но анализируются ровно один раз.Тот, который выполняется ноль раз, явно не может быть выполнен, поскольку он анализируется;это будет слишком много выполнений, как вы заметили.
Таким образом, вы должны записать результат анализа, в виде синтаксического дерева, в виде трехадресного кода или каким-либо другим способом, а затем выполнить программутолько после того, как он был полностью проанализирован.