Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #132511
| 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> |
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 | Next — Previous in thread | Find similar
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