#!/usr/bin/perl # reg.pl - Don Yang (uguu.org) # Strip C comments using regular expressions. # # That regular expression is something, took me a while to figure out how # to gobble one token at a time, because a naive global match tends overlap # tokens. Everything else should be straightforward. # # 06/17/01 for($input = join '', <>; $input;) { # Get next token $input =~ m!^ (" ((\\.)|[^\\"])*? ") | # Double quoted strings (' ((\\.)|[^\\'])*? ') | # Single quoted strings ((/\*)(.*?)(\*/) ) | # Comments (.) # Every other character !osx; $token = $&; # Gobble input $input = substr $input, length $token; # Replace comments with spaces if( $token =~ m!^/.+/$!os ) { $token =~ s/[^\s\n]/ /gos; } # Print print $token; }