[BACK]Return to OM2OXM.java CVS log [TXT][DIR] Up to [local] / OpenXM / src / OpenMath

Diff for /OpenXM/src/OpenMath/OM2OXM.java between version 1.3 and 1.11

version 1.3, 1999/11/12 07:46:37 version 1.11, 1999/11/17 08:37:29
Line 1 
Line 1 
 /**  /**
  * $OpenXM: OpenXM/src/OpenMath/OM2OXM.java,v 1.2 1999/11/04 19:36:41 tam Exp $   * $OpenXM: OpenXM/src/OpenMath/OM2OXM.java,v 1.10 1999/11/17 07:04:25 tam Exp $
  *   *
  * $B$3$N%/%i%9$G$O0J2<$N(B BNF $B$GI=$5$l$k9=J82r@O$r<BAu$7$F$$$k(B   * $B$3$N%/%i%9$G$O0J2<$N(B BNF $B$GI=$5$l$k9=J82r@O$r<BAu$7$F$$$k(B
  * expr -> stag [expr | immediate]* etag   * expr -> stag [expr | immediate]* etag
Line 39  final class OM2OXM implements Runnable{
Line 39  final class OM2OXM implements Runnable{
   private int token = TT_NULL;    private int token = TT_NULL;
   private boolean lexPushbackFlag = false;    private boolean lexPushbackFlag = false;
   private OpenXM asir; // for debug    private OpenXM asir; // for debug
   private boolean debug = true;    private boolean debug = false;
   
   // Token Type for lexical analyzer    // Token Type for lexical analyzer
   final static int TT_NULL      = 0;    final static int TT_NULL      = 0;
Line 54  final class OM2OXM implements Runnable{
Line 54  final class OM2OXM implements Runnable{
       while(true){        while(true){
         CMO tmp;          CMO tmp;
   
         Thread.yield();  
   
         switch(asir.receiveOXtag()){          switch(asir.receiveOXtag()){
         case OpenXM.OX_COMMAND:          case OpenXM.OX_COMMAND:
           asir.receiveSM();            asir.receiveSM();
Line 75  final class OM2OXM implements Runnable{
Line 73  final class OM2OXM implements Runnable{
     return "<OMOBJ>"+ CMO2OM_sub(cmo) +"</OMOBJ>";      return "<OMOBJ>"+ CMO2OM_sub(cmo) +"</OMOBJ>";
   }    }
   
   private static String CMO2OM_sub(CMO cmo){    private static String CMO2OM_sub(CMO cmo) throws NumberFormatException{
     String ret = "";      String ret = "";
   
     switch(cmo.getDISCRIMINATOR()){      switch(cmo.getDISCRIMINATOR()){
Line 117  final class OM2OXM implements Runnable{
Line 115  final class OM2OXM implements Runnable{
   
     case CMO.CMO_DMS_GENERIC:      case CMO.CMO_DMS_GENERIC:
       ret += "<OMA><OMS name=\"PolyRing\" cd=\"poly\"/>";        ret += "<OMA><OMS name=\"PolyRing\" cd=\"poly\"/>";
       ret += "<OMI>2</OMI>";        ret += "<OMI>2</OMI></OMA>";
       return ret;        return ret;
   
     case CMO.CMO_DISTRIBUTED_POLYNOMIAL:      case CMO.CMO_DISTRIBUTED_POLYNOMIAL:
Line 131  final class OM2OXM implements Runnable{
Line 129  final class OM2OXM implements Runnable{
       ret += "</OMA></OMA>";        ret += "</OMA></OMA>";
       return ret;        return ret;
   
       case CMO.CMO_BIGFLOAT:
         ret += "<OMA><OMS name=\"times\" cd=\"basic\"/>";
         ret += CMO2OM_sub(((CMO_BIGFLOAT)cmo).getSyosubu());
         ret += "<OMA><OMS name=\"power\" cd=\"basic\"/>";
         ret += "<OMI>2</OMI>";
         ret += CMO2OM_sub(((CMO_BIGFLOAT)cmo).getShisubu());
         ret += "</OMA></OMA>";
         return ret;
   
     case CMO.CMO_INDETERMINATE:      case CMO.CMO_INDETERMINATE:
       return "<OMV name=\""+ ((CMO_INDETERMINATE)cmo).getString() +"\"/>";        return "<OMV name=\""+ ((CMO_INDETERMINATE)cmo).getString() +"\"/>";
   
       /*      case CMO.CMO_TREE:
         case CMO.CMO_TREE:        ret += "<OMA><OMS name=\""+ ((CMO_TREE)cmo).getName() +"\" cd=\""+
       return "<OMA><OMS name=\""+ "\"/>"+          ((CMO_TREE)cmo).getCDName() +"\"/>";
         "</OMA>";        for(int i=0;i<((CMO_TREE)cmo).getLeaves().getElement().length;i++){
         */          ret += CMO2OM_sub(((CMO_TREE)cmo).getLeaves().getElement()[i]);
         }
         ret += "</OMA>";
         return ret;
   
     default:      default:
       return "<OMSTR>"+ cmo.toCMOexpression() +"</OMSTR>";        //return "<OMSTR>"+ cmo.toCMOexpression() +"</OMSTR>";
     }      }
   
       throw new NumberFormatException("unknown convert way:"+
                                       cmo.toCMOexpression());
   }    }
   
   private boolean isSpace(int ch){ // use from lex    private boolean isSpace(int ch){ // use from lex
Line 223  final class OM2OXM implements Runnable{
Line 236  final class OM2OXM implements Runnable{
       while((ch = is.read()) != '<' && ch != -1){        while((ch = is.read()) != '<' && ch != -1){
         debug("debug: "+ch);          debug("debug: "+ch);
         if(isSpace(ch)){          if(isSpace(ch)){
           String spaces = String.valueOf(ch);            String spaces = String.valueOf((char)ch);
   
           while(isSpace(ch = is.read())){            while(isSpace(ch = is.read())){
             spaces += (char)ch;              spaces += (char)ch;
Line 304  final class OM2OXM implements Runnable{
Line 317  final class OM2OXM implements Runnable{
   
       if(name.equals("DMP")){        if(name.equals("DMP")){
         ret = parse_symb_DMP();          ret = parse_symb_DMP();
           debug("poly: "+ret);
       }else{        }else{
         ret = new CMO_TREE(name,"Basic",parse_objects());          ret = new CMO_TREE(name,"Basic",parse_objects());
       }        }
Line 423  final class OM2OXM implements Runnable{
Line 437  final class OM2OXM implements Runnable{
       array[i] = ((CMO_ZZ)degree.elementAt(i+1)).intValue();        array[i] = ((CMO_ZZ)degree.elementAt(i+1)).intValue();
     }      }
   
       //debug("monom: "+ new CMO_MONOMIAL32(array,(CMO_ZZ)degree.elementAt(0)));
     return new CMO_MONOMIAL32(array,(CMO_ZZ)degree.elementAt(0));      return new CMO_MONOMIAL32(array,(CMO_ZZ)degree.elementAt(0));
   }    }
   
   private CMO parse_objects() throws IOException{    private CMO_LIST parse_objects() throws IOException{
     // $B2r@O$5$l$?(B object $B$r(B LIST $B$GJV$9(B      // $B2r@O$5$l$?(B object $B$r(B LIST $B$GJV$9(B
     Vector objects = new Vector();      Vector objects = new Vector();
     CMO[] array;      CMO[] array;
Line 441  final class OM2OXM implements Runnable{
Line 456  final class OM2OXM implements Runnable{
     array = new CMO[objects.size()];      array = new CMO[objects.size()];
     objects.copyInto((Object[])array);      objects.copyInto((Object[])array);
   
     System.out.println("debug :"+ new CMO_LIST(array));      debug("debug :"+ new CMO_LIST(array));
     return new CMO_LIST(array);      return new CMO_LIST(array);
   }    }
   
Line 649  final class OM2OXM implements Runnable{
Line 664  final class OM2OXM implements Runnable{
     return str;      return str;
   }    }
   
   private void parse_error(String mesg){    private void parse_error(String mesg) throws NumberFormatException{
     System.err.println(mesg);      String ret;
     System.err.print("error occuered near :");  
       ret = mesg +"\n";
       ret += "error occuered near :";
     try{      try{
       for(int i=0;i<10;i++){        for(int i=0;i<10;i++){
         System.err.print((char)is.read());          ret += (char)is.read();
       }        }
       System.err.println((char)is.read());  
     }catch(IOException e){}      }catch(IOException e){}
     System.exit(1);      ret += "\n";
   
       throw new NumberFormatException(ret);
   }    }
   
   private void debug(String str){    private void debug(String str){
Line 712  final class OM2OXM implements Runnable{
Line 730  final class OM2OXM implements Runnable{
   
       //$B%5!<%PB&$+$iAw?.$5$l$?J8;zNs$r<u?.$7$^$9!#(B        //$B%5!<%PB&$+$iAw?.$5$l$?J8;zNs$r<u?.$7$^$9!#(B
       while(true){        while(true){
         CMO obj = P.parse(System.in);          try{
         asir.send(obj);            CMO obj = P.parse(System.in);
         asir.sendSM(new SM(SM.SM_popCMO));            asir.send(obj);
             asir.sendSM(new SM(SM.SM_popCMO));
           }catch(NumberFormatException e){
             System.err.println(e.getMessage());
           }
       }        }
   
       //System.out.println("breaking...");  
   
     }catch(IOException e){      }catch(IOException e){
       e.printStackTrace();        e.printStackTrace();
       }finally{
         System.out.println("breaking...");
     }      }
   }    }
 }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.11

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