Înregistrarea THPDFContentSyntaxNode
Reprezintă un nod compact din arborele sintactic al fluxului de conținut care conservă tokenurile, cu copii legați și intervale de lexeme
Declarație
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;
Unitate
HPDFContentStream
Câmpuri
| Câmp | Scop |
|---|---|
Kind | Clasa nodului: csnkRoot, csnkOperation, csnkOperand, csnkArray, csnkDictionary, csnkProcedure, csnkInlineImage sau csnkMalformed |
ParentIndex | Indicele nodului părinte, -1 când nu este setat niciun părinte |
FirstChildIndex | Indicele primului nod copil, -1 când nodul nu are copii |
LastChildIndex | Indicele ultimului nod copil |
NextSiblingIndex | Indicele următorului frate, -1 la sfârșitul unei liste de copii |
ChildCount | Numărul de noduri copil directe |
FirstLexemeIndex | Primul lexem acoperit de nod în array-ul de lexeme |
LastLexemeIndex | Ultimul lexem acoperit de nod |
OperatorLexemeIndex | Lexemul care conține operatorul unui nod de operație, -1 pentru celelalte tipuri de noduri |
StartOfs | Offset în octeți unde începe intervalul din sursă al nodului |
EndOfs | Offset în octeți imediat după intervalul din sursă al nodului |
Note de utilizare
- Nodurile de operație își dețin operandele și identifică separat lexemul operatorului prin
OperatorLexemeIndex - Nodurile container păstrează arrayurile, dicționarele și procedurile imbricate fără să normalizeze scrierea originală, deci editările rămân conservatoare la nivel de token
- Citiți nodurile prin
THPDFContentStreamAST.GetNodeîn loc să atingeți direct array-ul intern de noduri