[ WriteListR o depth stack_pointer classes_p sizes_p i j k k2 l m n q senc mr; if (depth>0 && o==child(parent(o))) { SortOutList(o); o=child(parent(o)); } for (::) { if (o==0) rfalse; if (c_style & WORKFLAG_BIT ~= 0 && depth==0 && o hasnt workflag) { o = sibling(o); continue; } if (c_style & CONCEAL_BIT ~= 0 && (o has concealed || o has scenery)) { o=sibling(o); continue; } break; } classes_p = match_classes + stack_pointer; sizes_p = match_list + stack_pointer; for (i=o,j=0:i~=0 && (j+stack_pointer)<128:i=NextEntry(i,depth),j++) { classes_p->j=0; if (i.plural~=0) k++; } if (c_style & ISARE_BIT ~= 0) { if (j==1 && o hasnt pluralname) print (string) IS__TX; else print (string) ARE__TX; if (c_style & NEWLINE_BIT ~= 0) print ":^"; else print (char) ' '; c_style = c_style - ISARE_BIT; } stack_pointer = stack_pointer+j+1; if (k<2) jump EconomyVersion; ! It takes two to plural n=1; for (i=o,k=0:kk==0) { classes_p->k=n; sizes_p->n=1; for (l=NextEntry(i,depth), m=k+1:l~=0 && mm==0 && i.plural~=0 && l.plural~=0) { if (ListEqual(i,l)==1) { sizes_p->n = sizes_p->n + 1; classes_p->m = n; } } n++; } n--; for (i=1, j=o, k=0: i<=n: i++, senc++) { while (((classes_p->k) ~= i) && ((classes_p->k) ~= -i)) { k++; j=NextEntry(j,depth); } m=sizes_p->i; if (j==0) mr = 0; else { if (j.list_together~=0 or lt_value && ZRegion(j.list_together)==2 or 3 && j.list_together==mr) senc--; mr=j.list_together; } } senc--; for (i=1, j=o, k=0, mr=0: senc>=0: i++, senc--) { while (((classes_p->k) ~= i) && ((classes_p->k) ~= -i)) { k++; j=NextEntry(j,depth); } if (j.list_together~=0 or lt_value) { if (j.list_together==mr) { senc++; jump Omit_FL2; } k2=NextEntry(j,depth); if (k2==0 || k2.list_together~=j.list_together) jump Omit_WL2; k2=ZRegion(j.list_together); if (k2==2 or 3) { q=j; listing_size=1; l=k; m=i; while (ml) ~= m) && ((classes_p->l) ~= -m)) { l++; q=NextEntry(q,depth); } if (q.list_together==j.list_together) listing_size++; } ! print " [", listing_size, "] "; if (listing_size==1) jump Omit_WL2; if (c_style & INDENT_BIT ~= 0) Print__Spaces(2*(depth+wlf_indent)); if (k2==3) { q=0; for (l=0:l(l+i); EnglishNumber(q); print " "; print (string) j.list_together; if (c_style & ENGLISH_BIT ~= 0) print " ("; if (c_style & INDENT_BIT ~= 0) print ":^"; } q=c_style; if (k2~=3) { inventory_stage=1; parser_one=j; parser_two=depth+wlf_indent; if (RunRoutines(j,list_together)==1) jump Omit__Sublist2; } @push lt_value; @push listing_together; @push listing_size; lt_value=j.list_together; listing_together=j; wlf_indent++; WriteListR(j,depth,stack_pointer); wlf_indent--; @pull listing_size; @pull listing_together; @pull lt_value; if (k2==3) { if (q & ENGLISH_BIT ~= 0) print ")"; } else { inventory_stage=2; parser_one=j; parser_two=depth+wlf_indent; RunRoutines(j,list_together); } .Omit__Sublist2; if (q & NEWLINE_BIT ~= 0 && c_style & NEWLINE_BIT == 0) new_line; c_style=q; mr=j.list_together; jump Omit_EL2; } } .Omit_WL2; if (WriteBeforeEntry(j,depth,-senc)==1) jump Omit_FL2; if (sizes_p->i == 1) { if (c_style & NOARTICLE_BIT ~= 0) print (name) j; else { if (c_style & DEFART_BIT ~= 0) print (the) j; else print (a) j; } } else { if (c_style & DEFART_BIT ~= 0) PrefaceByArticle(j, 1, sizes_p->i); print (number) sizes_p->i, " "; PrintOrRun(j,plural,1); } WriteAfterEntry(j,depth,stack_pointer); .Omit_EL2; if (c_style & ENGLISH_BIT ~= 0) { if (senc==1) print (string) AND__TX; if (senc>1) print ", "; } .Omit_FL2; } rtrue; .EconomyVersion; n=j; for (i=1, j=o: i<=n: j=NextEntry(j,depth), i++, senc++) { if (j.list_together~=0 or lt_value && ZRegion(j.list_together)==2 or 3 && j.list_together==mr) senc--; mr=j.list_together; } for (i=1, j=o, mr=0: i<=senc: j=NextEntry(j,depth), i++) { if (j.list_together~=0 or lt_value) { if (j.list_together==mr) { i--; jump Omit_FL; } k=NextEntry(j,depth); if (k==0 || k.list_together~=j.list_together) jump Omit_WL; k=ZRegion(j.list_together); if (k==2 or 3) { if (c_style & INDENT_BIT ~= 0) Print__Spaces(2*(depth+wlf_indent)); if (k==3) { q=j; l=0; do { q=NextEntry(q,depth); l++; } until (q==0 || q.list_together~=j.list_together); EnglishNumber(l); print " "; print (string) j.list_together; if (c_style & ENGLISH_BIT ~= 0) print " ("; if (c_style & INDENT_BIT ~= 0) print ":^"; } q=c_style; if (k~=3) { inventory_stage=1; parser_one=j; parser_two=depth+wlf_indent; if (RunRoutines(j,list_together)==1) jump Omit__Sublist; } @push lt_value; @push listing_together; @push listing_size; lt_value=j.list_together; listing_together=j; wlf_indent++; WriteListR(j,depth,stack_pointer); wlf_indent--; @pull listing_size; @pull listing_together; @pull lt_value; if (k==3) { if (q & ENGLISH_BIT ~= 0) print ")"; } else { inventory_stage=2; parser_one=j; parser_two=depth+wlf_indent; RunRoutines(j,list_together); } .Omit__Sublist; if (q & NEWLINE_BIT ~= 0 && c_style & NEWLINE_BIT == 0) new_line; c_style=q; mr=j.list_together; jump Omit_EL; } } .Omit_WL; if (WriteBeforeEntry(j,depth,i-senc)==1) jump Omit_FL; if (c_style & NOARTICLE_BIT ~= 0) print (name) j; else { if (c_style & DEFART_BIT ~= 0) print (the) j; else print (a) j; } WriteAfterEntry(j,depth,stack_pointer); .Omit_EL; if (c_style & ENGLISH_BIT ~= 0) { if (i==senc-1) print (string) AND__TX; if (i