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

Пишем свой интерпретатор языка 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; ... подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
954 / 225 / 6
Регистрация: 12.04.2009
Сообщений: 921
21.12.2009, 23:33  [ТС]
Выглядит неплохо - простенько,аккуратно и со вкусом. Мне понравилось. Я так быстро не умею
Кое-какие ньюансы(мелочи): если можно,добавь нужные регекспы для отображения текста более красочно,но,в принципе,если неохота,я доделаю.
Комментарии наверное лучше чтобы становились серыми и с наклоном,как в С++,так лучше воспринимается основной текст,когда кореллирует с другим стилем.
Ещё такую мелочь заметил:когда открывается окно программы,по умолчанию открывается поле нового файла,что,в принципе,верно,но если пользоваетль решает сразу открыть готовый исходник,то его лучше загружать в это же поле,так как оно остаётся висеть вкладкой просто так.
Осталось только доделать эмулятор терминала,чтобы похож был на xterm и cmd (просто для подражания )
Ещё надо будет как-то сделать обработку ошибок интерфейсом,чтобы строку выделял цветом,или что-то навроде того,как я делал. В принципе,можно опираться на вывод интерпретатора,при ошибках он выведет строку,которая содержит слова "line: error:" и между ними должен быть номер строки. Там,правда,могут быть ньюансы с длинными путями,я не знаю,что будет,если длина строки окажется больше 255 символов.
А так вообще всё классно! Иконки лучше ставить из твоего варианта,они менее агрессивны,и более приятны глазу,только нужно найти подходящие для run и interpret.

Добавлено через 14 минут
Нашел,где была ошибка,отправлю правку позже:
кусок кода из syntax.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  static expr_Node_t *syntax_IdentRValueInput ()
  {
     s_count pos = source.tellg();
     string name = ::parser_CurTokenStr;
     size3 i = FindNameOverVector (name,defined_vars);
     size3 j = FindNameOverVector (name,defined_arrays);
     if (i < 0 && j < 0)
     {
        if (parser_GetToken() == TOKEN_LEFT_PARENTH)
           error(UNDEFINED_ARRAY,name);
        source.seekg(pos);
        Types t;
        switch (name.at(name.size()-1)) // name вместо ::parser_CurTokenStr
        {
           case '%': t = INT;   break;
           case '&': t = LINT;  break;
           case '!': t = FLOAT; break;
           case '#': t = DOUBLE;break;
           case '$': t = STRING;break;
           default : t = INT;   break;
        }
        Value zero("0",t);
        Variable *var = memalloc(var,name); // name вместо ::parser_CurTokenStr
        defined_vars.push_back(var);
        defined_vars.back()->SetValue(zero);
        return expr_NewVariable(&name,t); // name вместо ::parser_CurTokenStr
     }
// Ну и надо ещё будет проглядеть,там могут быть ещё недочеты подобного рода


Добавлено через 12 минут
Ещё есть такая идея - сделать(опционально) автоотступ и показывать вертикалную линию после 80 знаков на строку для того,чтобы в результате код мог с удобством просматриваться в консоли,не требуя перемотки вправо .
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru