Составьте список полезных команд над
2. Придумайте синтаксис для APL-подобного языка для матричных вычислений, используя обычные символы.
3. Составьте список полезных команд над строками и сравните ваш список со встроенными командами языков Snobol и Icon.
4. Составьте список полезных команд над множествами и сравните ваш список со встроенными командами языка SETL.
5. Смоделируйте (универсальную) машину Тьюринга на нескольких языках программирования.
Глава 2
Элементы
языков программирования
2.1. Синтаксис
Как и у обычных языков, у языков программирования есть синтаксис:
Синтаксис языка (программирования) — это набор правил, которые определяют, какие последовательности символов считаются допустимыми выражениями (программами) в языке.
Синтаксис задается с помощью формальной нотации.
Самая распространенная формальная нотация синтаксиса — это расширенная форма Бекуса — Наура (РБНФ). В РБНФ мы начинаем с объекта самого верхнего уровня, с программы, и применяем правила декомпозиции объектов, пока не достигнем уровня отдельного символа. Например, в языке С синтаксис условного оператора (if-оператора) задается правилом:
if-onepamop :: = if (выражение) оператор [else оператор]
Имена, выделенные курсивом, представляют синтаксические категории, а имена и символы, выделенные полужирным шрифтом, представляют фактические символы, которые должны появиться в программе. Каждое правило содержит символ «:: =», означающий «представляет собой». Прочие символы используются для краткости записи:
[ ] Не обязательный {} Ноль или более повторений | Или
Таким образом, else-оператор в if-операторе не является обязательным. Использование фигурных скобок можно продемонстрировать на (упрощенном) правиле для объявления списка переменных:
Объявление-переменной ::= спецификатор-типа идентификатор {, идентификатор};