Adjusted %brcn to support core name.

This commit is contained in:
Curtis Yarvin 2018-05-20 12:34:38 -07:00
parent 5cd2f2692c
commit 5e55e48f3b
14 changed files with 691 additions and 657 deletions

View File

@ -142,6 +142,7 @@
# define c3__brtg c3_s4('b','r','t','g')
# define c3__brtr c3_s4('b','r','t','r')
# define c3__brts c3_s4('b','r','t','s')
# define c3__brvt c3_s4('b','r','v','t')
# define c3__brwt c3_s4('b','r','w','t')
# define c3__brzp c3_s4('b','r','z','p')
# define c3__bud c3_s3('b','u','d')
@ -1183,6 +1184,7 @@
# define c3__watt c3_s4('w','a','t','t')
# define c3__weak c3_s4('w','e','a','k')
# define c3__web c3_s3('w','e','b')
# define c3__wet c3_s3('w','e','t')
# define c3__werp c3_s4('w','e','r','p')
# define c3__west c3_s4('w','e','s','t')
# define c3__what c3_s4('w','h','a','t')

View File

@ -19,6 +19,8 @@
# define u3x_sam_7 27
# define u3x_sam_14 54
# define u3x_sam_15 55
# define u3x_sam_30 110
# define u3x_sam_31 111
# define u3x_con 7 // context
# define u3x_con_2 14 // context
# define u3x_con_3 15 // context

View File

@ -13,6 +13,19 @@
if ( (c3__void == pac) ) {
return c3__void;
} else {
{
u3_noun p_con, q_con, r_con, hr_con, tr_con;
u3r_trel(con, &p_con, &q_con, &r_con);
u3r_cell(r_con, &hr_con, &tr_con);
if ( (c3y == u3du(hr_con)) &&
(u3_nul == u3h(hr_con)) &&
(u3_nul == u3t(hr_con)) )
{
fprintf(stderr, "old core\r\n");
abort();
}
}
return u3nt(c3__core, u3k(pac), u3k(con));
}
}

View File

@ -19,7 +19,9 @@
u3r_trel(dab, &n_dab, &l_dab, &r_dab);
if ( c3n == u3du(n_dab) ) {
return u3m_bail(c3__fail);
// return u3m_bail(c3__fail);
fprintf(stderr, "bad look\r\n");
return u3m_bail(c3__exit) ;
}
else {
u3_noun pn_dab = u3h(n_dab);

View File

@ -22,8 +22,8 @@
return u3m_bail(c3__fail);
}
else {
u3_noun qqn_dom = u3t(u3t(n_dom));
u3_noun yep = u3qf_look(cog, qqn_dom);
u3_noun qn_dom = u3t(n_dom);
u3_noun yep = u3qf_look(cog, qn_dom);
if ( (u3_nul == l_dom) && (u3_nul == r_dom) ) {
if ( u3_nul == yep ) {

View File

@ -12,10 +12,8 @@
u3_noun got)
{
if ( c3y == u3ud(got) ) {
u3_noun nux = u3nc(u3_nul, u3k(got));
u3_noun ret = u3qf_face(nux, sut);
u3_noun ret = u3qf_face(u3k(got), sut);
u3z(nux);
return ret;
}
else switch ( u3h(got) ) {

View File

@ -41,9 +41,9 @@
return poy;
}
else {
u3_noun ttt_poy = u3t(u3t(u3t(poy))); // opal
u3_noun tt_poy = u3t(u3t(poy)); // opal
_opal_sane(ttt_poy);
_opal_sane(tt_poy);
return poy;
}
}
@ -104,9 +104,8 @@
u3_noun gil)
{
if ( 0 == p_heg ) {
return u3nq
return u3nt
(c3y,
u3_nul,
u3nt(u3_nul,
u3nc(u3_nul, u3k(axe)),
u3k(lon)),
@ -118,17 +117,6 @@
}
}
static u3_noun
_find_join(u3_noun a,
u3_noun b)
{
if ( c3y == u3r_sing(a, b) ) {
return u3k(a);
} else {
return u3kb_weld(u3k(a), u3nc(c3_s2('|', '|'), u3k(b)));
}
}
static u3_noun
_find_buck_lose(u3_noun van,
u3_noun sut,
@ -208,17 +196,19 @@
u3_noun lon,
u3_noun gil)
{
u3_noun p_sut, q_sut, pq_sut, qq_sut, rq_sut, sq_sut, psq_sut, qsq_sut;
u3_noun p_sut, q_sut, pq_sut, qq_sut, rq_sut, prq_sut, qrq_sut;
u3_noun ppq_sut, qpq_sut, rpq_sut;
u3x_cell(u3t(sut), &p_sut, &q_sut);
u3x_qual(q_sut, &pq_sut, &qq_sut, &rq_sut, &sq_sut);
u3x_cell(sq_sut, &psq_sut, &qsq_sut);
u3x_trel(q_sut, &pq_sut, &qq_sut, &rq_sut);
u3x_trel(pq_sut, &ppq_sut, &qpq_sut, &rpq_sut);
u3x_cell(rq_sut, &prq_sut, &qrq_sut);
{
if ( u3_nul == q_heg ) {
return _find_buck_here(van, sut, way, p_heg, q_heg, axe, lon, gil);
}
else {
u3_noun zem = u3qf_loot(u3t(q_heg), qsq_sut);
u3_noun zem = u3qf_loot(u3t(q_heg), qrq_sut);
if ( (u3_nul != zem) && (0 != p_heg) ) {
u3_noun ped;
@ -234,21 +224,18 @@
u3_noun u_zem = u3t(zem);
u3_noun pu_zem = u3h(u_zem);
u3_noun qu_zem = u3t(u_zem);
u3_noun pqu_zem = u3h(qu_zem);
u3_noun qqu_zem = u3t(qu_zem);
u3_noun mut;
u3_noun pro;
mut = u3nt(c3__core,
u3k(p_sut),
u3nq(c3__gold,
u3nt(u3nt(u3k(ppq_sut), u3k(qpq_sut), c3__gold),
u3k(qq_sut),
u3k(rq_sut),
u3k(sq_sut)));
u3k(rq_sut)));
pro = u3nq
pro = u3nt
(c3y,
u3k(pqu_zem),
u3nc(u3nc(u3_nul, u3k(axe)), u3k(lon)),
u3nt(c3n,
u3qc_peg(2, pu_zem),
@ -258,7 +245,7 @@
return pro;
}
else {
u3_noun pec = u3qfu_peel(van, sut, way, pq_sut);
u3_noun pec = u3qfu_peel(van, sut, way, rpq_sut);
u3_noun pro;
if ( c3n == u3h(pec) ) {
@ -313,24 +300,19 @@
else {
u3_noun pp_hax = u3t(p_hax); // {span nock}
u3_noun pp_yor = u3t(p_yor); // {span nock}
u3_noun ppp_hax = u3h(pp_hax); // wain
u3_noun ppp_yor = u3h(pp_yor); // wain
u3_noun qpp_hax = u3t(pp_hax);
u3_noun qpp_yor = u3t(pp_yor);
u3_noun pqpp_hax = u3h(qpp_hax); // span
u3_noun pqpp_yor = u3h(qpp_yor); // span
u3_noun qqpp_hax = u3t(qpp_hax); // nock
u3_noun qqpp_yor = u3t(qpp_yor); // nock
u3_noun ppp_hax = u3h(pp_hax); // span
u3_noun ppp_yor = u3h(pp_yor); // span
u3_noun qpp_hax = u3t(pp_hax); // nock
u3_noun qpp_yor = u3t(pp_yor); // nock
if ( c3n == u3r_sing(qqpp_hax, qqpp_yor) ) {
if ( c3n == u3r_sing(qpp_hax, qpp_yor) ) {
return u3m_error("find-fork-c");
}
return u3nq(c3n,
return u3nt(c3n,
c3n,
_find_join(ppp_hax, ppp_yor),
u3nc(
u3kf_fork(u3nt(u3k(pqpp_hax), u3k(pqpp_yor), u3_nul)),
u3k(qqpp_hax)));
u3kf_fork(u3nt(u3k(ppp_hax), u3k(ppp_yor), u3_nul)),
u3k(qpp_hax)));
}
}
}
@ -339,52 +321,46 @@
return u3m_error("find-fork-d");
}
else {
u3_noun p_hax = u3t(hax); // {wain vein opal}
u3_noun p_yor = u3t(yor); // {wain vein opal}
u3_noun pp_hax = u3h(p_hax); // wain
u3_noun pp_yor = u3h(p_yor); // wain
u3_noun qp_hax = u3t(p_hax); // {vein opal}
u3_noun qp_yor = u3t(p_yor); // {vein opal}
u3_noun pqp_hax = u3h(qp_hax); // vein
u3_noun pqp_yor = u3h(qp_yor); // vein
u3_noun qqp_hax = u3t(qp_hax); // opal
u3_noun qqp_yor = u3t(qp_yor); // opal
u3_noun p_hax = u3t(hax); // {vein opal}
u3_noun p_yor = u3t(yor); // {vein opal}
u3_noun pp_hax = u3h(p_hax); // vein
u3_noun pp_yor = u3h(p_yor); // vein
u3_noun qp_hax = u3t(p_hax); // opal
u3_noun qp_yor = u3t(p_yor); // opal
if ( c3n == u3r_sing(pqp_hax, pqp_yor) ) {
if ( c3n == u3r_sing(pp_hax, pp_yor) ) {
return u3m_error("find-fork-e");
}
else {
if ( c3y == u3h(qqp_hax) ) {
if ( c3y != u3h(qqp_yor) ) {
if ( c3y == u3h(qp_hax) ) {
if ( c3y != u3h(qp_yor) ) {
return u3m_error("find-fork-f");
} else {
u3_noun pqqp_hax = u3t(qqp_hax); // span
u3_noun pqqp_yor = u3t(qqp_yor); // span
u3_noun pqp_hax = u3t(qp_hax); // type
u3_noun pqp_yor = u3t(qp_yor); // type
return
u3nq(c3y,
_find_join(pp_hax, pp_yor),
u3k(pqp_hax),
u3nt(c3y,
u3k(pp_hax),
u3nc(c3y, u3kf_fork
(u3nt(u3k(pqqp_hax), u3k(pqqp_yor), u3_nul))));
(u3nt(u3k(pqp_hax), u3k(pqp_yor), u3_nul))));
}
}
else if ( c3n != u3h(qqp_yor) ) {
else if ( c3n != u3h(qp_yor) ) {
return u3m_error("find-fork-g");
} else {
u3_noun pqqp_hax = u3h(u3t(qqp_hax)); // axis
u3_noun pqqp_yor = u3h(u3t(qqp_yor)); // axis
u3_noun qqqp_hax = u3t(u3t(qqp_hax)); // (set {span foot})
u3_noun qqqp_yor = u3t(u3t(qqp_yor)); // (set {span foot})
u3_noun pqp_hax = u3h(u3t(qp_hax)); // axis
u3_noun pqp_yor = u3h(u3t(qp_yor)); // axis
u3_noun qqp_hax = u3t(u3t(qp_hax)); // (set {type foot})
u3_noun qqp_yor = u3t(u3t(qp_yor)); // (set {type foot})
if ( c3n == u3r_sing(pqqp_hax, pqqp_yor) ) {
if ( c3n == u3r_sing(pqp_hax, pqp_yor) ) {
return u3m_error("find-fork-h");
} else {
return
u3nq(c3y,
u3_nul,
u3k(pqp_hax),
u3nt(c3n, u3k(pqqp_hax), u3qdi_uni(qqqp_hax, qqqp_yor)));
u3nt(c3y,
u3k(pp_hax),
u3nt(c3n, u3k(pqp_hax), u3qdi_uni(qqp_hax, qqp_yor)));
}
}
}
@ -481,10 +457,10 @@
}
else {
u3_noun iqp_sut = u3h(qp_sut); // twig
u3_noun tiv = u3qfu_mint // (pair span nock)
u3_noun tiv = u3qfu_mint // (pair type nock)
(van, q_sut, c3__noun, iqp_sut);
u3_noun tqp_sut = u3t(qp_sut); // (list twig)
u3_noun p_tiv = u3h(tiv); // span
u3_noun p_tiv = u3h(tiv); // type
u3_noun q_tiv = u3t(tiv); // nock
u3_noun fid = _find_buck // pony
(van, p_tiv, way, p_heg, q_heg, 1, u3_nul, u3_nul);
@ -504,28 +480,24 @@
}
else {
u3_noun tor; // port
u3_noun vat; // (pair span nock)
u3_noun vat; // (pair type nock)
u3_noun ret;
u3_noun dog = u3nc(0, u3k(axe)); // nock
u3_noun cob = u3qf_comb(dog, q_tiv);
u3_noun wan;
if ( c3y == u3h(fid) ) {
wan = u3k(u3h(u3t(fid)));
tor = u3nc(c3y, u3k(u3t(u3t(fid))));
tor = u3nc(c3y, u3k(u3t(fid)));
} else {
wan = u3k(u3h(u3t(u3t(fid))));
tor = u3nc(c3n, u3k(u3t(u3t(u3t(fid)))));
tor = u3nc(c3n, u3k(u3t(u3t(fid))));
}
u3z(fid);
vat = u3qfu_fine(van, sut, tor);
u3z(tor);
ret = u3nq
ret = u3nt
(c3n,
c3n,
wan,
u3nc(u3k(u3h(vat)), u3qf_comb(cob, u3t(vat))));
u3z(vat);
@ -549,10 +521,8 @@
u3_noun gil)
{
u3_noun p_sut, q_sut;
u3_noun pp_sut, qp_sut;
u3x_cell(u3t(sut), &p_sut, &q_sut);
u3x_cell(p_sut, &pp_sut, &qp_sut);
if ( u3_nul == q_heg ) {
return _find_buck_here(van, q_sut, way, p_heg, q_heg, axe, lon, gil);
@ -560,8 +530,8 @@
else {
u3_noun uq_heg = u3t(q_heg); // term
if ( c3y == u3ud(qp_sut) ) {
if ( c3y == u3r_sing(qp_sut, uq_heg) ) {
if ( c3y == u3ud(p_sut) ) {
if ( c3y == u3r_sing(p_sut, uq_heg) ) {
return _find_buck_here(van, q_sut, way, p_heg, q_heg, axe, lon, gil);
}
else {
@ -569,17 +539,16 @@
}
}
else {
u3_noun pqp_sut = u3h(qp_sut); // (map term {wain (unit twig)})
u3_noun qqp_sut = u3t(qp_sut); // (list (pair span nock))
u3_noun tyr = u3qdb_get(pqp_sut, uq_heg); // (unit {wain (unit twig)})
u3_noun pp_sut = u3h(p_sut); // (map term {wain (unit twig)})
u3_noun qp_sut = u3t(p_sut); // (list (pair type nock))
u3_noun tyr = u3qdb_get(pp_sut, uq_heg); // (unit {wain (unit twig)})
if ( u3_nul == tyr ) {
return _find_buck_face_next
(van, sut, q_sut, qqp_sut, way, p_heg, q_heg, axe, lon, gil);
(van, sut, q_sut, qp_sut, way, p_heg, q_heg, axe, lon, gil);
}
else {
u3_noun u_tyr = u3t(tyr); // (pair wain (unit twig))
u3_noun pu_tyr = u3h(u_tyr);
u3_noun qu_tyr = u3t(u_tyr);
if ( u3_nul == qu_tyr ) {
@ -605,22 +574,21 @@
u3nt(u3_nul, u3nc(u3_nul, u3k(axe)), u3k(lon));
u3_noun ret;
ret = u3nq(c3y, u3_nul, u3qb_weld(pp_tor, nol), u3k(qp_tor));
ret = u3nt(c3y, u3qb_weld(pp_tor, nol), u3k(qp_tor));
u3z(nol);
u3z(tor);
u3z(tyr);
return ret;
}
else {
u3_noun p_tor = u3t(tor); // (pair span nock)
u3_noun pp_tor = u3h(p_tor); // span
u3_noun p_tor = u3t(tor); // (pair type nock)
u3_noun pp_tor = u3h(p_tor); // type
u3_noun qp_tor = u3t(p_tor); // nock
u3_noun dog = u3nc(0, u3k(axe)); // nock
u3_noun ret;
ret = u3nq(c3n,
ret = u3nt(c3n,
c3n,
u3k(pu_tyr),
u3nc(u3k(pp_tor), u3qf_comb(dog, qp_tor)));
u3z(dog);
u3z(tor);
@ -729,19 +697,18 @@
static u3_noun
_find_limb(u3_noun van,
u3_noun sut, // span
u3_noun sut, // type
u3_noun way, // ?(%read %rite %free %both)
u3_noun i_hyp, // limb
u3_noun p_mor) // {wain palo}
u3_noun p_mor) // palo
{
u3_noun qp_mor = u3t(p_mor); // palo
u3_noun pqp_mor = u3h(qp_mor); // vein
u3_noun qqp_mor = u3t(qp_mor); // opal
u3_noun pp_mor = u3h(p_mor); // vein
u3_noun qp_mor = u3t(p_mor); // opal
qqp_mor = _opal_sane(qqp_mor);
qp_mor = _opal_sane(qp_mor);
{
u3_noun ref = u3qfu_felt(van, sut, qqp_mor);
u3_noun lon = u3k(pqp_mor);
u3_noun ref = u3qfu_felt(van, sut, qp_mor);
u3_noun lon = u3k(pp_mor);
u3_noun heg = (c3y == u3du(i_hyp))
? u3k(i_hyp)
: u3nq(c3n, 0, u3_nul, u3k(i_hyp));
@ -750,9 +717,8 @@
if ( c3y == u3h(heg) ) {
u3_noun p_heg = u3t(heg); // axis
ret = u3nq
ret = u3nt
(c3y,
u3_nul,
u3nc(u3nc(u3_nul, u3k(p_heg)), u3k(lon)),
u3nc(c3y, u3qfu_peek(van, ref, way, p_heg)));
@ -780,7 +746,7 @@
u3_noun hyp)
{
if ( u3_nul == hyp ) {
return _pony_sane(u3nq(c3y, u3_nul, u3_nul, u3nc(c3y, u3k(sut))));
return _pony_sane(u3nt(c3y, u3_nul, u3nc(c3y, u3k(sut))));
}
else {
u3_noun i_hyp = u3h(hyp);
@ -796,18 +762,15 @@
return mor;
}
else {
u3_noun pp_mor = u3t(p_mor); // {wain span nock}
u3_noun ppp_mor = u3h(pp_mor);
u3_noun qpp_mor = u3t(pp_mor);
u3_noun pqpp_mor = u3h(qpp_mor); // span
u3_noun qqpp_mor = u3t(qpp_mor); // nock
u3_noun pp_mor = u3t(p_mor); // {span nock}
u3_noun ppp_mor = u3h(pp_mor); // span
u3_noun qpp_mor = u3t(pp_mor); // nock
u3_noun gen = u3nt(c3__wing, u3k(i_hyp), u3_nul);
u3_noun fex = u3qfu_mint(van, pqpp_mor, c3__noun, gen);
u3_noun ret = u3nq(c3n,
u3_noun fex = u3qfu_mint(van, ppp_mor, c3__noun, gen);
u3_noun ret = u3nt(c3n,
c3n,
u3k(ppp_mor),
u3nc(u3k(u3h(fex)),
u3qf_comb(qqpp_mor, u3t(fex))));
u3qf_comb(qpp_mor, u3t(fex))));
u3z(fex);
u3z(gen);
u3z(mor);
@ -851,8 +814,8 @@
}
else {
if ( c3y == u3h(taf) ) {
u3_noun fat = u3nc(c3y, u3k(u3t(u3t(taf))));
u3_noun fat = u3nc(c3y, u3k(u3t(taf)));
u3z(taf);
return fat;
}

View File

@ -47,7 +47,8 @@
_mint_mine(u3_noun van,
u3_noun sut,
u3_noun mel,
u3_noun wad,
u3_noun nym,
u3_noun hud,
u3_noun dom)
{
u3_noun von = u3i_molt(u3k(van), u3x_sam, u3k(sut), 0);
@ -57,8 +58,10 @@
u3x_sam_2,
u3k(mel),
u3x_sam_6,
u3k(wad),
u3x_sam_7,
u3k(nym),
u3x_sam_14,
u3k(hud),
u3x_sam_15,
u3k(dom),
0));
}
@ -144,14 +147,15 @@
u3_noun sut,
u3_noun gol,
u3_atom mel,
u3_noun nym,
u3_noun hud,
u3_noun ruf,
u3_noun wan,
u3_noun dom)
{
u3_noun dan = _mint_in(van, sut, c3__noun, ruf);
u3_noun p_dan = u3h(dan);
u3_noun q_dan = u3t(dan);
u3_noun pul = _mint_mine(van, p_dan, mel, wan, dom);
u3_noun pul = _mint_mine(van, p_dan, mel, nym, hud, dom);
u3_noun ret = u3nc(_mint_nice(van, gol, u3k(u3h(pul))),
u3qf_cons(u3t(pul), q_dan));
@ -631,12 +635,23 @@
return _mint_cnts(van, sut, gol, p_gen, q_gen);
}
case c3__brcn: u3x_cell(u3t(gen), &p_gen, &q_gen);
case c3__brcn: p_gen = u3t(gen);
_mint_used();
{
u3_noun ruf = u3nc(u3_nul, 1);
ret = _mint_grow(van, sut, gol, c3__gold, ruf, p_gen, q_gen);
ret = _mint_grow(van, sut, gol, c3__gold, u3_nul, c3__dry, ruf, p_gen);
u3z(ruf);
return ret;
}
case c3__brvt: u3x_cell(u3t(gen), &p_gen, &q_gen);
_mint_used();
{
u3_noun ruf = u3nc(u3_nul, 1);
ret = _mint_grow(van, sut, gol, c3__gold, p_gen, c3__wet, ruf, q_gen);
u3z(ruf);
return ret;

View File

@ -63,7 +63,8 @@
u3_noun sut,
u3_noun dox,
u3_noun mel,
u3_noun wad,
u3_noun nym,
u3_noun hud,
u3_noun dom)
{
u3_noun von = u3i_molt(u3k(van), u3x_sam, u3k(sut), 0);
@ -75,8 +76,10 @@
u3x_sam_6,
u3k(mel),
u3x_sam_14,
u3k(wad),
u3x_sam_15,
u3k(nym),
u3x_sam_30,
u3k(hud),
u3x_sam_31,
u3k(dom),
0));
}
@ -116,14 +119,15 @@
u3_noun gol,
u3_noun dox,
u3_atom mel,
u3_noun nym,
u3_noun hud,
u3_noun ruf,
u3_noun wan,
u3_noun dom)
{
u3_noun dan = _mull_in(van, sut, c3__noun, dox, ruf);
u3_noun p_dan = u3h(dan);
u3_noun q_dan = u3t(dan);
u3_noun yaz = _mull_mile(van, p_dan, q_dan, mel, wan, dom);
u3_noun yaz = _mull_mile(van, p_dan, q_dan, mel, nym, hud, dom);
u3_noun p_yaz = u3h(yaz);
u3_noun q_yaz = u3t(yaz);
u3_noun ret = u3nc(_mull_nice(van, gol, u3k(p_yaz)), u3k(q_yaz));
@ -616,12 +620,25 @@
return _mull_cnts(van, sut, gol, dox, p_gen, q_gen);
}
case c3__brcn: u3x_cell(u3t(gen), &p_gen, &q_gen);
case c3__brcn: p_gen = u3t(gen);
_mull_used();
{
u3_noun ruf = u3nc(u3_nul, 1);
ret = _mull_grow(van, sut, gol, dox, c3__gold, ruf, p_gen, q_gen);
ret = _mull_grow
(van, sut, gol, dox, c3__gold, u3_nul, c3__dry, ruf, p_gen);
u3z(ruf);
return ret;
}
case c3__brvt: u3x_cell(u3t(gen), &p_gen, &q_gen);
_mull_used();
{
u3_noun ruf = u3nc(u3_nul, 1);
ret = _mull_grow
(van, sut, gol, dox, c3__gold, p_gen, c3__wet, ruf, q_gen);
u3z(ruf);
return ret;

View File

@ -89,7 +89,7 @@
} else {
u3_noun n_dom, l_dom, r_dom;
u3_noun n_vim, l_vim, r_vim;
u3_noun pn_vim, pqn_vim, qqn_vim, pn_dom, pqn_dom, qqn_dom;
u3_noun pn_vim, qn_vim, pn_dom, qn_dom;
u3x_trel(dom, &n_dom, &l_dom, &r_dom);
u3x_trel(vim, &n_vim, &l_vim, &r_vim);
@ -99,13 +99,13 @@
{
return c3n;
}
u3x_trel(n_dom, &pn_dom, &pqn_dom, &qqn_dom);
u3x_trel(n_vim, &pn_vim, &pqn_vim, &qqn_vim);
u3x_cell(n_dom, &pn_dom, &qn_dom);
u3x_cell(n_vim, &pn_vim, &qn_vim);
if ( c3n == u3r_sing(pn_dom, pn_vim) ) {
return c3n;
} else {
return _nest_deep(van, sut, tel, ref, qqn_dom, qqn_vim, gil);
return _nest_deep(van, sut, tel, ref, qn_dom, qn_vim, gil);
}
}
}
@ -118,19 +118,24 @@
u3_noun gil)
{
u3_noun p_sut, q_sut, p_ref, q_ref;
u3_noun pq_sut, qq_sut, rq_sut, sq_sut;
u3_noun pq_ref, qq_ref, rq_ref, sq_ref;
u3_noun psq_sut, qsq_sut, psq_ref, qsq_ref;
u3_noun pq_sut, qq_sut, rq_sut;
u3_noun pq_ref, qq_ref, rq_ref;
u3_noun prq_sut, qrq_sut, prq_ref, qrq_ref;
u3_noun ppq_sut, qpq_sut, rpq_sut;
u3_noun ppq_ref, qpq_ref, rpq_ref;
u3_noun ret;
u3x_trel(sut, 0, &p_sut, &q_sut);
u3x_trel(ref, 0, &p_ref, &q_ref);
u3x_qual(q_sut, &pq_sut, &qq_sut, &rq_sut, &sq_sut);
u3x_qual(q_ref, &pq_ref, &qq_ref, &rq_ref, &sq_ref);
u3x_trel(q_sut, &pq_sut, &qq_sut, &rq_sut);
u3x_trel(q_ref, &pq_ref, &qq_ref, &rq_ref);
u3x_trel(pq_sut, &ppq_sut, &qpq_sut, &rpq_sut);
u3x_trel(pq_ref, &ppq_ref, &qpq_ref, &rpq_ref);
u3x_cell(sq_sut, &psq_sut, &qsq_sut);
u3x_cell(sq_ref, &psq_ref, &qsq_ref);
u3x_cell(rq_sut, &prq_sut, &qrq_sut);
u3x_cell(rq_ref, &prq_ref, &qrq_ref);
if ( c3y == u3r_sing(q_sut, q_ref) ) {
return _nest_dext(van, p_sut, tel, p_ref, u3_nul, u3_nul, gil);
@ -145,9 +150,9 @@
return c3n;
}
else {
if ( (pq_sut != pq_ref) &&
(c3__lead != pq_sut) &&
(c3__gold != pq_ref) )
if ( (rpq_sut != rpq_ref) &&
(c3__lead != rpq_sut) &&
(c3__gold != rpq_ref) )
{
return c3n;
}
@ -163,15 +168,15 @@
u3_noun zoc = u3qdi_put(gil, hud);
u3_noun tus = u3nt(c3__core,
u3k(qq_sut),
u3nc(c3__gold,
u3nc(u3nt(u3k(ppq_sut), u3k(qpq_sut), c3__gold),
u3k(u3t(q_sut))));
u3_noun fer = u3nt(c3__core,
u3k(qq_ref),
u3nc(c3__gold,
u3nc(u3nt(u3k(ppq_ref), u3k(qpq_ref), c3__gold),
u3k(u3t(q_ref))));
ret = _nest_dope(van, tus, tel, fer, qsq_sut, qsq_ref, zoc);
ret = _nest_dope(van, tus, tel, fer, qrq_sut, qrq_ref, zoc);
u3z(fer);
u3z(tus);
u3z(zoc);
@ -181,7 +186,7 @@
return c3n;
}
else {
switch ( pq_sut ) {
switch ( rpq_sut ) {
default: return u3m_bail(c3__fail);
case c3__gold: {

View File

@ -71,10 +71,12 @@
}
case c3__core: {
u3_noun pq_sut, qq_sut, rq_sut;
u3_noun ppq_sut, qpq_sut, rpq_sut;
u3_noun prq_sut, qrq_sut;
if ( (c3n == u3r_trel(sut, 0, &p_sut, &q_sut)) ||
(c3n == u3r_trel(q_sut, &pq_sut, &qq_sut, &rq_sut)) ||
(c3n == u3r_trel(pq_sut, &ppq_sut, &qpq_sut, &rpq_sut)) ||
(c3n == u3r_cell(rq_sut, &prq_sut, &qrq_sut)) )
{
return u3m_bail(c3__fail);
@ -83,7 +85,7 @@
u3_atom lat = u3qc_mas(axe);
if ( 3 == now ) {
u3_noun pec = u3qfu_peel(van, sut, way, pq_sut);
u3_noun pec = u3qfu_peel(van, sut, way, rpq_sut);
u3_noun sam = u3h(pec);
u3_noun con = u3t(pec);

View File

@ -181,16 +181,16 @@
_play_grow(u3_noun van,
u3_noun sut,
u3_atom mel,
u3_noun nym,
u3_noun hud,
u3_noun ruf,
u3_noun wan,
u3_noun dom)
{
u3_noun dan = _play_in(van, sut, ruf);
return _play_core(dan,
u3nq(u3k(mel),
u3nt(u3nt(u3k(nym), u3k(hud), u3k(mel)),
u3k(dan),
u3k(wan),
u3nc(u3nc(u3nc(c3__full, u3_nul), u3_nul),
u3k(dom))));
}
@ -454,11 +454,23 @@
return _play_cnts(van, sut, p_gen, q_gen);
}
case c3__brcn: u3x_cell(u3t(gen), &p_gen, &q_gen);
case c3__brcn: p_gen = u3t(gen);
_play_used();
{
u3_noun ruf = u3nc(u3_nul, 1);
u3_noun ret = _play_grow(van, sut, c3__gold, ruf, p_gen, q_gen);
u3_noun ret = _play_grow
(van, sut, c3__gold, u3_nul, c3__dry, ruf, p_gen);
u3z(ruf);
return ret;
}
case c3__brvt: u3x_cell(u3t(gen), &p_gen, &q_gen);
_play_used();
{
u3_noun ruf = u3nc(u3_nul, 1);
u3_noun ret = _play_grow
(van, sut, c3__gold, p_gen, c3__wet, ruf, q_gen);
u3z(ruf);
return ret;

View File

@ -32,21 +32,24 @@
case c3__core: u3x_cell(u3t(sut), &p_sut, &q_sut);
{
u3_noun pq_sut, qq_sut, rq_sut, sq_sut;
u3_noun pq_sut, qq_sut, rq_sut;
u3_noun ppq_sut, qpq_sut, rpq_sut;
if ( c3n == u3r_qual(q_sut, &pq_sut, &qq_sut, &rq_sut, &sq_sut) ) {
if ( c3n == u3r_trel(q_sut, &pq_sut, &qq_sut, &rq_sut) ) {
return u3m_bail(c3__fail);
}
else if ( c3__gold != pq_sut ) {
if ( c3n == u3r_trel(pq_sut, &ppq_sut, &qpq_sut, &rpq_sut) ) {
return u3m_bail(c3__fail);
}
else if ( c3__gold != rpq_sut ) {
return u3m_error("wrap-gold");
}
else {
return u3nt(c3__core,
u3k(p_sut),
u3nq(u3k(yoz),
u3nt(u3nt(u3k(ppq_sut), u3k(qpq_sut), u3k(yoz)),
u3k(qq_sut),
u3k(rq_sut),
u3k(sq_sut)));
u3k(rq_sut)));
}
}
case c3__fork: p_sut = u3t(sut);

File diff suppressed because it is too large Load Diff