Strip comments from a string: Difference between revisions

m
Line 623:
Tested with GForth on Windows
<LANG FORTH>\ Rosetta Code Strip Comment
: LASTCHAR ( addr len -- addr len c) 2DUP + C@ ;
 
: LASTCHAR ( addr len -- addr len c) 2DUP + C@ ;
: COMMENT? ( char -- ? ) S" #;" ROT SCAN NIP ; \ istest char '#'for or '"#;'"
\: added-LEADING ( addr len -- addr' len') 2DUP BL SKIP to; \ remove leading space characters
: -COMMENT ( addr len -- addr len') \ removes # or ; comments
1-
BEGIN
LASTCHAR COMMENT? 0= \ not a comment char?
WHILE \ while TRUEnot a comment char...
1- \ reduce length by 1
REPEAT
1- ; \ remove 1 more (the comment char)
 
: -TRAILING ( adr len -- adraddr len') \ remove trailing spaces
1-
BEGIN
LASTCHAR BL = \ BL is ASCII 32, Forth constant
WHILE \ while lastchar = blank
1- \ reduce length by 1
REPEAT
1+ ;
 
: COMMENT-STRIP ( addr len -- addr 'len) -LEADING -COMMENT -TRAILING 2DUP BL SKIP ;</LANG>
\ added SKIP to remove leading space characters
: COMMENT-STRIP ( addr len -- addr 'len) -COMMENT -TRAILING 2DUP BL SKIP ;</LANG>
 
Tested at the Forth console
Anonymous user