Форум программистов, компьютерный форум 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
05.08.2009, 09:03  [ТС]     Пишем свой интерпретатор языка BASIC
Цитата Сообщение от Evg Посмотреть сообщение
Как у тебя реализованы IF'ы? То, что ты ввёл FI, даёт мне повод заподозрить, что одну из альтернатив ты просто пропускаешь без разбора. А потому, если в пропущенной альтернативе есть синтаксическая ошибка, то ты её в этот момент не поймаешь. А поймаешь только тогда, когда исполнение пойдёт по этой альтернативе. Сие означает, что твоя программа, содержащая синтаксическую ошибку, может довольно долго работать (к примеру, несколько дней), но потом сломаться из-за досадной опечатки. Понятно, что для тренировочной программы это мелочь, но вообще проблема серьёзная.
Да,это я заметил и мне это тоже очень не нравится.Вывод-интерпретатор должен только проверять синтаксис,но не выполнять саму программу,а переносить её в некое промежуточное состояние,уже после которого программа выполняется.Я поспрашивал людей,кто писал примеры компиляторов,говорят,что сначала интерпретация,потом программа транслируется в байт-код,а уже потом выполняется.Но как это сделать,я понятия не имею.То есть получается,что весь подход изначально был неверный? Интерпретатор,получается,должен только проверять синтаксис и выдавать ошибки,параллельно с написанием промежуточного кода,и после того,как пройдётся по всему коду,передавать управление следующему блоку?
Цитата Сообщение от Evg Посмотреть сообщение
Добавлено через 1 час 52 минуты 30 секунд
На текущий момент мне видится следующий порядок действий (именно в таком порядке):
  1. Учимся работать с svn. Если ты ещё не перешёл на хранение исходников под управлением svn.
  2. Делаем тестовый пакет с автоматическим запуском и проверкой. Ты уже успел заметить, что после некоторых твоих правок у тебя протухла работа ELSE. Чтобы такого не происходило в дальнейшем, нужно ставить на контроль функциональность твоего интепретатора. Если пояснить на пальцах, то, например, имеем несколько тестовых исходников на бейсике, в которых делается некая контрольная печать, по которой можно сделать вывод о правильной работоспособности той или иной конструкции. Есть эталонная печать. Тестирование заключается в запуске всех тестов и сравнении выдачи с эталонной. Догадываюсь, что этим заниматься лениво, особенно сейчас, но без этого ты не сможешь удерживать стабильность работы интерпретатора
  3. Обсуждаем дальнейшую внутреннюю структуру интерпретатора. Сейчас у тебя наконец появилось общее понимание того, как работает интерпретатор, а потому уже можно приступать к обсуждению. Проблема сам понимаешь какая: построение работы таким образом, чтобы наиболее просто работать с НЕпоследовательной интерпретацией
  4. Реализация базы интерпретатора. Т.е. строим все управляющие конструкции: IF, FOR, GOTO, WHILE, функции. После чего нужно окинуть критическим взглядом реализованное и начать наводить порядок. Потому как дальнейшее развитие поддержки языка будет, в основном, лишь в части добавления новых операторов, базовая часть при этом, скорее всего, останется в неизменном виде (если опять не возникнет желания навести порядок). В том числе будем разбираться и с динамической памятью (в чём заключается проблема, я пока не понял)
С svn я уже работаю с момента создания мной темы про эту систему.Сделал репозиторий на локальной машине,и обращаюсь не как к серверу,а просто через file:/// .Со скриптами придётся почитать маны,я умею делать простейшие скрипты для загрузки,но что-то более сложное пока не пробовал.
ELSE я починил,дело было не в самой инструкции,а в неправильном алгоритме пропуска фигурных скобок в WHILE. Поэтому я сделал ключевое слово LOOP.Но вообще,со всем этим пропуском без проверки реальная проблема.

Добавлено через 15 минут 16 секунд
Насчёт Makefile я сделал тему http://www.cyberforum.ru/cpp-linux/thread46096.html надеюсь,никто не огорчится, в гугле ведь тоже много чего есть на эту тему,но то,что ты говоришь,довольно специфично..
 
Текущее время: 14:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru