How to resolve the algorithm Strip comments from a string step by step in the Forth programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Strip comments from a string step by step in the Forth programming language

Table of Contents

Problem Statement

The task is to remove text that follow any of a set of comment markers, (in these examples either a hash or a semicolon) from a string or input line.

Whitespace debacle:   There is some confusion about whether to remove any whitespace from the input line. As of 2 September 2011, at least 8 languages (C, C++, Java, Perl, Python, Ruby, sed, UNIX Shell) were incorrect, out of 36 total languages, because they did not trim whitespace by 29 March 2011 rules. Some other languages might be incorrect for the same reason. Please discuss this issue at Talk:Strip comments from a string.

The following examples will be truncated to either "apples, pears " or "apples, pears". (This example has flipped between "apples, pears " and "apples, pears" in the past.)

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Strip comments from a string step by step in the Forth programming language

Source code in the forth programming language

\ Rosetta Code Strip Comment

: LASTCHAR ( addr len -- addr len c) 2DUP + C@ ;
: COMMENT? ( char -- ? )  S" #;"  ROT SCAN NIP ;    \ test char for "#;" 
: -LEADING ( addr len -- addr' len')  BL SKIP ;     \ remove leading space characters
 
: -COMMENT   ( addr len -- addr len') \ removes # or ; comments
            1-
            BEGIN
              LASTCHAR COMMENT? 0=
            WHILE                     \ while not a comment char...
                1-                    \ reduce length by 1
            REPEAT
            1-  ;                     \ remove 1 more (the comment char)

: -TRAILING  ( adr len -- addr len')   \ remove trailing spaces
             1-
             BEGIN
               LASTCHAR BL =
             WHILE                    \ while lastchar = blank
               1-                     \ reduce length by 1
             REPEAT  
             1+ ;

: COMMENT-STRIP ( addr len -- addr 'len) -LEADING -COMMENT -TRAILING  ;


  

You may also check:How to resolve the algorithm Menu step by step in the AWK programming language
You may also check:How to resolve the algorithm 24 game step by step in the Applesoft BASIC programming language
You may also check:How to resolve the algorithm Determine if only one instance is running step by step in the Ring programming language
You may also check:How to resolve the algorithm Morse code step by step in the Perl programming language
You may also check:How to resolve the algorithm Priority queue step by step in the Logtalk programming language