Форум программистов, компьютерный форум 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; подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16821 / 5242 / 318
Регистрация: 30.03.2009
Сообщений: 14,118
Записей в блоге: 26
08.07.2009, 14:39     Пишем свой интерпретатор языка BASIC
Цитата Сообщение от #pragma Посмотреть сообщение
1)Значит,будет класс,описывающий произвольный тип переменной.
Не тип переменной, а значение константы.

С переменными в этой части можно не заморачиваться и считать, что тип переменной есть текущее значение типа константы. Т.е. записали в переменную целое число, значит в этот момент переменная целая, записали плавающее - значит плавающая. Т.е. тип переменной по сути дела отсутсвует, существует только тип текущего значения. Либо считать, что при первой записи определяется тип переменной, а при дальнейших записях значение всегда будет сводиться к этоу типу. Либо явно в языке ввести тип переменной. На том бейсике, на котором я сто лет назад работыл было так, что A% - целая, A! - плавающая одинарной точности (float), A - плавающая двойной точности (double), A$ - строковая. Ты сам выбирай поведение, которое кажется тебе логичным, но первый вариант (когда тип переменной определяется по записанному в него значению), вроде бы наиболее прост в реализации и начать можно с него. А потом переделать (тоже полезный опыт по переделыванию)

Цитата Сообщение от #pragma Посмотреть сообщение
2)Сами функции рекурсивного спуска будут возвращать объект класса,а все ошибочные ситуации обрабатываются внутри самого объекта.
Грубо говоря да (только "экземпляр класса", а не "объект класса"). Но только в той части синтаксического разбора, где идёт вычисление выражения. Понятно, что по результату разбора Statement'а ничего этого не нужно

Цитата Сообщение от #pragma Посмотреть сообщение
3)Конструктор,я полагаю,будет принимать готовую строку,плюс логическое значение(зависит от TOKEN_CONST_***),(или сам токен),которое передаётся в переменную is_float,которое,в свою очередь,влияет на работу конструктора.Но в принципе можно сделать 3 конструктора просто для удобства.
Ога, только вариант "или сам токен" не годится, ибо модуль констант не должен зависеть от каких-либо enum'ов парсера. Т.е. два параметра: строка и bool (означающий плавающее или целочисленное). Вообще концептуально честно вместо bool ввести enum { CONST_VAL_INT, CONST_VAL_FLOAT }, а затем может придётся добавить туда ещё и строковые константы, могут понадобиться и булевские константы. Т.е. вариант с enum'ом выглядит более логично для дальнейшего развития

Цитата Сообщение от #pragma Посмотреть сообщение
Поскольку ты написал,что не стоит заморачиваться с памятью,я так понимаю,что во-первых,каждый объект будет создаваться в динамической памяти,но не понимаю,зачем это нужно,разве не достаточно локальных копий во время рекурсии(?)
Правильно, нужно создавать именно локалы. У меня почти отсутсвует практика работы на Си++, а потому мне интуитивно кажется, что в процессе перегрузки операторов создаются новые объекты. Хотя вроде бы должно быть без этого

Цитата Сообщение от #pragma Посмотреть сообщение
во-вторых,я думаю,там будет какой-то автоматический сборщик мусора,а как это реализовать,я понятия не имею(пока),я просто немного знаком с темой классов и немного с темой динамической памяти.
Всё будет создаваться в локальных объектах, так что удаляться будут автоматически

Цитата Сообщение от #pragma Посмотреть сообщение
Зачем будет нужен конструктор-копировщик,пока для меня тоже загадка.
Опять-таки следствие моей работы на Си, а не Си++, может он и не нужен (т.е. компилятор сам его построит правильно). Смысл примерно такой. Экземпляры класса MyConst будут рожаться только при непосредственном вызове конструктора, при построении операций и возврате из процедуры. Чтобы не оставлись просто висячие локальные объекты, в которые ничего не записано (ибо мы будем иметь константу без значения). Хотя можно ввести дополнительный признак, проинциализирована константа значением или нет. Всё это мудодейство нужно лишь с одной целью - внутренний контроль при написании интерпретатора. Чем больше контроля, тем быстрее будут находиться ошибки

Цитата Сообщение от #pragma Посмотреть сообщение
правда пишу код в Linux
Отлично. Значит с командной строкой ты более-менее дружишь. Значит проще будет создать систему тестирования (ну это в будущем, когда хоть что-то более-менее заработает нормально). Да и установить svn в этом случае не помешало бы, но настроитьего именно в варианте работы с сетью (обращаться через 127.0.0.1) и под отдельным пользователем - чтобы случайно репозиторий не грохнуть
 
Текущее время: 08:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru