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

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

  1. Добавить в язык префиксные операции увеличения ++ и уменьшения -- и операции +=, -=, *=, /=, ^=, **=.
  2. Добавить в язык логические переменные и константы и их использование в условных выражениях. Пример:
        p = false;
        e = (x % 2 == 0);
        if (!p && x > 100)
            p = true;
        endif
    
  3. Добавить в язык цикл "for" в стиле языка C/C++.
        a = range(1, 101);
        s = 0;
        for (i = 0; i < n; i = i + 1)
            s = s + a[i];
        endfor
    
  4. Добавить в язык цикл "for" в стиле языка Python3.
        a = range(1, 101);
        s = 0;
        for (x in a)
            s = s + x;
        endfor
    
  5. Добавить возможность задания массивов (= списков) в стиле языка Haskell. Примеры:
        a = [1..5];         # a == [1, 2, 3, 4, 5]
        b = [1, 3..10];     # b == [1, 3, 5, 7, 9]
        c = [15, 12..1];    # c == [15, 12, 9, 6, 3]
    
  6. Добавить возможность задания массивов (= списков) в стиле языка Python с использованием list comprehension. Примеры:
        a = [x for x in range(1, 6)]; # a == [1, 2, 3, 4, 5]
    
        b = [[x, x^2, x^3] for x in range(1, 6)];
        # b == [[1, 1, 1], [2, 4, 8], [3, 9, 27], [4, 16, 64], [5, 25, 125]]
    
        c = [x for x in range(1, 10) if (x%3 != 0)];
        # c == [1, 2, 4, 5, 7, 8]
    
  7. Добавить в язык метки (только у пустого оператора!) и оператор goto. Пример:
        while (x > 0)
            while (y < 100)
                . . .
                if (x == y) goto LExit;
                . . .
            endwhile
            . . .
        endwhile
        LExit: ;
    
  8. Добавить в язык оператор switch:
        switch (произвольное выражение)
            case const1:
                ...
            endcase
            case const2:
                ...
            endcase
            . . .
            default:
                ...
            enddefault
        endswitch
    
  9. Добавить в язык классы в стиле языка Python.