Table of contents
- Определение функции
- Определение переменной
- Выражение
- Выражение с присваиванием
- Условное выражение
- Составной оператор
- Условный оператор
- Цикл While
- Цикл Do
- Цикл For
- Оператор выбора
- Метка
- Метка Case
- Метка default
- Оператор break
- Оператор continue
- Оператор return
- Оператор return со значением
- Оператор goto
- Идентификатор
- Константа
- Константа строка
- Вырезка
- Вызов
- Печать
- Печать значения идентификатора
- Ввод значения идентификатора
- Запуск мотора
- Приостановка
- Снять показания аналогового датчика
- Снять показания цифрового датчика
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Единица трансляции – последовательность определений функций или определений переменных до конца файла
Определение функции
Funcdef, identref, maxdispl, составной оператор
// латинскими буквами обозначаются названия узлов дерева
// identref – ссылка на таблицу идентификаторов
Определение переменной
Declarr, N, N выражений, если переменная или в ее структуре есть массив
Declid, displ, type_elem, N, all, iniproc, дальше м.б. инициализатор
// displ – смещение переменной-массива
// type_elem – тип переменной или тип элемента, если это массив
// N – размерность, N == 0, значит, скаляр all == 0, то выражения инициализации нет
// Инициализатор скаляра – просто выражение, а инициализатор массива – all выражений
// iniproc – адрес инициализирующей процедуры
Выражение
Последовательность Выражений с присваиванием
Выражение с присваиванием
Линейная обратная польская запись из идентификаторов, констант, вырезок, вызовов, унарных и бинарных операций, TExprend
Условное выражение
Выражение-условие, Condexpr, thenref, elseref, выражение-then, выражение-else или снова выражение условие и Condexpr
Если выражение-then имеет тип int, то за ним следует узел NOP, который в процессе генерации кода может исчезнуть, а может замениться на WIDEN
Составной оператор
Begin, последовательность определений переменных и операторов, End
Условный оператор
If, thenref, elseref, выражение-условие, оператор-then, оператор-else
// если elseref == 0, оператора-else нет
Цикл While
While, doref, выражение-условие, оператор
Цикл Do
Do, condref, оператор, выражение-условие
Цикл For
For, fromref, condref, incrref, stmtref, выражение-from, выражение-cond, выражение-incr, оператор
// если какая-то ссылка == 0, соответствующей части нет
Оператор выбора
Switch, выражение-условие, оператор
// все типы меток представляются отдельными узлами дерева
Метка
Label, identref
Метка Case
Case, Выражение
Метка default
Default
Оператор break
Break
Оператор continue
Continue
Оператор return
Returnvoid
Оператор return со значением
Returnvalue, L, выражение-значение
L – количество слов в значении
Оператор goto
Goto, identref
Идентификатор
Ident, identref
Константа
Const, num
// num – параметр, в котором целая константа
Constd, num1, num2
// num1 и num2 – параметры, в которых вещественная константа
Константа строка
String, затем 0, 1 или много литер, затем 0
Вырезка
Sliceident, identref, Выражение-индекс или Slice, type_elem, Выражение-индекс
// type_elem – тип элемента
Вызов
Call1, N, выражения-параметры, Call2, – identref
// N – количество параметров
// Widen и Widen1 – это обычные унарные постоперации
Печать
Print, type
Печать значения идентификатора
Printid, identref
Ввод значения идентификатора
Getid, identref
Запуск мотора
Setmotor
Приостановка
Sleep
Снять показания аналогового датчика
Getansensor
Снять показания цифрового датчика
Getdigsensor