セシィ–ウルマン法
数式 a = ( b + c ) ∗ ( d + 3 ) {\displaystyle a=(b+c)*(d+3)} は、抽象構文木では次のように表される。
このアルゴリズムを適用するに当たって、数式の右辺 ( b + c ) ∗ ( d + 3 ) {\displaystyle (b+c)*(d+3)} のみを考慮する。すなわち、代入 '=' の右の部分木のみを参照する。
木構造を(とりあえず先頭から)見ていき、各部分木の評価に必要なレジスタを割り当てていく( ( b + c ) ∗ ( d + 3 ) {\displaystyle (b+c)*(d+3)} の最後の被加数は定数であることに注意)。
この木構造から、'*' の左の部分木の計算には2つのレジスタが必要だが、右の部分木の計算には1つのレジスタだけでよいことが分かる。従って、この式を計算する時点で使っていないレジスタが2つしかない可能性もあるので、先に左側の計算を行うコードを生成する。レジスタを1つしか必要としない右側の部分木を計算するコードを先に生成すると、左側の計算をする間、右の計算結果を保持しておくレジスタが必要となり、全部で3つのレジスタが必要となってしまう。先に左側を計算するには2つのレジスタが必要だが、結果の保持には1つのレジスタがあればよいので、右の計算に必要な1つのレジスタと合わせても、2つのレジスタがあれば全体を計算可能である。