Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #132511

Re: Parsing timestamps?

From dxf <dxforth@gmail.com>
Newsgroups comp.lang.forth
Subject Re: Parsing timestamps?
Date 2024-10-31 11:41 +1100
Organization i2pn2 (i2pn.org)
Message-ID <c5987f14f19b47017c7b249aa7b7ddcf76e11e39@i2pn2.org> (permalink)
References (3 earlier) <nnd$20ac8605$11da13fb@384eaef047f1a2fb> <a25af4abbaaa757b2f15306405b6c63d2981d81c@i2pn2.org> <nnd$632dc57a$2ae5d913@8baf4544b88cb263> <8f7bf4216fd15f1df2119232963da5f90e9a18b8@i2pn2.org> <nnd$491ddc52$3d78e6a5@957bc19e662679bd>

Show all headers | View raw


On 30/10/2024 7:37 pm, Hans Bezemer wrote:
> 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.

Char extraction occurs often that it made sense to make them bona-fide words.
Having them in the kernel meant I could code them in asm for extra speed.

It raises the question of whether it's better to test then extract - or extract
then test.  The latter is simpler but it can mean one has to undo the operation.
That was the purpose of ( -1 /string) ... which BTW was incorrect; it should have
been ( 1+) .

Back to comp.lang.forth | Previous | NextPrevious in thread | Find similar


Thread

Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-06 18:51 +1100
  Re: Parsing timestamps? mhx@iae.nl (mhx) - 2024-10-06 08:59 +0000
    Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-06 23:58 +1100
      Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 02:34 +1100
        Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 23:53 +1100
  Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 14:48 +0400
    Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-06 22:59 +1100
      Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 17:22 +0400
        Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 17:34 +0400
        Re: Parsing timestamps? Ruvim <ruvim.pinka@gmail.com> - 2024-10-06 20:15 +0400
  Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-06 13:08 +0000
    Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-06 13:33 +0000
      Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 13:10 +1100
        Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-07 03:29 +0000
          Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 14:58 +1100
            Re: Parsing timestamps? oh2aun@gmail.com (FFmike) - 2024-10-07 05:23 +0000
  Re: Parsing timestamps? Anthony Howe <achowe@snert.com> - 2024-10-06 11:35 -0400
    Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 12:54 +1100
  Re: Parsing timestamps? albert@spenarnc.xs4all.nl - 2024-10-07 13:00 +0200
    Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-07 22:30 +1100
      Re: Parsing timestamps? sjack@dontemail.me (sjack) - 2024-10-07 16:20 +0000
        Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-08 14:07 +1100
          Re: Parsing timestamps? melahi_ahmed@yahoo.fr (Ahmed) - 2024-10-08 06:08 +0000
            Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-08 18:33 +1100
            Re: Parsing timestamps? sjack@dontemail.me (sjack) - 2024-10-08 15:19 +0000
          Re: Parsing timestamps? sjack@dontemail.me (sjack) - 2024-10-08 20:30 +0000
            Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-09 12:06 +1100
  Re: Parsing timestamps? albert@spenarnc.xs4all.nl - 2024-10-08 09:41 +0200
    Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-08 19:55 +1100
      Re: Parsing timestamps? melahi_ahmed@yahoo.fr (Ahmed) - 2024-10-08 18:12 +0000
  Re: Parsing timestamps? amalawi@gmail.com (alaa) - 2024-10-09 15:27 +0000
    Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-10 12:17 +1100
      Re: Parsing timestamps? amalawi@gmail.com (alaa) - 2024-10-10 16:30 +0000
    Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-16 18:29 +0200
  Re: Parsing timestamps? Gerry Jackson <do-not-use@swldwa.uk> - 2024-10-18 15:46 +0100
    Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-19 12:29 +1100
      Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-28 18:07 +0100
        Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-29 20:25 +1100
          Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-29 14:45 +0100
            Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-30 11:31 +1100
              Re: Parsing timestamps? Hans Bezemer <the.beez.speaks@gmail.com> - 2024-10-30 09:37 +0100
                Re: Parsing timestamps? dxf <dxforth@gmail.com> - 2024-10-31 11:41 +1100

csiph-web