procedure main() every (unstripped := "") ||:= !&input || "\n" # Load file as one string write(stripBlockComment(unstripped,"/*","*/")) end procedure stripBlockComment(s1,s2,s3) #: strip comments between s2-s3 from s1 result := "" s1 ? { while result ||:= tab(find(s2)) do { move(*s2) tab(find(s3)|0) # or end of string move(*s3) } return result || tab(0) } end