[BACK]Return to spexpr.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / io

Diff for /OpenXM_contrib2/asir2000/io/spexpr.c between version 1.19 and 1.30

version 1.19, 2002/09/02 05:16:07 version 1.30, 2004/03/17 02:10:32
Line 44 
Line 44 
  * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY   * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  * $OpenXM: OpenXM_contrib2/asir2000/io/spexpr.c,v 1.18 2002/01/08 04:14:39 kondoh Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/spexpr.c,v 1.29 2004/03/03 09:25:30 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "al.h"  #include "al.h"
Line 52 
Line 52 
 #include "comp.h"  #include "comp.h"
 #include "base.h"  #include "base.h"
   
   #if defined(PARI)
   #include "genpari.h"
   #endif
   
 #ifndef SPRINT  #ifndef SPRINT
 #define SPRINT  #define SPRINT
 #endif  #endif
   
 #define PRINTHAT (fortran_output?PUTS("**"):PUTS("^"))  #define PRINTHAT (fortran_output?PUTS("**"):PUTS("^"))
   extern int outputstyle;
   
 #ifdef FPRINT  #ifdef FPRINT
 FILE *asir_out;  FILE *asir_out;
Line 66  int hex_output;
Line 71  int hex_output;
 int fortran_output;  int fortran_output;
 int double_output;  int double_output;
 int real_digit;  int real_digit;
   int real_binary;
 int print_quote;  int print_quote;
   
 #define TAIL  #define TAIL
Line 79  int print_quote;
Line 85  int print_quote;
 #define PRINTV printv  #define PRINTV printv
 #define PRINTEXPR printexpr  #define PRINTEXPR printexpr
 #define PRINTNUM printnum  #define PRINTNUM printnum
 #define PRINTP printp  #define PRINTP asir_printp
 #define PRINTR printr  #define PRINTR printr
 #define PRINTLIST printlist  #define PRINTLIST printlist
 #define PRINTVECT printvect  #define PRINTVECT printvect
Line 101  int print_quote;
Line 107  int print_quote;
 #define PRINTUP printup  #define PRINTUP printup
 #define PRINTUM printum  #define PRINTUM printum
 #define PRINTSF printsf  #define PRINTSF printsf
   #define PRINTSYMBOL printsymbol
   #define PRINTRANGE printrange
   #define PRINTTB printtb
   #define PRINTFNODE printfnode
   #define PRINTFNODENODE printfnodenode
   #define PRINTFARGS printfargs
 #endif  #endif
   
 #ifdef SPRINT  #ifdef SPRINT
Line 111  extern int hex_output;
Line 123  extern int hex_output;
 extern int fortran_output;  extern int fortran_output;
 extern int double_output;  extern int double_output;
 extern int real_digit;  extern int real_digit;
   extern int real_binary;
 extern int print_quote;  extern int print_quote;
   
   
 #define TAIL while ( *OUT ) OUT++;  #define TAIL while ( *OUT ) OUT++;
 #define PUTS(s) strcat(OUT,s)  #define PUTS(s) strcat(OUT,s)
 #define PRINTF sprintf  #define PRINTF sprintf
Line 124  extern int print_quote;
Line 138  extern int print_quote;
 #define PRINTV sprintv  #define PRINTV sprintv
 #define PRINTEXPR sprintexpr  #define PRINTEXPR sprintexpr
 #define PRINTNUM sprintnum  #define PRINTNUM sprintnum
 #define PRINTP sprintp  #define PRINTP asir_sprintp
 #define PRINTR sprintr  #define PRINTR sprintr
 #define PRINTLIST sprintlist  #define PRINTLIST sprintlist
 #define PRINTVECT sprintvect  #define PRINTVECT sprintvect
Line 146  extern int print_quote;
Line 160  extern int print_quote;
 #define PRINTUP sprintup  #define PRINTUP sprintup
 #define PRINTUM sprintum  #define PRINTUM sprintum
 #define PRINTSF sprintsf  #define PRINTSF sprintsf
   #define PRINTSYMBOL sprintsymbol
   #define PRINTRANGE sprintrange
   #define PRINTTB sprinttb
   #define PRINTFNODE sprintfnode
   #define PRINTFNODENODE sprintfnodenode
   #define PRINTFARGS sprintfargs
 #endif  #endif
   
 void PRINTEXPR();  void PRINTEXPR();
Line 177  void PRINTEOP();
Line 197  void PRINTEOP();
 void PRINTLOP();  void PRINTLOP();
 void PRINTQOP();  void PRINTQOP();
 void PRINTSF();  void PRINTSF();
   void PRINTSYMBOL();
   void PRINTRANGE();
   void PRINTTB();
   void PRINTFNODE();
   
 #ifdef FPRINT  #ifdef FPRINT
 void output_init() {  void output_init() {
Line 203  P p;
Line 227  P p;
                 return (mmono(COEF(DC(p))));                  return (mmono(COEF(DC(p))));
 }  }
   
 #if PARI  #if defined(PARI)
 void printbf(a)  void printbf(a)
 BF a;  BF a;
 {  {
         void sor();  
   
         sor(a->body,double_output ? 'f' : 'g',-1,0);          sor(a->body,double_output ? 'f' : 'g',-1,0);
 }  }
 #endif  #endif
Line 221  char *s;
Line 243  char *s;
         s[0] = 0; buf = s;          s[0] = 0; buf = s;
 }  }
   
 #if PARI  #if defined(PARI)
 #include "genpari.h"  
   
 void myoutbrute(g)  void myoutbrute(g)
 GEN g;  GEN g;
 {  {
   # if PARI_VERSION_CODE > 131588
           brute(g, 'f', -1);
   # else
         bruteall(g,'f',-1,1);          bruteall(g,'f',-1,1);
   # endif
 }  }
   
 void sprintbf(a)  void sprintbf(a)
 BF a;  BF a;
 {  {
         char *str;          char *str;
         char *GENtostr();  
         char *GENtostr0();          char *GENtostr0();
   
         if ( double_output ) {          if ( double_output ) {
Line 292  Obj p;
Line 315  Obj p;
                         PRINTBYTEARRAY(vl,(BYTEARRAY)p); break;                          PRINTBYTEARRAY(vl,(BYTEARRAY)p); break;
                 case O_QUOTE:                  case O_QUOTE:
                         PRINTQUOTE(vl,(QUOTE)p); break;                          PRINTQUOTE(vl,(QUOTE)p); break;
                   case O_SYMBOL:
                           PRINTSYMBOL((SYMBOL)p); break;
                   case O_RANGE:
                           PRINTRANGE(vl,(RANGE)p); break;
                   case O_TB:
                           PRINTTB(vl,(TB)p); break;
                 default:                  default:
                         break;                          break;
         }          }
Line 393  Num q;
Line 422  Num q;
                                 case MID_PRINTF_G:                                  case MID_PRINTF_G:
 #endif  #endif
                                 default:                                  default:
                                         if ( real_digit ) {                                          if ( real_binary ) {
                                                   unsigned int *m;
                                                   unsigned int u,l,mask;
                                                   int i,expo;
   
                                                   m = (unsigned int *)&BDY((Real)q);
   #if defined(__i386__) || defined(MIPSEL) || defined(VISUAL) || defined(__alpha) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__x86_64)
                                                   u = m[1]; l = m[0];
   #else
                                                   u = m[0]; l = m[1];
   #endif
                                                   if (u&0x80000000) {
                                                           TAIL PRINTF(OUT,"-");
                                                   }
                                                   u &= 0x7fffffff;
                                                   expo = ((int)(u>>20));
                                                   u &= 0xfffff;
                                                   if ( expo == 2047 ) {
                                                           if ( u || l ) {
                                                                   TAIL PRINTF(OUT,"NaN");
                                                           } else {
                                                                   TAIL PRINTF(OUT,"Inf");
                                                           }
                                                   } else if ( expo == 0 ) {
                                                           if ( u || l ) {
                                                                   TAIL PRINTF(OUT,"0b0.");
                                                                   for ( i = 0, mask = 0x80000; i < 20;
                                                                           i++, mask >>= 1) {
                                                                           TAIL
                                                                           if ( u&mask )
                                                                                   PRINTF(OUT,"1");
                                                                           else
                                                                                   PRINTF(OUT,"0");
                                                                   }
                                                                   for ( i = 0, mask = 0x80000000; i < 32;
                                                                           i++, mask >>= 1) {
                                                                           TAIL
                                                                           if ( l&mask )
                                                                                   PRINTF(OUT,"1");
                                                                           else
                                                                                   PRINTF(OUT,"0");
                                                                   }
                                                                   TAIL PRINTF(OUT,"*2^%d",-1022);
                                                           } else {
                                                                   TAIL PRINTF(OUT,"0");
                                                           }
                                                   } else {
                                                           expo -= 1023;
                                                           TAIL PRINTF(OUT,"0b1.");
                                                           for ( i = 0, mask = 0x80000; i < 20;
                                                                   i++, mask >>= 1) {
                                                                   TAIL
                                                                   if ( u&mask )
                                                                           PRINTF(OUT,"1");
                                                                   else
                                                                           PRINTF(OUT,"0");
                                                           }
                                                           for ( i = 0, mask = 0x80000000; i < 32;
                                                                   i++, mask >>= 1) {
                                                                   TAIL
                                                                   if ( l&mask )
                                                                           PRINTF(OUT,"1");
                                                                   else
                                                                           PRINTF(OUT,"0");
                                                           }
                                                           if ( expo ) {
                                                                   TAIL PRINTF(OUT,"*2^%d",expo);
                                                           }
                                                   }
                                           } else if ( real_digit ) {
                                                 sprintf(real_format,                                                  sprintf(real_format,
                                                         double_output?"%%.%df":"%%.%dg",real_digit);                                                          double_output?"%%.%df":"%%.%dg",real_digit);
                                                 TAIL PRINTF(OUT,real_format,BDY((Real)q));                                                  TAIL PRINTF(OUT,real_format,BDY((Real)q));
Line 406  Num q;
Line 504  Num q;
                 case N_A:                  case N_A:
                         PUTS("("); PRINTR(ALG,(R)BDY((Alg)q)); PUTS(")");                          PUTS("("); PRINTR(ALG,(R)BDY((Alg)q)); PUTS(")");
                         break;                          break;
 #if PARI  #if defined(PARI)
                 case N_B:                  case N_B:
                         PRINTBF((BF)q); break;                          PRINTBF((BF)q); break;
 #endif  #endif
 #if defined(INTERVAL)  #if defined(INTERVAL)
                 case N_IP:                  case N_IP:
                 case N_IntervalBigFloat:                  case N_IntervalBigFloat:
                         PUTS("[");                          switch ( outputstyle ) {
                         PRINTNUM(INF((Itv)q));                                  case 1:
                         PUTS(",");                                          PUTS("intval(");
                         PRINTNUM(SUP((Itv)q));                                          PRINTNUM(INF((Itv)q));
                         PUTS("]");                                          PUTS(",");
                                           PRINTNUM(SUP((Itv)q));
                                           PUTS(")");
                                           break;
                                   case 0:
                                   default:
                                           PUTS("[");
                                           PRINTNUM(INF((Itv)q));
                                           PUTS(",");
                                           PRINTNUM(SUP((Itv)q));
                                           PUTS("]");
                                           break;
                           }
                         break;                          break;
                 case N_IntervalDouble:                  case N_IntervalDouble:
                         switch (printmode) {                          switch (printmode) {
                                 case PRINTF_E:                                  case PRINTF_E:
                                         TAIL PRINTF(OUT, "[%.16e,%.16e]",INF((IntervalDouble)q),SUP((IntervalDouble)q));                                          switch ( outputstyle ) {
                                                   case 1:
                                                           TAIL PRINTF(OUT, "intval(%.16e,%.16e)",
                                                                   INF((IntervalDouble)q),SUP((IntervalDouble)q));
                                                           break;
                                                   case 0:
                                                   default:
                                                           TAIL PRINTF(OUT, "[%.16e,%.16e]",
                                                                   INF((IntervalDouble)q),SUP((IntervalDouble)q));
                                                           break;
                                           }
 #if defined(ITVDEBUG)  #if defined(ITVDEBUG)
                                         printbin(INF((IntervalDouble)q));                                          printbin(INF((IntervalDouble)q));
                                         printbin(SUP((IntervalDouble)q));                                          printbin(SUP((IntervalDouble)q));
 #endif  #endif
                                         break;                                          break;
                                 case MID_PRINTF_G:                                  case MID_PRINTF_G:
                                         TAIL PRINTF(OUT, "<%g,%g>", (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,(SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5);                                          switch ( outputstyle ) {
                                                   case 1:
                                                           TAIL PRINTF(OUT, "intvalm(%g,%g)",
                                                                   (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,
                                                                   (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5);
                                                           break;
                                                   case 0:
                                                   default:
                                                           TAIL PRINTF(OUT, "<%g,%g>",
                                                                   (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,
                                                                   (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5);
                                                           break;
                                           }
                                         break;                                          break;
                                 case MID_PRINTF_E:                                  case MID_PRINTF_E:
                                         TAIL PRINTF(OUT, "<%.16e,%.16e>", (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,(SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5);                                          switch ( outputstyle ) {
                                                   case 1:
                                                           TAIL PRINTF(OUT, "intvalm(%.16e,%.16e)",
                                                           (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,
                                                           (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5);
                                                           break;
                                                   case 0:
                                                   default:
                                                           TAIL PRINTF(OUT, "<%.16e,%.16e>",
                                                           (SUP((IntervalDouble)q)+INF((IntervalDouble)q))*0.5,
                                                           (SUP((IntervalDouble)q)-INF((IntervalDouble)q))*0.5);
                                                           break;
                                           }
                                         break;                                          break;
                                 case PRINTF_G:                                  case PRINTF_G:
                                 default:                                  default:
                                         TAIL PRINTF(OUT, "[%g,%g]",INF((IntervalDouble)q),SUP((IntervalDouble)q));                                          switch ( outputstyle ) {
                                                   case 1:
                                                           TAIL PRINTF(OUT, "intval(%g,%g)",
                                                                   INF((IntervalDouble)q),SUP((IntervalDouble)q));
                                                           break;
                                                   case 0:
                                                   default:
                                                           TAIL PRINTF(OUT, "[%g,%g]",
                                                                   INF((IntervalDouble)q),SUP((IntervalDouble)q));
                                                           break;
                                           }
                                 break;                                  break;
                         }                          }
                         break;                          break;
Line 619  VECT vect;
Line 773  VECT vect;
         int i;          int i;
         pointer *ptr;          pointer *ptr;
   
         PUTS("[ ");          switch ( outputstyle ) {
         for ( i = 0, ptr = BDY(vect); i < vect->len; i++ ) {                  case 1:
                 PRINTEXPR(vl,ptr[i]); PUTS(" ");                          PUTS("vect(");
                           for ( i = 0, ptr = BDY(vect); i < vect->len; i++ ) {
                                   if ( i != 0 ) PUTS(",");
                                   PRINTEXPR(vl,ptr[i]);
                           }
                           PUTS(")");
                           break;
                   case 0:
                   default:
                           PUTS("[ ");
                           for ( i = 0, ptr = BDY(vect); i < vect->len; i++ ) {
                                   PRINTEXPR(vl,ptr[i]); PUTS(" ");
                           }
                           PUTS("]");
                           break;
         }          }
         PUTS("]");  
 }  }
   
 void PRINTMAT(vl,mat)  void PRINTMAT(vl,mat)
Line 633  MAT mat;
Line 800  MAT mat;
         int i,j,r,c;          int i,j,r,c;
         pointer *ptr;          pointer *ptr;
   
         for ( i = 0, r = mat->row, c = mat->col; i < r; i++ ) {          switch ( outputstyle ) {
                 PUTS("[ ");                  case 1:
                 for ( j = 0, ptr = BDY(mat)[i]; j < c; j++ ) {                          PUTS("mat(\n");
                         PRINTEXPR(vl,ptr[j]); PUTS(" ");                          for ( i = 0, r = mat->row, c = mat->col; i < r; i++ ) {
                 }                                  if ( i != 0 ) PUTS(",\n");
                 PUTS("]");                                  PUTS("[ ");
                 if ( i < r - 1 )                                  for ( j = 0, ptr = BDY(mat)[i]; j < c; j++ ) {
                         PUTS("\n");                                          if ( j != 0 ) PUTS(",");
                                           PRINTEXPR(vl,ptr[j]);
                                   }
                                   PUTS(" ]");
                           }
                           PUTS(")");
                           break;
                   case 0:
                   default:
                           for ( i = 0, r = mat->row, c = mat->col; i < r; i++ ) {
                                   PUTS("[ ");
                                   for ( j = 0, ptr = BDY(mat)[i]; j < c; j++ ) {
                                           PRINTEXPR(vl,ptr[j]); PUTS(" ");
                                   }
                                   PUTS("]");
                                   if ( i < r - 1 )
                                           PUTS("\n");
                           }
                           break;
         }          }
 }  }
   
Line 782  QUOTE quote;
Line 967  QUOTE quote;
 {  {
         LIST list;          LIST list;
   
         if ( print_quote ) {          if ( print_quote == 1 ) {
                 fnodetotree(BDY(quote),&list);                  fnodetotree(BDY(quote),&list);
                 PRINTEXPR(vl,(Obj)list);                  PRINTEXPR(vl,(Obj)list);
           } else if ( print_quote == 2 ) {
                   PRINTFNODE(BDY(quote),0);
         } else {          } else {
                 PUTS("<...quoted...>");                  PUTS("<...quoted...>");
         }          }
Line 1011  unsigned int i;
Line 1198  unsigned int i;
         } else {          } else {
                 TAIL PRINTF(OUT,"@_%d",IFTOF(i));                  TAIL PRINTF(OUT,"@_%d",IFTOF(i));
         }          }
   }
   
   void PRINTSYMBOL(SYMBOL sym)
   {
           PUTS(sym->name);
   }
   
   void PRINTRANGE(VL vl,RANGE p)
   {
           PUTS("range(");
           PRINTEXPR(vl,p->start);
           PUTS(",");
           PRINTEXPR(vl,p->end);
           PUTS(")");
   }
   
   void PRINTTB(VL vl,TB p)
   {
           int i;
   
           for ( i = 0; i < p->next; i++ ) {
                   PUTS(p->body[i]);
           }
   }
   
   void PRINTFNODENODE(NODE n)
   {
           for ( ; n; n = NEXT(n) ) {
                   PRINTFNODE((FNODE)BDY(n),0);
                   if ( NEXT(n) ) PUTS(",");
           }
   }
   
   void PRINTFARGS(FNODE f)
   {
           NODE n;
   
           if ( f->id == I_LIST ) {
                   n = (NODE)FA0(f);
                   PRINTFNODENODE(n);
           } else
                   PRINTFNODE(f,0);
   }
   
   void PRINTFNODE(FNODE f,int paren)
   {
           NODE n,t,t0;
           char vname[BUFSIZ],prefix[BUFSIZ];
           char *opname,*vname_conv,*prefix_conv;
           Obj obj;
           int i,len,allzero,elen,elen2;
           C cplx;
           char *r;
           FNODE fi,f2;
   
           if ( !f ) {
                   PUTS("(0)");
                   return;
           }
           if ( paren ) PUTS("(");
           switch ( f->id ) {
                   /* unary operators */
                   case I_NOT: PRINTFNODE((FNODE)FA0(f),1); break;
                   case I_PAREN: PRINTFNODE((FNODE)FA0(f),0); break;
                   case I_MINUS: PUTS("-"); PRINTFNODE((FNODE)FA0(f),1); break;
                   /* binary operators */
                   /* arg list */
                   /* I_AND, I_OR => FA0(f), FA1(f) */
                   /* otherwise   => FA1(f), FA2(f) */
                   case I_BOP:
                           PRINTFNODE((FNODE)FA1(f),1);
                           PUTS(((ARF)FA0(f))->name);
                           PRINTFNODE((FNODE)FA2(f),1);
                           break;
                   case I_COP:
                           switch( (cid)FA0(f) ) {
                                   case C_EQ: opname = ("=="); break;
                                   case C_NE: opname = ("!="); break;
                                   case C_GT: opname = (">"); break;
                                   case C_LT: opname = ("<"); break;
                                   case C_GE: opname = (">="); break;
                                   case C_LE: opname = ("<="); break;
                           }
                           PRINTFNODE((FNODE)FA1(f),1);
                           PUTS(opname);
                           PRINTFNODE((FNODE)FA2(f),1);
                           break;
                   case I_LOP:
                           switch( (lid)FA0(f) ) {
                                   case L_EQ: opname = ("@=="); break;
                                   case L_NE: opname = ("@!="); break;
                                   case L_GT: opname = ("@>"); break;
                                   case L_LT: opname = ("@<"); break;
                                   case L_GE: opname = ("@>="); break;
                                   case L_LE: opname = ("@<="); break;
                                   case L_AND: opname = ("@&&"); break;
                                   case L_OR: opname = ("@||"); break;
                                   case L_NOT: opname = ("@!"); break;
                           }
                           if ( (lid)FA0(f)==L_NOT ) {
                                   PUTS(opname); PRINTFNODE((FNODE)FA1(f),1);
                           } else {
                                   PRINTFNODE((FNODE)FA1(f),1);
                                   PUTS(opname);
                                   PRINTFNODE((FNODE)FA2(f),1);
                           }
                           break;
                   case I_AND:
                           PRINTFNODE((FNODE)FA0(f),1);
                           PUTS("&&");
                           PRINTFNODE((FNODE)FA1(f),1);
                           break;
                   case I_OR:
                           PRINTFNODE((FNODE)FA0(f),1);
                           PUTS("!!");
                           PRINTFNODE((FNODE)FA1(f),1);
                           break;
                   /* ternary operators */
                   case I_CE:
                           PRINTFNODE((FNODE)FA0(f),1); PUTS("?"); PRINTFNODE((FNODE)FA1(f),1);
                           PUTS(":"); PRINTFNODE((FNODE)FA2(f),1);
                           break;
                   /* lists */
                   case I_LIST: PUTS("["); PRINTFNODENODE((NODE)FA0(f)); PUTS("]"); break;
                   /* function */
                   case I_FUNC:
                           if ( !strcmp(((FUNC)FA0(f))->name,"@pi") ) PUTS("@pi");
                           else if ( !strcmp(((FUNC)FA0(f))->name,"@e") ) PUTS("@e");
                           else {
                                   PUTS(((FUNC)FA0(f))->name);
                                   PUTS("("); PRINTFARGS(FA1(f)); PUTS(")");
                           }
                           break;
                   /* XXX */
                   case I_CAR: PUTS("car("); PRINTFNODE(FA0(f),0); PUTS(")"); break;
                   case I_CDR: PUTS("cdr("); PRINTFNODE(FA0(f),0); PUTS(")"); break;
                   /* exponent vector */
                   case I_EV: PUTS("<<"); PRINTFNODENODE((NODE)FA0(f)); PUTS(">>"); break;
                   /* string */
                   case I_STR: PUTS((char *)FA0(f)); break;
                   /* internal object */
                   case I_FORMULA: obj = (Obj)FA0(f); PRINTEXPR(CO,obj); break;
                   /* program variable */
                   case I_PVAR:
                           if ( FA1(f) )
                                   error("printfnode : not implemented yet");
                           GETPVNAME(FA0(f),opname);
                           PUTS(opname);
                           break;
                   default: error("printfnode : not implemented yet");
           }
           if ( paren ) PUTS(")");
 }  }

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.30

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>