up_qor_dew.c (3138B)
1 #include "all.h" 2 3 u3_noun 4 u3qdu_qor_dew(u3_noun a, u3_noun k) 5 { 6 if (u3_nul == a) { 7 return u3_nul; 8 } 9 10 u3_noun n_a, t_a, m_a; 11 u3x_trel(a, &n_a, &t_a, &m_a); 12 13 if (u3_nul == t_a) { 14 u3_noun kn_a, pn_a, vn_a; 15 u3x_trel(n_a, &kn_a, &pn_a, &vn_a); 16 17 if (c3n == u3r_sing(k, kn_a)) { 18 return u3_nul; 19 } 20 else { 21 return u3nq(u3_nul, u3k(pn_a), u3k(vn_a), u3_nul); 22 } 23 } 24 25 u3_noun hot = u3h(t_a); 26 27 if (c3n == u3ud(hot)) { 28 return u3m_bail(c3__exit); 29 } 30 else switch ( hot ) { 31 default: 32 return u3m_bail(c3__exit); 33 34 case c3__llos: { 35 u3_noun b = u3t(u3t(t_a)); 36 37 u3_noun n_b, l_b, m_b, r_b; 38 u3x_qual(b, &n_b, &l_b, &m_b, &r_b); 39 40 u3_noun lel = u3nt(u3k(n_b), u3k(l_b), u3k(m_b)); 41 u3_noun rel = u3nt(u3k(n_a), u3k(r_b), u3k(m_a)); 42 43 if ( (c3y == u3r_sing(k, m_b)) || (c3y == u3qc_gor(k, m_b)) ) { 44 u3_noun pat = u3qdu_qor_dew(lel, k); 45 46 if (u3_nul == pat) { 47 u3z(lel); 48 u3z(rel); 49 50 return u3_nul; 51 } 52 else { 53 u3_noun pp, qp, rp; 54 u3x_trel(u3t(pat), &pp, &qp, &rp); 55 56 u3_noun pro = u3nq(u3_nul, u3k(pp), u3k(qp), u3qdu_qor_toy(rp, rel)); 57 58 u3z(lel); 59 u3z(rel); 60 u3z(pat); 61 62 return pro; 63 } 64 } 65 else { 66 u3_noun pat = u3qdu_qor_dew(rel, k); 67 68 if (u3_nul == pat) { 69 u3z(lel); 70 u3z(rel); 71 72 return u3_nul; 73 } 74 else { 75 u3_noun pp, qp, rp; 76 u3x_trel(u3t(pat), &pp, &qp, &rp); 77 78 u3_noun pro = u3nq(u3_nul, u3k(pp), u3k(qp), u3qdu_qor_toy(lel, rp)); 79 80 u3z(lel); 81 u3z(rel); 82 u3z(pat); 83 84 return pro; 85 } 86 } 87 } 88 89 case c3__rlos: { 90 u3_noun b = u3t(u3t(t_a)); 91 92 u3_noun n_b, l_b, m_b, r_b; 93 u3x_qual(b, &n_b, &l_b, &m_b, &r_b); 94 95 u3_noun lel = u3nt(u3k(n_a), u3k(l_b), u3k(m_b)); 96 u3_noun rel = u3nt(u3k(n_b), u3k(r_b), u3k(m_a)); 97 98 if ( (c3y == u3r_sing(k, m_b)) || (c3y == u3qc_gor(k, m_b)) ) { 99 u3_noun pat = u3qdu_qor_dew(lel, k); 100 101 if (u3_nul == pat) { 102 u3z(lel); 103 u3z(rel); 104 105 return u3_nul; 106 } 107 else { 108 u3_noun pp, qp, rp; 109 u3x_trel(u3t(pat), &pp, &qp, &rp); 110 111 u3_noun pro = u3nq(u3_nul, u3k(pp), u3k(qp), u3qdu_qor_toy(rp, rel)); 112 113 u3z(lel); 114 u3z(rel); 115 u3z(pat); 116 117 return pro; 118 } 119 } 120 else { 121 u3_noun pat = u3qdu_qor_dew(rel, k); 122 123 if (u3_nul == pat) { 124 u3z(lel); 125 u3z(rel); 126 127 return u3_nul; 128 } 129 else { 130 u3_noun pp, qp, rp; 131 u3x_trel(u3t(pat), &pp, &qp, &rp); 132 133 u3_noun pro = u3nq(u3_nul, u3k(pp), u3k(qp), u3qdu_qor_toy(lel, rp)); 134 135 u3z(lel); 136 u3z(rel); 137 u3z(pat); 138 139 return pro; 140 } 141 } 142 } 143 144 } 145 } 146 147 u3_noun 148 u3wdu_qor_dew(u3_noun cor) 149 { 150 u3_noun a, k; 151 152 if (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &k, 0)) 153 { 154 return u3m_bail(c3__exit); 155 } else { 156 return u3qdu_qor_dew(a, k); 157 } 158 } 159