Практикум по созданию языков и компиляторов 2013-2014

Задачи курса

expr
Создать combined grammar для арифметических выражений с +, -, *, /, скобками, возведением в степень, унарный минусом, double и символьными константами PI и E.

Материалы: http://tswr.ru/44/CC_S01E01

calc
Расширить пример с калькулятором, построенном на патерне визитора, дополнив его полным арсеналом арифметических операций и возможностью объявления и использования переменных.

Материалы: http://tswr.ru/45/CC_S01E02

2scheme
Создать при помощи listener'а транслятор микроязыка с переменными, арифметическими выражениями и вводом-выводом в scheme.

Пример
Вход:

read a
b = a - 1
display a ** b * (-a + 2 * b + b / 2 - 1)
read c
display a + c

Выход:

(define a (read))
(define b (- a 1))
(display (* (expt a b) (- (+ (- a) (* 2 b) (/ b 2)) 1)))
(define c (read))
(display (+ a c))

Материалы: http://tswr.ru/46/CC_S01E03

2scheme (ast)
Создать с использованием AST + tree grammar транслятор микроязыка с переменными, арифметическими выражениями и вводом-выводом в scheme.

Материалы: http://tswr.ru/47/CC_S01E04

2class
Создать полноценный компилятор из своего языка с переменными, арифметическими операциями, вводом и выводом в java class файл.

Материалы: http://tswr.ru/49/CC_S01E05

conditional
Добавить в язык if, while, for, сравнения, логические операции.

error
Сделать подробные сообщения об ошибках с указанием точного места ошибки.

functions
Добавить в свой язык функции.