view t.c @ 0:e0bbaa717f41 draft default tip

lol J
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 25 Nov 2013 11:56:30 -0500
parents
children
line wrap: on
line source

/* Copyright 1990-2011, Jsoftware Inc.  All rights reserved. */
/* License in license.txt.                                   */
/*                                                                         */
/* Table of Primitive Symbols                                              */

#include "j.h"


C ctype[256]={
 0,  0,  0,  0,  0,  0,  0,  0,  0, CS,  0,  0,  0,  0,  0,  0, /* 0                  */
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 1                  */
CS,  0,  0,  0,  0,  0,  0, CQ,  0,  0,  0,  0,  0,  0, CD,  0, /* 2  !"#$%&'()*+,-./ */
C9, C9, C9, C9, C9, C9, C9, C9, C9, C9, CC,  0,  0,  0,  0,  0, /* 3 0123456789:;<=>? */
 0, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, /* 4 @ABCDEFGHIJKLMNO */
CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA,  0,  0,  0,  0, C9, /* 5 PQRSTUVWXYZ[\]^_ */
 0, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, /* 6 `abcdefghijklmno */
CA, CA, CA, CA, CA, CA, CA, CA, CA, CA, CA,  0,  0,  0,  0,  0, /* 7 pqrstuvwxyz{|}~  */
};
/*   1   2   3   4   5   6   7   8   9   a   b   c   d   e   f   */

static B jtpdef(J jt,C id,I t,AF f1,AF f2,I m,I l,I r){A z;V*v;
 GA(z,t,1,0,0); ACX(z); v=VAV(z);
 v->f1=f1?f1:jtdomainerr1;  /* monad C function */
 v->f2=f2?f2:jtdomainerr2;  /* dyad  C function */
 v->mr=m;                   /* monadic rank     */
 v->lr=l;                   /* left    rank     */
 v->rr=r;                   /* right   rank     */
 v->fdep=1;                 /* function depth   */
 v->id=id;                  /* spelling         */
 pst[(UC)id]=z;             /* other fields are zeroed in ga() */
 R 1;
}

B jtpinit(J jt){A t;C*s;
 MC(wtype,ctype,256L); wtype['N']=CN; wtype['B']=CB;
 GA(alp,LIT,NALP,1,0); s=CAV(alp); DO(NALP,*s++=(C)i;); 
 /*  a. */  pst[(UC)CALP ]=t=alp;                 ACX(t);
 /*  a: */  pst[(UC)CACE ]=t=ace=sc4(BOX,(I)mtv); ACX(t);
 /*  (  */  pst[(UC)CLPAR]=t=sc4(LPAR,0L);        ACX(t);
 /*  )  */  pst[(UC)CRPAR]=t=sc4(RPAR,0L);        ACX(t);
 /*  =. */  GA(t,ASGN,1,0,0); ACX(t); *CAV(t)=CASGN;  pst[(UC)CASGN ]=t;
 /*  =: */  GA(t,ASGN,1,0,0); ACX(t); *CAV(t)=CGASGN; pst[(UC)CGASGN]=t;
                                                        
 /*  =  */  pdef(CEQ,     VERB, jtsclass,  jteq,     RMAX,0,   0   );
 /*  =. */       /* see above */
 /*  =: */       /* see above */
 /*  <  */  pdef(CBOX,    VERB, jtbox,     jtlt,     RMAX,0,   0   );
 /*  <. */  pdef(CFLOOR,  VERB, jtfloor1,  jtminimum,0,   0,   0   );
 /*  <: */  pdef(CLE,     VERB, jtdecrem,  jtle,     0,   0,   0   );
 /*  >  */  pdef(COPE,    VERB, jtope,     jtgt,     0,   0,   0   );
 /*  >. */  pdef(CCEIL,   VERB, jtceil1,   jtmaximum,0,   0,   0   );
 /*  >: */  pdef(CGE,     VERB, jtincrem,  jtge,     0,   0,   0   );
 /*  +  */  pdef(CPLUS,   VERB, jtconjug,  jtplus,   0,   0,   0   );
 /*  +. */  pdef(CPLUSDOT,VERB, jtrect,    jtgcd,    0,   0,   0   );
 /*  +: */  pdef(CPLUSCO, VERB, jtduble,   jtnor,    0,   0,   0   );
 /*  *  */  pdef(CSTAR,   VERB, jtsignum,  jttymes,  0,   0,   0   );
 /*  *. */  pdef(CSTARDOT,VERB, jtpolar,   jtlcm,    0,   0,   0   );
 /*  *: */  pdef(CSTARCO, VERB, jtsquare,  jtnand,   0,   0,   0   );
 /*  -  */  pdef(CMINUS,  VERB, jtnegate,  jtminus,  0,   0,   0   );
 /*  -. */  pdef(CNOT,    VERB, jtnot,     jtless,   0,   RMAX,RMAX);
 /*  -: */  pdef(CHALVE,  VERB, jthalve,   jtmatch,  0,   RMAX,RMAX);
 /*  %  */  pdef(CDIV,    VERB, jtrecip,   jtdivide, 0,   0,   0   );
 /*  %. */  pdef(CDOMINO, VERB, jtminv,    jtmdiv,   2,   RMAX,2   );
 /*  %: */  pdef(CSQRT,   VERB, jtsqroot,  jtroot,   0,   0,   0   );
 /*  ^  */  pdef(CEXP,    VERB, jtexpn1,   jtexpn2,  0,   0,   0   );
 /*  ^. */  pdef(CLOG,    VERB, jtlogar1,  jtlogar2, 0,   0,   0   );
 /*  ^: */  pdef(CPOWOP,  CONJ, 0L,        jtpowop,  0,   0,   0   );
 /*  $  */  pdef(CDOLLAR, VERB, jtshapex,  jtreitem, RMAX,1,   RMAX);
 /*  $. */  pdef(CSPARSE, VERB, jtsparse1, jtsparse2,RMAX,RMAX,RMAX);
 /*  $: */  pdef(CSELF,   VERB, jtself1,   jtself2,  RMAX,RMAX,RMAX);
 /*  ~  */  pdef(CTILDE,  ADV,  jtswap,    0L,       0,   0,   0   );
 /*  ~. */  pdef(CNUB,    VERB, jtnub,     0L,       RMAX,0,   0   );
 /*  ~: */  pdef(CNE,     VERB, jtnubsieve,jtne,     RMAX,0,   0   );
 /*  |  */  pdef(CSTILE,  VERB, jtmag,     jtresidue,0,   0,   0   );
 /*  |. */  pdef(CREV,    VERB, jtreverse, jtrotate, RMAX,1,   RMAX);
 /*  |: */  pdef(CCANT,   VERB, jtcant1,   jtcant2,  RMAX,1,   RMAX);
 /*  .  */  pdef(CDOT,    CONJ, 0L,        jtdot,    0,   0,   0   );
 /*  .. */  pdef(CEVEN,   CONJ, 0L,        jteven,   0,   0,   0   );
 /*  .: */  pdef(CODD,    CONJ, 0L,        jtodd,    0,   0,   0   );
 /*  :  */  pdef(CCOLON,  CONJ, 0L,        jtcolon,  0,   0,   0   );
 /*  :. */  pdef(COBVERSE,CONJ, 0L,        jtobverse,0,   0,   0   );
 /*  :: */  pdef(CADVERSE,CONJ, 0L,        jtadverse,0,   0,   0   );
 /*  ,  */  pdef(CCOMMA,  VERB, jtravel,   jtover,   RMAX,RMAX,RMAX);
 /*  ,* */  pdef(CAPIP,   VERB, 0L,        jtapip,   0,   RMAX,RMAX);
 /*  ,. */  pdef(CCOMDOT, VERB, jttable,   jtstitch, RMAX,RMAX,RMAX);
 /*  ,: */  pdef(CLAMIN,  VERB, jtlamin1,  jtlamin2, RMAX,RMAX,RMAX);
 /*  ;  */  pdef(CSEMICO, VERB, jtraze,    jtlink,   RMAX,RMAX,RMAX);
 /*  ;. */  pdef(CCUT,    CONJ, 0L,        jtcut,    0,   0,   0   );
 /*  ;: */  pdef(CWORDS,  VERB, jtwords,   jtfsm,    1,   RMAX,RMAX);
 /*  #  */  pdef(CPOUND,  VERB, jttally,   jtrepeat, RMAX,1,   RMAX);
 /*  #. */  pdef(CBASE,   VERB, jtbase1,   jtbase2,  1,   1,   1   );
 /*  #: */  pdef(CABASE,  VERB, jtabase1,  jtabase2, RMAX,1,   0   );
 /*  !  */  pdef(CBANG,   VERB, jtfact,    jtoutof,  0,   0,   0   );
 /*  !. */  pdef(CFIT,    CONJ, 0L,        jtfit,    0,   0,   0   );
 /*  !: */  pdef(CIBEAM,  CONJ, 0L,        jtforeign,0,   0,   0   );
 /*  /  */  pdef(CSLASH,  ADV,  jtslash,   0L,       0,   0,   0   );
 /*  /. */  pdef(CSLDOT,  ADV,  jtsldot,   0L,       0,   0,   0   );
 /*  /: */  pdef(CGRADE,  VERB, jtgrade1,  jtgrade2, RMAX,RMAX,RMAX);
 /*  \  */  pdef(CBSLASH, ADV,  jtbslash,  0L,       0,   0,   0   );
 /*  \. */  pdef(CBSDOT,  ADV,  jtbsdot,   0L,       0,   0,   0   );
 /*  \: */  pdef(CDGRADE, VERB, jtdgrade1, jtdgrade2,RMAX,RMAX,RMAX);
 /*  [  */  pdef(CLEFT,   VERB, jtright1,  jtleft2,  RMAX,RMAX,RMAX);
 /*  [: */  pdef(CCAP,    VERB, 0L,        0L,       RMAX,RMAX,RMAX);
 /*  ]  */  pdef(CRIGHT,  VERB, jtright1,  jtright2, RMAX,RMAX,RMAX);
 /*  {  */  pdef(CLBRACE, VERB, jtcatalog, jtfrom,   1,   0,   RMAX);
 /*  {. */  pdef(CHEAD,   VERB, jthead,    jttake,   RMAX,1,   RMAX);
 /*  {: */  pdef(CTAIL,   VERB, jttail,    0L,       RMAX,0,   0   );
 /*  }  */  pdef(CRBRACE, ADV,  jtrbrace,  0L,       0,   0,   0   );
 /*  }* */  pdef(CAMIP,   ADV,  jtamip,    0L,       0,   0,   0   );
 /*  }* */  pdef(CCASEV,  VERB, jtcasev,   0L,       RMAX,RMAX,RMAX); 
 /*  }. */  pdef(CBEHEAD, VERB, jtbehead,  jtdrop,   RMAX,1,   RMAX);
 /*  }: */  pdef(CCTAIL,  VERB, jtcurtail, 0L,       RMAX,0,   0   );
 /*  "  */  pdef(CQQ,     CONJ, 0L,        jtqq,     0,   0,   0   );
 /*  ". */  pdef(CEXEC,   VERB, jtexec1,   jtexec2,  1,   RMAX,RMAX);
 /*  ": */  pdef(CTHORN,  VERB, jtthorn1,  jtthorn2, RMAX,1,   RMAX);
 /*  `  */  pdef(CGRAVE,  CONJ, 0L,        jttie,    0,   0,   0   );
 /*  `. */       /* undefined */
 /*  `: */  pdef(CGRCO,   CONJ, 0L,        jtevger,  0,   0,   0   );
 /*  @  */  pdef(CAT,     CONJ, 0L,        jtatop,   0,   0,   0   );
 /*  @. */  pdef(CATDOT,  CONJ, 0L,        jtagenda, 0,   0,   0   );
 /*  @: */  pdef(CATCO,   CONJ, 0L,        jtatco,   0,   0,   0   );
 /*  &  */  pdef(CAMP,    CONJ, 0L,        jtamp,    0,   0,   0   );
 /*  &. */  pdef(CUNDER,  CONJ, 0L,        jtunder,  0,   0,   0   );
 /*  &: */  pdef(CAMPCO,  CONJ, 0L,        jtampco,  0,   0,   0   );
 /*  ?  */  pdef(CQUERY,  VERB, jtroll,    jtdeal,   0,   0,   0   );
 /*  ?. */  pdef(CQRYDOT, VERB, jtrollx,   jtdealx,  RMAX,0,   0   );
 /*  ?: */       /* undefined */
 /* {:: */  pdef(CFETCH,  VERB, jtmap,     jtfetch,  RMAX,1,   RMAX);
 /* }:: */  pdef(CEMEND,  ADV,  jtemend,   0L,       0,   0,   0   );
 /* &.: */  pdef(CUNDCO,  CONJ, 0L,        jtundco,  0,   0,   0   );
 /*  a. */       /* see above */
 /*  a: */       /* see above */
 /*  A. */  pdef(CATOMIC, VERB, jtadot1,   jtadot2,  1,   0,   RMAX);
 /*  b. */  pdef(CBDOT,   ADV,  jtbdot,    0L,       0,   0,   0   );
 /*  C. */  pdef(CCYCLE,  VERB, jtcdot1,   jtcdot2,  1,   1,   RMAX);
 /*  d. */  pdef(CDDOT,   CONJ, 0L,        jtddot,   0,   0,   0   );
 /*  D. */  pdef(CDCAP,   CONJ, 0L,        jtdcap,   0,   0,   0   );
 /*  D: */  pdef(CDCAPCO, CONJ, 0L,        jtdcapco, 0,   0,   0   );
 /*  e. */  pdef(CEPS,    VERB, jtrazein,  jteps,    RMAX,RMAX,RMAX);
 /*  E. */  pdef(CEBAR,   VERB, 0L,        jtebar,   0,   RMAX,RMAX);
 /*  f. */  pdef(CFIX,    ADV,  jtfix,     0L,       0,   0,   0   );
 /*  H. */  pdef(CHGEOM,  CONJ, 0L,        jthgeom,  0,   0,   0   );
 /*  i. */  pdef(CIOTA,   VERB, jtiota,    jtindexof,1,   RMAX,RMAX);
 /*  i: */  pdef(CICO,    VERB, jtjico1,   jtjico2,  0,   RMAX,RMAX);
 /*  I. */  pdef(CICAP,   VERB, jticap,    jticap2,  1,   RMAX,RMAX);
 /*  j. */  pdef(CJDOT,   VERB, jtjdot1,   jtjdot2,  0,   0,   0   );
 /*  L. */  pdef(CLDOT,   VERB, jtlevel1,  0L,       RMAX,0,   0   );
 /*  L: */  pdef(CLCAPCO, CONJ, 0L,        jtlcapco, 0,   0,   0   );
 /*  m. */       /* see above */
 /*  M. */  pdef(CMCAP,   ADV,  jtmemo,    0L,       0,   0,   0   );
 /*  n. */       /* see above */
 /*  o. */  pdef(CCIRCLE, VERB, jtpix,     jtcircle, 0,   0,   0   );
 /*  p. */  pdef(CPOLY,   VERB, jtpoly1,   jtpoly2,  1,   1,   0   );
 /*  p..*/  pdef(CPDERIV, VERB, jtpderiv1, jtpderiv2,1,   0,   1   );
 /*  p: */  pdef(CPCO,    VERB, jtprime,   jtpco2,   0,   RMAX,RMAX);
 /*  q: */  pdef(CQCO,    VERB, jtfactor,  jtqco2,   0,   0,   0   );
 /*  r. */  pdef(CRDOT,   VERB, jtrdot1,   jtrdot2,  0,   0,   0   );
 /*  s: */  pdef(CSCO,    VERB, jtsb1,     jtsb2,    RMAX,RMAX,RMAX);
 /*  S: */  pdef(CSCAPCO, CONJ, 0L,        jtscapco, 0,   0,   0   );
 /*  t. */  pdef(CTDOT,   ADV,  jttdot,    0L,       0,   0,   0   );
 /*  t: */  pdef(CTCO,    ADV,  jttco,     0L,       0,   0,   0   );
 /*  T. */  pdef(CTCAP,   CONJ, 0L,        jttcap,   0,   0,   0   );
 /*  u. */       /* see above */
 /*  u: */  pdef(CUCO,    VERB, jtuco1,    jtuco2,   RMAX,RMAX,RMAX);
 /*  v. */       /* see above */
 /*  x. */       /* see above */
 /*  x: */  pdef(CXCO,    VERB, jtxco1,    jtxco2,   RMAX,RMAX,RMAX);
 /*  y. */       /* see above */

 if(jt->jerr){printf("pinit failed; error %hhi\n", jt->jerr); R 0;} else R 1;
}