-
Notifications
You must be signed in to change notification settings - Fork 21
Структура дерева
Единица трансляции – последовательность определений функций или определений переменных до конца файла
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, doref, выражение-условие, оператор
Do, condref, оператор, выражение-условие
For, fromref, condref, incrref, stmtref, выражение-from, выражение-cond, выражение-incr, оператор
// если какая-то ссылка == 0, соответствующей части нет
Switch, выражение-условие, оператор
// все типы меток представляются отдельными узлами дерева
Label, identref
Case, Выражение
Default
Break
Continue
Returnvoid
Returnvalue, L, выражение-значение
L – количество слов в значении
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