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