RosettaCodeData/Task/Strip-block-comments/PL-I/strip-block-comments.pli
Ingy döt Net 68f8f3e56b all tasks
2013-04-11 01:07:29 -07:00

34 lines
1.1 KiB
Text

/* A program to remove comments from text. */
strip: procedure options (main); /* 8/1/2011 */
declare text character (80) varying;
declare (j, k) fixed binary;
on endfile (sysin) stop;
do forever;
get edit (text) (L);
do until (k = 0);
k = index(text, '/*');
if k > 0 then /* we have a start of comment. */
do;
/* Look for end of comment. */
j = index(text, '*/', k+2);
if j > 0 then
do;
text = substr(text, 1, k-1) ||
substr(text, j+2, length(text)-(j+2)+1);
end;
else
do; /* The comment continues onto the next line. */
put skip list ( substr(text, 1, k-1) );
more: get edit (text) (L);
j = index(text, '*/');
if j = 0 then do; put skip; go to more; end;
text = substr(text, j+2, length(text) - (j+2) + 1);
end;
end;
end;
put skip list (text);
end;
end strip;