RosettaCodeData/Task/Strip-block-comments/XPL0/strip-block-comments.xpl0
2024-10-16 18:07:41 -07:00

45 lines
980 B
Text

string 0;
proc Strip(Prog); \Show Prog with comments stripped out
char Prog;
int Ch, Showing;
func GetCh;
[Ch:= Prog(0);
if Ch = 0 then exit;
Prog:= Prog+1;
];
[Showing:= true;
loop [GetCh;
if Showing then
[if Ch = ^/ then
[GetCh;
if Ch = ^* then Showing:= false
else [ChOut(0, ^/); ChOut(0, Ch)]
]
else ChOut(0, Ch);
]
else [if Ch = ^* then
[GetCh;
if Ch =^/ then Showing:= true;
];
];
];
];
Strip(" /**
* Some comments
* longer comments here that we can parse.
*
* Rahoo
*/
function subroutine() {
a = /* inline comment */ b + c ;
}
/*/ <-- tricky comments */
/**
* Another comment.
*/
function something() {
}")