Задачи на модификацию проекта
"Простой компилятор"

Курсивом и цветом выделены более трудные задачи.

  1. Добавить в язык префиксные операции увеличения ++ и уменьшения -- и операции +=, -=, *=, /=.
  2. Добавить в язык цикл "for".
  3. Добавить стандартные функции (sqrt, sin, cos, exp, pow, ...).
  4. Добавить в язык метки (только у пустого оператора!) и оператор goto. Пример:
         while (x > 0)
             while (x > 0)
                 . . .
                 if (x == y) goto LExit;
                 . . .
             endwhile
         endwhile
         LExit: ;
    
  5. Добавить в язык инициализацию переменных при описании. Пример:
        int x = 1, y = 2*x + 1, z; double EPS = 0.000001;
    
  6. Добавить запись промежуточного кода в файл, загрузку его из файла и исполнение интерпретатором.
  7. Добавить в язык функции и их вызов, а также глобальные переменные.
  8. Добавить в язык структуры. Пример:
        struct Point
            double x;
            double y;
        endstruct
    
        Point p, q;
        Point a[100];
        double x;
        . . .
        x = p.x - q.x;
        a[0] = p;
        a[33].y = 10.;
        q = a[1];
    
  9. Добавить в язык оператор switch:
        switch (целочисленное выражение)
            case const1:
                ...
            endcase
            case const2:
                ...
            endcase
            . . .
            default:
                ...
            enddefault
        endswitch
    
  10. Добавить в язык логические переменные и константы и их использование в условных выражениях. Пример:
        bool p, e; int x;
        . . .
        p = false;
        e = (x % 2 == 0);
        if (!p && x > 100)
            p = true;
        endif