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

Diff for /OpenXM_contrib2/asir2000/parse/quote.c between version 1.21 and 1.22

version 1.21, 2005/04/07 08:33:12 version 1.22, 2005/09/27 03:00:21
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.20 2004/08/09 06:42:53 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.21 2005/04/07 08:33:12 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 6 
Line 6 
 void addquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)  void addquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 {  {
         FNODE fn;          FNODE fn;
           QUOTE t;
   
           objtoquote((Obj)a,&t); a = t; objtoquote((Obj)b,&t); b = t;
         fn = mkfnode(3,I_BOP,addfs,BDY(a),BDY(b));          fn = mkfnode(3,I_BOP,addfs,BDY(a),BDY(b));
         MKQUOTE(*c,fn);          MKQUOTE(*c,fn);
 }  }
Line 14  void addquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
Line 16  void addquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 void subquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)  void subquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 {  {
         FNODE fn;          FNODE fn;
           QUOTE t;
   
           objtoquote((Obj)a,&t); a = t; objtoquote((Obj)b,&t); b = t;
         fn = mkfnode(3,I_BOP,subfs,BDY(a),BDY(b));          fn = mkfnode(3,I_BOP,subfs,BDY(a),BDY(b));
         MKQUOTE(*c,fn);          MKQUOTE(*c,fn);
 }  }
Line 22  void subquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
Line 26  void subquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 void mulquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)  void mulquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 {  {
         FNODE fn;          FNODE fn;
           QUOTE t;
   
           objtoquote((Obj)a,&t); a = t; objtoquote((Obj)b,&t); b = t;
         fn = mkfnode(3,I_BOP,mulfs,BDY(a),BDY(b));          fn = mkfnode(3,I_BOP,mulfs,BDY(a),BDY(b));
         MKQUOTE(*c,fn);          MKQUOTE(*c,fn);
 }  }
Line 30  void mulquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
Line 36  void mulquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 void divquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)  void divquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 {  {
         FNODE fn;          FNODE fn;
           QUOTE t;
   
           objtoquote((Obj)a,&t); a = t; objtoquote((Obj)b,&t); b = t;
         fn = mkfnode(3,I_BOP,divfs,BDY(a),BDY(b));          fn = mkfnode(3,I_BOP,divfs,BDY(a),BDY(b));
         MKQUOTE(*c,fn);          MKQUOTE(*c,fn);
 }  }
Line 38  void divquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
Line 46  void divquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 void pwrquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)  void pwrquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 {  {
         FNODE fn;          FNODE fn;
           QUOTE t;
   
         if ( !b || OID(b) != O_QUOTE )          objtoquote((Obj)a,&t); a = t; objtoquote((Obj)b,&t); b = t;
                 error("pwrquote : invalid argument");  
         fn = mkfnode(3,I_BOP,pwrfs,BDY(a),BDY(b));          fn = mkfnode(3,I_BOP,pwrfs,BDY(a),BDY(b));
         MKQUOTE(*c,fn);          MKQUOTE(*c,fn);
 }  }
Line 48  void pwrquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
Line 56  void pwrquote(VL vl,QUOTE a,QUOTE b,QUOTE *c)
 void chsgnquote(QUOTE a,QUOTE *c)  void chsgnquote(QUOTE a,QUOTE *c)
 {  {
         FNODE fn;          FNODE fn;
           QUOTE t;
   
           objtoquote((Obj)a,&t); a = t;
         fn = mkfnode(1,I_MINUS,BDY(a));          fn = mkfnode(1,I_MINUS,BDY(a));
         MKQUOTE(*c,fn);          MKQUOTE(*c,fn);
 }  }
Line 452  FNODE flatten_fnode(FNODE f,char *opname)
Line 462  FNODE flatten_fnode(FNODE f,char *opname)
                 f2 = strip_paren(f2);                  f2 = strip_paren(f2);
                 if ( f1->id == I_BOP && !strcmp(((ARF)FA0(f1))->name,opname) ) {                  if ( f1->id == I_BOP && !strcmp(((ARF)FA0(f1))->name,opname) ) {
                         /* [op [op A B] C] => [op A [op B C]] */                          /* [op [op A B] C] => [op A [op B C]] */
                         return mkfnode(3,I_BOP,(ARF)FA0(f),FA1(f1),                          f2 = flatten_fnode(mkfnode(3,I_BOP,(ARF)FA0(f),FA2(f1),f2),opname);
                                 mkfnode(3,I_BOP,(ARF)FA0(f),FA2(f1),f2));                          return mkfnode(3,I_BOP,(ARF)FA0(f),FA1(f1),f2);
                 } else                  } else
                         return mkfnode(3,I_BOP,(ARF)FA0(f),f1,f2);                          return mkfnode(3,I_BOP,(ARF)FA0(f),f1,f2);
         } else {          } else {

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

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