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

Пишем свой интерпретатор языка 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
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
14.07.2009, 02:57  [ТС]
Кажется,до меня дошло,что ты хотел мне донести.В функции syntax_parserPrimary()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
            case TOKEN_IDENT: {
 
                int i = FindNameOverVector (::parser_CurTokenStr);
 
                if (i >= 0)
                {
                    // Если находим переменную,создаём константу с нужным
                    // значением,и возвращаем его.
                    Value v = initialized_vars.at(i).GetValue();
                    return v;
                }
                else
                {
                    // Если не находим,то создаём константу,                      
                    // приравниваем её к выражению,создаём переменную,
                    // передаём данные туда и возвращаем константу. 
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                   // Вместо того,что выше,видимо,должна быть ошибка инициализации.       
                }
            }
Я так понимаю,на данном этапе парсинга вообще не должно быть варианта else,а должна быть ошибка неинициализированной переменной. Потому что если мы встретим внутри выражения неинициализированную переменную,будет попытка её создания. Так же мы не можем знать,была ли эта находка новой переменной после ключевого слова LET или просто посередине строки.Поэтому,нужно,чтобы у stmnt_kw_LET() была своя ветка рекурсии. Я правильно понял?

Добавлено через 1 час 13 минут 50 секунд
P.S.Да,насчёт сообщения #47, я как-то пропустил,прочитал просто,но сейчас вник и согласен,лучше разделить всё это на функции (я про syntax_IdentLValue (void),syntax_IdentRValue (void) и syntax_Ident() ) ,то есть лучше следовать принципу "разделяй и властвуй",так понятнее код.Я это учту и переделаю.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru