Deutsch   English   Français   Italiano  
<2ce249aa06ffa026b7ea087ed20c6d0612301dc6@i2pn2.org>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: news.eternal-september.org!eternal-september.org!feeder3.eternal-september.org!i2pn.org!i2pn2.org!.POSTED!not-for-mail
From: dxf <dxforth@gmail.com>
Newsgroups: comp.lang.forth
Subject: Re: Roman numerals , recognizer "0r".
Date: Mon, 9 Jun 2025 13:42:51 +1000
Organization: i2pn2 (i2pn.org)
Message-ID: <2ce249aa06ffa026b7ea087ed20c6d0612301dc6@i2pn2.org>
References: <nnd$3b511631$511bab64@a22533c0c24c276e>
 <2b70970932fa6f4379e708e30e8857f6@www.novabbs.com>
 <de084ed29e5acc412c06ed739c24929f22313288@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 9 Jun 2025 03:42:53 -0000 (UTC)
Injection-Info: i2pn2.org;
	logging-data="3906999"; mail-complaints-to="usenet@i2pn2.org";
	posting-account="XPw7UV90Iy7EOhY4YuUXhpdoEf5Vz7K+BsxA/Cx8bVc";
User-Agent: Mozilla Thunderbird
Content-Language: en-GB
X-Spam-Checker-Version: SpamAssassin 4.0.0
In-Reply-To: <de084ed29e5acc412c06ed739c24929f22313288@i2pn2.org>

On 9/06/2025 2:07 am, dxf wrote:
> On 9/06/2025 12:41 am, LIT wrote:
>> 0 VARIABLE FORMER
>> 0 VARIABLE PRESENT
>>
>> HERE 73 C, 86 C, 88 C, 76 C, 67 C, 68 C, 77 C,  \ I  V  X  L  C  D  M
>> HERE  0 C, 1 C, 2 C, 10 C, 20 C, 100 C, 200 C,
> ... 
> Yep. Nothing better than FigForth :)  How about ...
> 
> : CREATE  0 VARIABLE -2 ALLOT ; 

Actually CREATE wasn't needed here...

VARIABLE FORMER
VARIABLE PRESENT

HERE 73 C, 86 C, 88 C, 76 C, 67 C, 68 C, 77 C,  \ I  V  X  L  C  D  M
HERE  0 C, 1 C, 2 C, 10 C, 20 C, 100 C, 200 C,
CONSTANT ESYM  CONSTANT SYM

: VAL ( ch -- u )
  0  SWAP  ESYM SYM DO
   DUP I C@ =
   IF  DROP I 7 + C@ DUP 0= ABS SWAP 5 * +  NIP 1 SWAP LEAVE  THEN
 LOOP
 OVER IF NIP ELSE DROP THEN ;

: ROMAN>ARABIC ( addr count -- u )
 0 -ROT  0 FORMER !  0 PRESENT !
 OVER + 1- DO
   I C@ VAL  DUP PRESENT !
   DUP FORMER @ <
   IF    -
   ELSE  DUP FORMER ! +
   THEN
 -1 +LOOP ; 

S" MCMLIX" ROMAN>ARABIC . 1959  ok