home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.forth      Forth programmers eat a lot of Bratwurst      117,927 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 116,915 of 117,927   
   Hans Bezemer to dxf   
   Re: Parsing timestamps?   
   30 Oct 24 09:37:41   
   
   From: the.beez.speaks@gmail.com   
      
   On 30-10-2024 01:31, dxf wrote:   
   > On 30/10/2024 12:45 am, Hans Bezemer wrote:   
   >> On 29-10-2024 10:25, dxf wrote:   
   >>> On 29/10/2024 4:07 am, Hans Bezemer wrote:   
   >>>> ...   
   >>>> I have put the complication elsewhere. If we assume we're working in   
   decimal, you don't even need >NUMBER:   
   >>>>   
   >>>> char 0 negate +constant 0-   
   >>>>   
   >>>> : /int    ( a1 n1 -- a2 n2 n3)   
   >>>>     0 >r 1 >r 1- chars over +   
   >>>>     begin   
   >>>>      over 1- over <   
   >>>>     while   
   >>>>       dup c@ is-digit   
   >>>>     while   
   >>>>       dup c@ 0- r> tuck * r> + >r 10 * >r 1-   
   >>>>     repeat over - rdrop r> -rot   
   >>>> ;   
   >>>> ...   
   >>>   
   >>> So that's how to convert a numeric string from the other end.   
   >>> Nice!  Easier than I imagined it would be.   
   >>   
   >> TORS is the multiplier, 2ORS is the accumulator. Normally, the multiplier   
   is multiplied after each run with BASE @ - but that makes little sense when   
   IS-DIGIT isn't properly adjusted. Would be a nice exercise, though.   
   >   
   > Something like this...   
   >   
   > \  \CHAR ( a u -- a u-1 c )   
   > \  >DIGIT ( c base -- u -1 | c 0 )   
   >   
   > : /INT ( a1 n1 -- a2 n2 u )   
   >    0 >r  1  begin  >r  dup while   
   >      \char  base @ >digit  while   
   >      r> tuck  *  r> + >r  base @ *   
   >    repeat  drop ( -1 /string)  then  rdrop  r> ;   
   >   
   > OTOH the necessity to convert R-L is probably rare.   
      
   Yes, R-L number parsing is very rare. This time, it felt like the   
   easiest solution, though. Equally when you're parsing a non-decimal   
   date. That's why I left it out here. But it doesn't hurt to contemplate   
   such things. ;-)   
      
   I got the words you describe as "STRING/C" (rings a bell?) and "DIGIT?".   
   Seem like natural candidates to tackle this problem.   
      
   Hans Bezemer   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca