1: lot ->Size(100, 100 * rand(0.7,1), 70) {new_lot} 2: new_lot ->Subdiv(Y, 1^, 2^) {bottom | top} 3: bottom ->Subdiv(X, 1^, 2^) {entrance | columns} 4: entrance ->Subdiv(Y, 2^, 1^) {entrance_bot | terminal} 5: entrance_bot->Subdiv(X, 1^, 1^, 1^) {terminal | door | terminal} 6: columns ->Subdiv(X, 2^, 1^, 4^, 1^) {e | column_t | e | column_t} : 0.5 ->Replace(terminal) : 0.5 7: column_t ->Subdiv(Z, 1^, 5^, 1^) {column | e | column} : 0.5 ->Replace(column) : 0.5 8: top ->Subdiv(Y, 1^, 1^, 1^) {floor | floor | floor} 9: floor ->Subdiv(Y, 1^, 7^) {balcony | floor_main} 10: balcony ->Size(1^, 1^, 1.2^) {balcony_f} 11: floor_main ->Subdiv(X, 1^, 1^, 1^, 1^, 1^) {floor_door | window | window | window | window} 12: floor_door ->Subdiv(X, 1^, 1^, 1^) {terminal | fdoor_t | terminal} 13: fdoor_t ->Subdiv(Y, 5^, 1^) {fdoor_f | terminal} 14: window ->Subdiv(X, 1^, 6^, 1^) {terminal | window_t | terminal} 15: window_t ->Subdiv(Y, 1^, 6^, 1^) {terminal | window_f | terminal} 16: window_f ->Subdiv(X, 1^, 1^, 1^, 1^, 1^) {win_a | win_a | win_a | win_a | win_a} 17: win_a ->Subdiv(Y, 1^, 1^, 1^, 1^, 1^) {win_b | win_b | win_b | win_b | win_b} 18: win_b ->Comp("sidefaces") {win_faces} 19: win_faces ->Subdiv(Y, 1^, 1^, 1^) {terminal | terminal | terminal} 99: e ->Replace(empty) end