Запись THPDFContentSyntaxNode
Представляет один компактный узел синтаксического дерева content stream с сохранением токенов, со связанными дочерними узлами и диапазонами лексем
Объявление
THPDFContentSyntaxNode= record
Kind: THPDFContentSyntaxNodeKind;
ParentIndex: Integer;
FirstChildIndex: Integer;
LastChildIndex: Integer;
NextSiblingIndex: Integer;
ChildCount: Integer;
FirstLexemeIndex: Integer;
LastLexemeIndex: Integer;
OperatorLexemeIndex: Integer;
StartOfs: Integer;
EndOfs: Integer;
end;
Модуль
HPDFContentStream
Поля
| Поле | Назначение |
|---|---|
Kind | Класс узла: csnkRoot, csnkOperation, csnkOperand, csnkArray, csnkDictionary, csnkProcedure, csnkInlineImage или csnkMalformed |
ParentIndex | Индекс родительского узла, -1 когда родитель не задан |
FirstChildIndex | Индекс первого дочернего узла, -1 когда у узла нет детей |
LastChildIndex | Индекс последнего дочернего узла |
NextSiblingIndex | Индекс следующего соседнего узла, -1 в конце списка детей |
ChildCount | Число непосредственных дочерних узлов |
FirstLexemeIndex | Первая лексема, покрываемая узлом в массиве лексем |
LastLexemeIndex | Последняя лексема, покрываемая узлом |
OperatorLexemeIndex | Лексема с оператором узла операции, -1 для других видов узлов |
StartOfs | Смещение в байтах, где начинается исходный диапазон узла |
EndOfs | Смещение в байтах сразу за исходным диапазоном узла |
Примечания по использованию
- Узлы операций владеют своими операндами и указывают лексему оператора отдельно через
OperatorLexemeIndex - Узлы-контейнеры сохраняют вложенные массивы, словари и процедуры без нормализации исходного написания, поэтому правки остаются с сохранением токенов
- Читайте узлы через
THPDFContentStreamAST.GetNode, не трогая внутренний массив узлов напрямую