[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.14 and 1.15

version 1.14, 2004/07/07 07:40:19 version 1.15, 2004/07/08 02:58:19
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.13 2004/03/11 09:52:56 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/parse/quote.c,v 1.14 2004/07/07 07:40:19 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 406  void get_fid_spec(fid id,fid_spec_p *spec)
Line 406  void get_fid_spec(fid id,fid_spec_p *spec)
         *spec = 0;          *spec = 0;
 }  }
   
   FNODE strip_paren(FNODE f)
   {
           if ( !f || f->id != I_PAREN ) return f;
           else {
                   return strip_paren((FNODE)FA0(f));
           }
   }
   
 FNODE flatten_fnode(FNODE f,char *opname)  FNODE flatten_fnode(FNODE f,char *opname)
 {  {
         fid_spec_p spec;          fid_spec_p spec;
Line 421  FNODE flatten_fnode(FNODE f,char *opname)
Line 429  FNODE flatten_fnode(FNODE f,char *opname)
         if ( !spec ) return f;          if ( !spec ) return f;
         if ( id == I_BOP && !strcmp(((ARF)FA0(f))->name,opname) ) {          if ( id == I_BOP && !strcmp(((ARF)FA0(f))->name,opname) ) {
                 f1 = (pointer)flatten_fnode(FA1(f),opname);                  f1 = (pointer)flatten_fnode(FA1(f),opname);
                   f1 = strip_paren(f1);
                 f2 = (pointer)flatten_fnode(FA2(f),opname);                  f2 = (pointer)flatten_fnode(FA2(f),opname);
                   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) ) {
                         /* [+ [+ A B] C] => [+ A [+ B C]] */                          /* [+ [+ A B] C] => [+ A [+ B C]] */
                         return mkfnode(3,I_BOP,(ARF)FA0(f),FA1(f1),                          return mkfnode(3,I_BOP,(ARF)FA0(f),FA1(f1),

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

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