-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcondition.txt
More file actions
63 lines (50 loc) · 4.83 KB
/
condition.txt
File metadata and controls
63 lines (50 loc) · 4.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Здравствуйте, Георгий,
язык, компилятор с которого Вам надо написать, будет следующий (перечисляются его возможности):
1) Поддерживаемые типы данных --- строки, целые числа. Переменные необходимо объявлять до первого использования, возможны локальные переменные (описанные в блоке).
Переменные объявляются так:
имя,имя,...:тип
Строки имеют тип string, числа --- integer. Кроме того, можно использовать ссылки (синонимы существующих переменных, синтаксис такой: имя_ссылки-->имя_той_перем_на_
которую_ссылка:тип)
2) Для построения выражений можно использовать числовые и строковые (в "") константы, а также следующие операции:
арифметические, операции сравнения, логические (0 --- false, 1 --- true), взятие символа из строки (номер ex строка).
3) Оператор присваивания выглядит как
чему := что
Здесь чему --- переменная, что --- выражение подходящего типа
4) Блок ограничивается ключевыми словами block и kcolb, в блоке допустимы описания переменных и другие операторы, разделенные точкой с запятой
5) Из управляющих конструкций имеются
а) условный оператор
if условие ==> оператор1 !=> оператор2
б) цикл, управляемый условием
while условие loop оператор pool
в) оператор goto метка (метка ставится в блоке между соседними операторами конструкцией
label метка)
6) оператор ввода read(куда) --- читает значение указанной переменной, оператор вывода write(что) --- выводит значение выражения, должен уметь выводить массивы.
7) можно определять свои функции и использовать их в выражениях
синтаксис определения функции таков:
имя_функции:тип_результата(список параметров) блок
параметры в списке описываются как обычные переменные, если они передаются по значению, и имя->:тип, если передавать нужно по ссылке
возврат значения --- return выражение
вызов -- как обычно (имя(выражения_параметры_через_запятую))
Компилировать программу нужно в ассемблер некоторой виртуальной машины, у которого имеются следующие команды:
STRING имя, строка
завести указанную строку с указанным начальным значением
INTEGER имя, число
аналогично для целых чисел
MOVE имя1, имя2
переписать содержимое переменной имя1 в переменную имя2
INDIR имя1, имя2
переписать содержимое переменной, чье имя содержится в переменной имя1 в переменную имя2
READ имя
WRITE имя
LABEL строка
поставить метку
GOTO имя
безусловный переход к метке, имя которой содержится в указанной переменной
BRANCH имя, метка
условный переход к метке, если указанный элемент указанного массива имеет значение 1
ADD имя1, имя2, имя3
сложение (для строк --- конкатенация)
аналогично SUB --- вычитание, MUL --- умножение, DIV --- деление, GT, GE, LT, LE, EQ, NE --- сравнение, AND, OR, NOT --- логические операции (у NOT только 4 параметра, а не 6).
IND имя, имя, имя
получить символ строки из указанной переменной по указанному индексу (второе имя должно быть именем переменной, содержащей число)
Д. М.