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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Меню и список http://www.cyberforum.ru/cpp-beginners/thread41194.html
Здравствуйте форумчане. Помоги пожалуйста в следующем вопросе: У меня есть 2связный список, написано меню. Но в моменте когда написано make a list и delete custom необходимо чтобы выводились: Введите элемент и номер. вот сам код: #ifndef __list_h #define __list_h #include <iostream>
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!!! Вот текст программы, которая выводит на экран набор треугольников и квадратов, которые произвольно двигаются и меняют размер только квадратов. Проблема в том, что необходимо исправить код, чтоб фигуры не исчезали за экран (т.е. 640х460) и были компактным набором, т.е. двигались неменяя своего положения относительно друг друга и стукаясь об стенку экрана меняли свое...
C++ Округление дробного числа до целого в большую сторону. http://www.cyberforum.ru/cpp-beginners/thread41139.html
Доброго дня. Я новичок в программирование на Visual C++. Проблема такая программа должна считать кол-во месяцев, если числа целые то программа шла дальше, если дробное то (например 3.33333) программа не округляет это число (в большую сторону) до 4. Перелопатил тонны литературы, но пропустил или не нашёл этого, большая просьба написать функцию которая могла бы это делать, или способ какой.
C++ Код из Delphi в C++ Нужно написать курсовую на C++. Сам я в программировании плохо шарю (не программист). Попросил у народу помощи, помогли. Но решение на Delphi: {$APPTYPE CONSOLE} type byteset=set of byte; var d:array of longint; procedure c; var a,b,i:longint; подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
21.12.2009, 06:32  [ТС]
Да,я не против,если RazorQ хочет сделать - пожалуйста,предоставлю любой из возможных вариантов.Можно и в главной ветке,какая разница,всё равно есть ревизии и т.п.,и кроме того,я уже не планировал добавлять что-то в сделанный GUI,а просто доделать его,там,сделать окошко настройки пути к интерпретатору,чтобы запоминалось в файле .conf,ну и ещё кое-какие мелочи.
А насчёт функций я так представляю - можно добавить переменную-указатель(и) на текущую функцию во всех Statements,при разборе её стек будет подаваться параметром ( у меня уже есть функция проверки отдельных блоков,можно до слова RETURN,или END SUB, или END FUNCTION),туда будут писаться все переменные,а при интерпретации в run-time эти указатели будут использоваться для поиска переменных,и придачи им начальных значений. Придётся,конечно,перелопатить пол-программы,но основной структуры это коснуться не должно. Evg,твоё предложение наверняка более рациональное,но я пока в него не очень въехал,надо покумекать ещё

>могу помочь консультацией, советом, и на вопросы поотвечать
Ну вот,ещё желающий помочь,спасибо,выслушаю советы =),хотя наверное доделывать будет RazorQ

Добавлено через 5 часов 57 минут
Сейчас подумал,наверное,попробую сделать так:
Создаём таблицу функций.Минимальный размер таблицы единица и там будет создаваться главная функция.У неё глобальный стек переменных,массивов. Метки наверное стоит сделать только глобальными,но можно и локальные метки.В структуре Statements будет указатель на текущую функцию,в которой находится инструкция.
Потом по мере создания представления,если встречается слово SUB или FUNCTION,создаётся функция а также её стеки,и указатель на неё передаётся дальше при провязывании в список или ещё как-то.
Возможно,ещё придется где-то хранить указатель на предыдущую функцию,или просто переходить к предыдущей (они в одной таблице) после того как заканчивается построение представления для функции.Имя функции в программе - просто безымянная метка перехода на нужное место в памяти.
При вызове функции считаются начальные значения параметров,присваиваются нужным переменным,и далее интерпретация идёт как обычно,только с той разницей,что переменные берутся из локального стека. Правда придётся организовать какую-то "кучу",или как там это называется,чтобы при рекурсивном вызове все предыдущие значения переменных вызывающей функции запоминались,а после вычислений брались значения с самого "верха". Можно сделать общий для всех функций контейнер только для тех переменных,которые передаются параметрами,и в нём и складировать все их значения при рекурсии... Или не общий,а для каждой функции по спец.контейнеру. Вот.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru