Форум программистов, компьютерный форум, киберфорум
Наши страницы

Пишем свой интерпретатор языка BASIC - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Меню и список http://www.cyberforum.ru/cpp-beginners/thread41194.html
Здравствуйте форумчане. Помоги пожалуйста в следующем вопросе: У меня есть 2связный список, написано меню. Но в моменте когда написано make a list и delete custom необходимо чтобы выводились:...
C++ Здравствуйте! Не могу поместить class в один файл с программой. file.hpp #include "Cat.hpp" // здесь классы "2)" Cat::Cat(int initialAge) { itsAge = initialAge; } Cat::~Cat() { http://www.cyberforum.ru/cpp-beginners/thread41186.html
Массивы строк C++
Привет всем! Задан массив строк. Как узнать который символ встечаетса найбольшое количество раз в етом массиве?
C++ вывод на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер
Please, help me!!! Вот текст программы, которая выводит на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер только квадратов. Проблема в том, что необходимо...
C++ Округление дробного числа до целого в большую сторону. http://www.cyberforum.ru/cpp-beginners/thread41139.html
Доброго дня. Я новичок в программирование на Visual C++. Проблема такая программа должна считать кол-во месяцев, если числа целые то программа шла дальше, если дробное то (например 3.33333) ...
C++ Код из Delphi в C++ Нужно написать курсовую на C++. Сам я в программировании плохо шарю (не программист). Попросил у народу помощи, помогли. Но решение на Delphi: {$APPTYPE CONSOLE} type byteset=set of byte; ... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18242 / 6367 / 435
Регистрация: 30.03.2009
Сообщений: 17,614
Записей в блоге: 28
28.09.2009, 09:31
Цитата Сообщение от #pragma Посмотреть сообщение
C++
1
array[a][b][c] = linear_array[a*y*z + b*z + c]
И получается вроде как нужно вычесть единицу из каждого индекса при умножении... Ну я как-нибудь соберусь с мыслями и сделаю :/
Да. В правой части должно быть "linear_array[(a-1)*y*z + (b-1)*z + (c-1)]". А в общем случае надо вычитать стартовый индекс (который по умолчанию равен 1, но по синтаксису можно задавать самому)

Цитата Сообщение от #pragma Посмотреть сообщение
Я вот незнаю,а как лучше сделать выключающуюся поддержку проверки неинициализированных переменных: через параметр командной строки,или через перекомпиляцию с помощью препроцессора? В принципе,и тот и другой вариант можно оправдать.Командная строка - удобство,гибкость.Препроцессор - всё-таки это не стандартная версия QBASIC,и вроде как надо перекомпилить,да и бинарник уменьшит,хоть и ненамного.Хотя стандартная версия всё равно не получится,так вроде командная строка перевешивает.Как считаешь?
Любая пользовательская настройка должна быть в виде опции. ТОлько поведение на мой взгляд надо инвертировать. По умолчанию работать так, как принято в бэйсиках, а по опции - ломаться на неинициализированных данных. Эта опция - по сути дела отладочное средство. Технически удобнее всего делать так, что в момент заведения новой переменной ей сразу прописывать нулевую инициализацию

Цитата Сообщение от #pragma Посмотреть сообщение
Ещё есть вопрос про FOR: по идее,эту инструкцию тоже можно отнести к Conditional Branch,но нужно тогда правильно сгенерировать условие,так? Я имею в виду,что условие придётся генерировать как-то вручную,ведь это не стандартное выражение,а ещё как-то вручную добавить в конце блока новый LET чтобы менял значение счётчика на нужную величину.Или всё таки лучше делать FOR как отдельную конструкцию?
Да, нужно сгенерировать правильный набор операций сравнений, условных переходов и т.п. Т.е. при поддержке FOR'а изменения вносятся только в синтаксический разборщик. В промежуточном представлении и интерпретаторе не надо делать ничего. Имено поэтому такой вид промежуточного представления даёт дополнительные бонусы: т.е. многие сложные высокоуровневые конструкции реализуются через один и тот же маленький набор низкоуровневых примитивов

Т.е. промежуточное представление для

PureBasic
1
2
3
for i=1 to 10 step 2
  <тело цикла>
next i
должно выглядеть точно так же, как для

PureBasic
1
2
3
4
5
let i=1
while i<=10
  <тело цикла>
  let i=i+2
wend
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru