Changeset 3973


Ignore:
Timestamp:
Oct 17, 2008, 3:14:39 PM (12 years ago)
Author:
yura
Message:
  • Get_Delims rewritten.
Location:
to-imperative/trunk/java/refal/refal/plus
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/java/refal/refal/plus/Stream.rf

    r3964 r3973  
    33//$module Stream : IStream;
    44
    5 $use Access Apply Box Class Compare Error StdIO;
     5$use Access Apply Box Class Compare Error StdIO Arithm;
    66
    77//** $func Stream s.func e.args = stream;
     
    7171      <Store stream (e.buf) (s.func e.args)> = $fail;
    7272    } :: e.buf,
    73     <Ge (<Length e.buf>) (s.n)> =
    7473    <Store stream (<Middle s.n 0 e.buf>) (s.func e.args)>,
    7574    <Left 0 s.n e.buf>;
     
    107106//** $func Get-Delim stream t.delim = expr;
    108107
    109 Get_Delims stream e.delim, {
    110   <Scans stream e.delim> : e.delim = e.delim;
    111   <Getc stream> :: t1 = t1 <Get_Delims stream e.delim>;
    112   /*empty*/;
     108Get_Delims stream v.delim, <Sub <Length v.delim> 1> :: s.delimLength, {
     109  <Get stream> : (e.buf) (s.func e.args) =
     110    (/*e.str*/) (e.buf) $iter {
     111      e.buf : e1 v.delim e2 = (e.str e1 v.delim) (e2) Stop;
     112      <Apply s.func e.args> :: e.newBuf = {
     113        (e.str <Middle 0 s.delimLength e.buf>) (<Right 0 s.delimLength e.buf> e.newBuf);       
     114        (e.str) (e.buf e.newBuf);       
     115      };
     116      (e.str e.buf) () Stop;
     117    } :: (e.str) (e.buf) e.Isstop,
     118    e.Isstop : v =
     119    <Store stream (e.buf) (s.func e.args)>,
     120    e.str;
     121  <Lib_Error (Stream "Get_Delims") "Arg 1 is not a Stream"> = $fail;
    113122};
    114123
     
    118127  <Get stream> : (e.buf) (s.func e.args) =
    119128    (/*e.str*/) (e.buf) $iter {
    120       e.buf : e1 t.delim e2 =
    121         (e.str e1 t.delim) (e2) Stop;
     129      e.buf : e1 t.delim e2 = (e.str e1 t.delim) (e2) Stop;
    122130      (e.str e.buf) (<Apply s.func e.args>);
    123131      (e.str e.buf) () Stop;
    124132    } :: (e.str) (e.buf) e.Isstop,
    125     e.Isstop : Stop =
     133    e.Isstop : v =
    126134    <Store stream (e.buf) (s.func e.args)>,
    127135    e.str;
     
    150158      (e.str e.buf) () Stop;
    151159    } :: (e.str) (e.buf) e.Isstop,
    152     e.Isstop : Stop =
     160    e.Isstop : v =
    153161    <Store stream (e.buf) (s.func e.args)>,
    154162    e.str;
     
    163171      (e.str e.buf) () Stop;
    164172    } :: (e.str) (e.buf) e.Isstop,
    165     e.Isstop : Stop =
     173    e.Isstop : v =
    166174    <Store stream (e.buf) (s.func e.args)>,
    167175    e.str;
  • to-imperative/trunk/java/refal/refal/plus/Stream.rfi

    r3964 r3973  
    1414$func  Scans          s.stream e.1      = e.empty_or_e1;
    1515$func  Get_Delim      s.stream t.delim  = e.expr;
    16 $func  Get_Delims     s.stream e.delim  = e.expr;
     16$func  Get_Delims     s.stream v.delim  = e.expr;
    1717$func  Get_Line       s.stream          = e.expr;
    1818$func  Get_While      s.stream s.pred e.predArgs = e.expr;
Note: See TracChangeset for help on using the changeset viewer.