NaifyView\Ir\IrDocumentLowerer クラス
IrDocumentLowerer — ネイティブASTを中間表現へ変換する
ノードごとの値と子要素を共通の形へ移す。未対応のノードは破棄せず、そのまま包んで保持する。 変換結果には、構造化できたノードと未変換ノードの件数も添える。
プロパティ
| 名前 | 型 | 説明 |
|---|---|---|
private
$typeCounts
|
array |
今回変換したノードの種別ごとの件数 |
private
$nodeCount
|
int |
未変換分も含むノードの総数 |
private
$passthroughCount
|
int |
元のASTを包んだまま残したノード数 |
メソッド
| メソッド | 説明 |
|---|---|
public
lower(DocumentNode $document): IrLoweringResult
|
AST全体を変換し、今回の変換件数と一緒に返す
集計は呼び出すたびに初期化する。 |
private
lowerDocument(DocumentNode $document): IrStructuredNode
|
ASTのルートをdocument型の中間表現にする |
private
lowerChildren(array $children): array
|
子ノードを記述順に中間表現へ移す |
private
lowerNode(NodeInterface $node): IrNodeInterface
|
ASTの種類に合わせて値と子ノードを取り出す |
private
lowerIfBranch(IfBranchNode $branch): IrStructuredNode
|
分岐の条件と本体をif_branch型へ移す |
private
recordStructuredNode(IrStructuredNode $node): IrStructuredNode
|
構造化したノードを集計に加えて返す |
private
recordPassthroughNode(IrPassthroughNode $node, string $originalType): IrPassthroughNode
|
未変換ノードを、元の種別が分かる形で集計する |