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 未変換ノードを、元の種別が分かる形で集計する