Форум программистов, компьютерный форум CyberForum.ru

Реализация while в своем компиляторе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сделать функцию, которая принимает двумерный массив и возвращает индексы его максимального элемента(номер строки и столбца), с указателями, С++ http://www.cyberforum.ru/cpp-beginners/thread793027.html
Сделать функцию, которая принимает двумерный массив и возвращает индексы его максимального элемента(номер строки и столбца), с указателями, С++
C++ Сделать функцию, которая принимает одномерный массив и возвращает индексы его максимального и минимального элементов, с указателями. С++ Сделать функцию, которая принимает одномерный массив и возвращает индексы его максимального и минимального элементов, с указателями. С++ http://www.cyberforum.ru/cpp-beginners/thread793026.html
Цикл: Найти и напечатать все простые числа, меньше 100 C++
Надо написать программу, которая находит и печатает все простые числа меньше 100, дайте, пожалуйста, пример, от которого можно отталкиваться. Заранее спасибо.
Определить число в последовательности цифр C++
Определить, есть ли в последовательности цифр число, например 13. Я рассуждал это так: Нужно взять в числе первую цифру и сравнить ее со следующей цифрой, если нет взять вторую и сравнивать со следующей, и так далее пока не будет достигнута условие.
C++ Двусвязный список http://www.cyberforum.ru/cpp-beginners/thread792977.html
Вот решил написать двусвязный список. Написаны только две функции решил попробовать работает или нет, оказалось, что нет. Компилятор почему-то здесь выдает ошибку, но я не понимаю почему. p->next = p1; list.h #ifndef list_h #define list_h class list { public: list(){head = new (node); head->next = NULL;}
C++ Почему поток записи в файл wofstream ничего не пишет? VisualStudio2012, Win7x64Prof Если запись в файл производить в той же функции, где созданы объекты потоков, то запись происходит нормально. Но если потоки создать отдельно, а потом передавать их в качестве параметров в функцию, то запись не производится, а после метода close() устанавливается флаг ошибки. int Fill(std::wofstream *const pfw_S, std::wofstream *const pfw_P) { //создадим... подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
28.02.2013, 16:44     Реализация while в своем компиляторе
Kuzia domovenok, трансляция-не трансляция, а порядок вычислений в интерпретаторе (а в конечном итоге и суть) будет именно такой. Ведь интерпретатор не может вот так сходу интерпретировать, ему надо построить если не полное, то хотя бы промежуточное AST. Трёхадресный код для этого дела подходит как нельзя кстати. Интерпретатору в любом случае придётся запомнить место, с которого начался цикл (метка 1), вычислить условие (а вычисление это так и так прямо или косвенно выльется в построение AST для выражения) (<boolean-value>), последовательно вычислить все инструкции тела цикла (аналогично с условием, путём построения деревьев, хотя, может, и не в явной форме), найти конец цикла и вернуться на запомненное ранее место (метка 1), после чего повторить всё сначала. Единственное, чего совсем уж тупой интерпретатор может не делать - это запоминание конца цикла (метка 2), а при невыполнении условия продолжения просто пропустить все инструкции в теле, хотя запоминание это, выполни он его, может хорошо сказаться на скорости вычислений (относительной, ведь об интерпретаторе речь).
Так что о промежуточном представлении кода говорить никогда не бессмысленно, коль дело касается какой бы то ни было трансляции (прямой или косвенной).
С другой стороны, ТС в стартовом посте сказал "компилятор". Если это так, то речь о трансляции становится ещё более осмысленной.
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ибо её тут и близко нет
Не стоит быть столь категоричным. Если вы не видите её в интерпретаторах в явном виде, это не значит, что её там нет.
 
Текущее время: 11:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru