Форум программистов, компьютерный форум 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
16843 / 5264 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
09.10.2009, 17:07     Пишем свой интерпретатор языка BASIC
Всё равно проблему не понял

PureBasic
1
2
3
4
5
6
7
IF A=1 THEN
  LET B=100
ELSEIF A=2 THEN
  LET B=200
ELSE
  LET B=300
END IF
На уровне представления эквивалентно коду

PureBasic
1
2
3
4
5
6
7
8
9
IF A=1 THEN
  LET B=100
ELSE
  IF A=2 THEN
    LET B=200
  ELSE
    LET B=300
  END IF
END IF
Добавлено через 2 минуты
Мой нынешний вариант
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
static void
syntax_StatementIF (void)
{
  expr_Expr_t *cond_expr;
  stmt_Statement_t *label_then, *label_else, *label_finish;
 
  /* На текущий момент IF уже прочитано. Читаем следующий символ */
  lex_GetToken ();
 
  /* Метка окончания конструкции (на неё будет сделан переход в конце каждой
   * из альтернатив) */
  label_finish = stmt_NewStatementLabelEmpty ("#finish");
 
  /* Условие перехода и условный переход. Переход будет "вперёд", так что
   * сразу же создаим висячие метки для альтернатив */
  cond_expr = syntax_CondExpr ();
  label_then = stmt_NewStatementLabelEmpty ("#then");
  label_else = stmt_NewStatementLabelEmpty ("#else");
  stmt_NewStatementCBranch (cond_expr, label_then, label_else);
 
  /* THEN */
  syntax_Expect (LEX_TOKEN_KW_THEN);
 
  if (lex_CurToken != LEX_TOKEN_EOL)
    {
      /* Однострочный вариант записи. В этом случае пустых альтернатив быть
       * не может. Есть THEN и обязан быть код по THEN. Если есть ELSE,
       * то обязан быть код по ветке ELSE */
 
      /* Метка #then, затем операторы по ветке THEN, затем переход на метку #finish */
      stmt_LinkEmptyLabel (label_then);
      syntax_NecessarySimpleStatementList ();
      stmt_NewStatementBranch (label_finish);
 
      /* Метка #else, затем операторы по ветке ELSE (если они есть) */
      stmt_LinkEmptyLabel (label_else);
      if (lex_CurToken == LEX_TOKEN_KW_ELSE)
        {
          lex_GetToken ();
          syntax_NecessarySimpleStatementList ();
          stmt_NewStatementBranch (label_finish);
        }
    }
  else
    {
      /* Многострочный вариант записи. В данном случае по альтернативе
       * могут быть и пустые строки */
 
    Then:
      /* EOL */
      syntax_Expect (LEX_TOKEN_EOL);
 
      /* Метка #then, затем операторы по ветке THEN, затем переход на метку #finish */
      stmt_LinkEmptyLabel (label_then);
      syntax_ComplexStatementList ();
      stmt_NewStatementBranch (label_finish);
 
      /* Метка #else, относящаяся к последнему сравнению */
      stmt_LinkEmptyLabel (label_else);
 
      /* В случае наличия ELSEIF по большому счёту повторяем код для IF'а,
       * единственно, что уже не допускаем однострочной записи. Веток ELSEIF
       * может быть несколько штук */
      if (lex_CurToken == LEX_TOKEN_KW_ELSEIF)
        {
          lex_GetToken ();
 
          /* Текущий условный переход. Метки label_then и label_else будут
           * воткнуты уже после исполнения 'goto Then' (см. ниже) */
          cond_expr = syntax_CondExpr ();
          label_then = stmt_NewStatementLabelEmpty ("#then");
          label_else = stmt_NewStatementLabelEmpty ("#else");
          stmt_NewStatementCBranch (cond_expr, label_then, label_else);
 
          /* THEN */
          syntax_Expect (LEX_TOKEN_KW_THEN);
 
          /* Далее повторяем код для THEN от IF, т.к. для ELSEIF всё то же самое */
          goto Then;
        }
 
      /* Альтернатива по ветке ELSE может и не присутсвовать */
      if (lex_CurToken == LEX_TOKEN_KW_ELSE)
        {
          lex_GetToken ();
          syntax_Expect (LEX_TOKEN_EOL);
          syntax_ComplexStatementList ();
        }
 
      /* END IF */
      syntax_Expect (LEX_TOKEN_KW_END);
      syntax_Expect (LEX_TOKEN_KW_IF);
    }
 
  /* Метка #finish */
  stmt_LinkEmptyLabel (label_finish);
} /* syntax_StatementIF */
 
Текущее время: 00:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru