Устранение неполадок приращения цикла в интерпретаторе C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Устранение неполадок приращения цикла в интерпретаторе C++

Сообщение Anonymous »

Пытаюсь выяснить, почему мой цикл не работает для моего интерпретатора. Это оператор выражения, который я тестирую: "for (int i = 0; i < 10; i = i + 1) { radiate i; }" У меня есть анализатор сверху вниз, который использует контекстно-свободную грамматику универсальный, который отлично анализирует синтаксис цикла. Мой интерпретатор - это обходчик по дереву, посещающий определенные узлы. Пример: двоичный, унарный, группировка, литерал, печать, переменная, если, блок и пока. Итак, когда сюда доберется мой переводчик:

Код: Выделить всё

void interpreter::visitWhileStmt(ContextFreeGrammar::While* stmt) {
Any res = evaluate(stmt->condition);
while (isTruthy(res)) {
execute(stmt->body);
}
return;
}
Вызовы res идентификатора в visitBinaryExpr, который оценивает i < 10;, который возвращает false. Эта часть имеет смысл. Но мой интерпретатор не увеличивает его до 10. Я считаю, что мне не хватает какой-то дополнительной логики


Подробнее здесь: https://stackoverflow.com/questions/792 ... nterpreter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»