|
"Кроха": описание синтаксиса языка ДЕПАК
- Язык ДЕПАК предназначен для демонстрации принципов трансляции программ с Паскаля на внутренний язык учебной ЭВМ "Кроха-М" (объем ОЗУ - 16 15-разрядных ячеек).
- ДЕПАК является сильно урезанной реализацией настоящего Паскаля. Всякая правильная программа на ДЕПАКе с точки зрения Паскаля также правильна и будет работать.
- Заглавные и строчные буквы в тексте программы не различаются.
- Все переменные в ДЕПАКе имеют только целые положительные значения, не превышающие 32767. Их имена состоят из одной латинской буквы. Описание переменных в программе всегда одно и имеет вид:
VAR <список перменных через запятую>: INTEGER;
Например:
VAR A,T,B,Z: INTEGER;
- Арифметические выражения в ДЕПАКе состоят не более чем из одного арифметического действия; скобки запрещены. Вид возможных арифметических выражений:
A const
A+B const+A A+const
A-B const-A A-const
A*B const*A A*const
A div B const div A A div const (деление нацело).
Формально разрешено действие над двумя числами типа
const1+const2 и т.п.
В приведенных выражениях A и B - имена переменных, а const1 и const2 - произвольные значения целых чисел в диапазоне 0-32767 включительно (см. п.3).
Примечание. Следует иметь в виду, что для сохранения положительности результата вычитание в ЭВМ "Кроха" заканчивается взятием модуля.
- Оператор присвоения имеет традиционный синтаксис:
<переменная>:=<арифметическое выражение>;
Арифметическое выражение должно удовлетворять требованиям пункта 5.
- Внутри всех конструкций языка (условный оператор, циклы) допускается использование составного оператора, заключенного между служебными словами BEGIN/END и состоящего из нескольких операторов присвоения. Например:
BEGIN X:=2*N;K:=X+1; END;
Разрешается писать один оператор внутри BEGIN/END, но отсутствие операторов между ними считается ошибкой. ; перед END ставить не обязательно.
- Условие может иметь вид:
<арифметическое выражение> <знак> <арифметическое выражение>
где <знак> - одно из следующих неравенств: = , <> , > , < , >= , <= , > .
- Условный оператор имеет вид:
IF <условие> THEN <оператор1> ELSE <оператор2>;
Операторы 1 и 2 могут быть только операторами присвоения (или составными)!!!
- Циклы могут быть записаны следующими способами:
WHILE <условие> DO <оператор>;
REPEAT <операторы> UNTIL <условие>;
FOR <переменная>:=<выражение> TO <выражение> DO <оператор>;
FOR <переменная>:=<выражение> DOWNTO <выражение> DO <оператор>;
Оператор в теле цикла может быть только оператором присвоения или составным!!!
ПРИМЕЧАНИЕ. Напомним, что в Паскале конструкция REPEAT/UNTIL одновременно служит ограничителями составного оператора. Поэтому в ДЕПАКе сочетание REPEAT BEGIN считается ошибкой.
- Для вывода результатов используется процедура
WRITELN(<переменная1>,<переменная2>,<переменная3>);
Количество выводимых на дисплей чисел обязательно равно трем! (допускается повторение одной и той же переменной). После WRITELN(); ОБЯЗАТЕЛЬНО ставится оператор остановки HALT; Подобные странности связаны с особенностью работы команды СТОП у "Крохи".
- Программа должна иметь следующую структуру:
PROGRAM <имя>;
VAR <список>:INTEGER;
BEGIN <операторы программы>
END.
Именем программы может служить любое сочетание символов до ";". <Список> представляет собой имена переменных, разделенных запятыми (см. пример в п.4).
- Разрешается использовать комментарии, заключая произвольный
текст в { }. Отмечающие комментарий скобки должны быть обязательно парными; внутри комментария символ { воспринимается как ошибка. Число и размер комментариев ограничен только наличием свободного места для текста.
© Е.А.Еремин, 1995
|