|
@@ -638,10 +638,10 @@ Vt*Swalk(St*st,Nt*node){if(!node)R st->nil;
|
|
|
vt*g=_g->val.verb;
|
|
|
vt*h=_h->val.verb;
|
|
|
vt*nv=vnew();
|
|
|
- nv->bonds=An();
|
|
|
- Ap(nv->bonds,f);
|
|
|
- Ap(nv->bonds,g);
|
|
|
- Ap(nv->bonds,h);
|
|
|
+ nv->bonds=Ank(3);
|
|
|
+ nv->bonds->data[0]=f;
|
|
|
+ nv->bonds->data[1]=g;
|
|
|
+ nv->bonds->data[2]=h;
|
|
|
Z l=strlen(f->name)+strlen(g->name)+strlen(h->name)+1;
|
|
|
nv->name=ma(l);
|
|
|
snprintf(nv->name,l,"%s%s%s",f->name,g->name,h->name);
|
|
@@ -657,9 +657,9 @@ Vt*Swalk(St*st,Nt*node){if(!node)R st->nil;
|
|
|
vt*f=_f->val.verb;
|
|
|
vt*g=_g->val.verb;
|
|
|
vt*nv=vnew();
|
|
|
- nv->bonds=An();
|
|
|
- Ap(nv->bonds,f);
|
|
|
- Ap(nv->bonds,g);
|
|
|
+ nv->bonds=Ank(2);
|
|
|
+ nv->bonds->data[0]=f;
|
|
|
+ nv->bonds->data[1]=g;
|
|
|
Z l=strlen(f->name)+strlen(g->name)+1;
|
|
|
nv->name=ma(l);
|
|
|
snprintf(nv->name,l,"%s%s",f->name,g->name);
|
|
@@ -673,9 +673,9 @@ Vt*Swalk(St*st,Nt*node){if(!node)R st->nil;
|
|
|
Vt*g=Swalk(st,node->b);
|
|
|
vt*f=_f->val.verb;
|
|
|
vt*nv=vnew();
|
|
|
- nv->bonds=An();
|
|
|
- Ap(nv->bonds,f);
|
|
|
- Ap(nv->bonds,g);
|
|
|
+ nv->bonds=Ank(2);
|
|
|
+ nv->bonds->data[0]=f;
|
|
|
+ nv->bonds->data[1]=g;
|
|
|
S r=Vshow(g);
|
|
|
Z l=strlen(r)+strlen(f->name)+1;
|
|
|
nv->name=ma(l);
|
|
@@ -694,10 +694,10 @@ Vt*Swalk(St*st,Nt*node){if(!node)R st->nil;
|
|
|
vt*g=_g->val.verb;
|
|
|
vt*h=_h->val.verb;
|
|
|
vt*nv=vnew();
|
|
|
- nv->bonds=An();
|
|
|
- Ap(nv->bonds,f);
|
|
|
- Ap(nv->bonds,g);
|
|
|
- Ap(nv->bonds,h);
|
|
|
+ nv->bonds=Ank(3);
|
|
|
+ nv->bonds->data[0]=f;
|
|
|
+ nv->bonds->data[1]=g;
|
|
|
+ nv->bonds->data[2]=h;
|
|
|
S r=Vshow(f);
|
|
|
Z l=strlen(r)+strlen(g->name)+strlen(h->name)+1;
|
|
|
nv->name=ma(l);
|
|
@@ -1069,11 +1069,26 @@ Vt*vnudge_right(St*st,vt*self,Vt*x,Vt*y){if(yt!=ARRAY)R venlist(st,N,x);
|
|
|
for(Z i=0;i<yal-1;i++)Ap(r,yad[i]);R Vna(r);}
|
|
|
Vt*venlist(St*st,vt*self,Vt*x){Ar*l=An();
|
|
|
Ap(l,x);R Vna(l);}
|
|
|
-Vt*vjoin(St*st,vt*self,Vt*x,Vt*y){Ar*l=An();
|
|
|
- if(xt==ARRAY&&xad)for(Z i=0;i<xal;i++)Ap(l,xad[i]);
|
|
|
- else Ap(l,x);
|
|
|
- if(yt==ARRAY&&yad)for(Z i=0;i<yal;i++)Ap(l,yad[i]);
|
|
|
- else Ap(l,y);R Vna(l);}
|
|
|
+Vt*venpair(St*st,vt*self,Vt*x,Vt*y);
|
|
|
+Vt*vjoin(St*st,vt*self,Vt*x,Vt*y){Ar*l;
|
|
|
+ if(xt==ARRAY&&yt==ARRAY){if(!xad&&!yad)R st->unit;
|
|
|
+ elif(!xad)R y;
|
|
|
+ elif(!yad)R x;
|
|
|
+ l=Ank(xal+yal);
|
|
|
+ Z lp=0;
|
|
|
+ for(Z i=0;i<xal;i++)l->data[lp++]=xad[i];
|
|
|
+ for(Z i=0;i<yal;i++)l->data[lp++]=yad[i];}
|
|
|
+ elif(xt==ARRAY&&yt!=ARRAY){if(!xad)R venlist(st,N,y);
|
|
|
+ l=Ank(xal+1);
|
|
|
+ Z lp=0;
|
|
|
+ for(Z i=0;i<xal;i++)l->data[lp++]=xad[i];
|
|
|
+ l->data[lp++]=y;}
|
|
|
+ elif(xt!=ARRAY&&yt==ARRAY){if(!yad)R venlist(st,N,x);
|
|
|
+ l=Ank(yal+1);
|
|
|
+ Z lp=0;
|
|
|
+ l->data[lp++]=x;
|
|
|
+ for(Z i=0;i<yal;i++)l->data[lp++]=yad[i];}
|
|
|
+ else R venpair(st,N,x,y);R Vna(l);}
|
|
|
Vt*venpair(St*st,vt*self,Vt*x,Vt*y){Ar*l=Ank(2);
|
|
|
l->data[0]=x;
|
|
|
l->data[1]=y;R Vna(l);}
|
|
@@ -2100,7 +2115,8 @@ Nt*PPnoun(Pt*parser,B flat){Nt*a=flat?PPatom(parser):_PPnoun(parser);
|
|
|
if((tok=Plook(parser,0))&&tok->tag==T_PUNCT&&strcmp(tok->text,",:")==0){Peat(parser);
|
|
|
Ar*l=An();
|
|
|
Ap(l,a);
|
|
|
- LOOP{a=flat?PPatom(parser):_PPnoun(parser);
|
|
|
+ LOOP{if(Pstop(parser))Perror(parser,"trailing-strand");
|
|
|
+ a=flat?PPatom(parser):_PPnoun(parser);
|
|
|
Ap(l,a);
|
|
|
if(!((tok=Plook(parser,0))&&tok->tag==T_PUNCT&&strcmp(tok->text,",:")==0))BR;
|
|
|
Peat(parser);}
|