#!/usr/bin/perl -w my $usage = <) { # comments s/\/\*.*\*\///; if (m/\/\*/) { while ($_ .= <>) { last if s/\/\*.*\*\///s; } } # preprocessor stuff next if /^#/; # find our enum $in_enum = 1 if s/^\s*enum\s+${enum}(?:\s|$)//; next unless $in_enum; # remove explicit values s/\s*=[^,]+,/,/g; # extract each identifier while (m/\b([a-z_][a-z0-9_]*)\b/ig) { print $1, "\n"; } # # don't exit: there may be multiple versions of the same enum, e.g. # inside different #ifdef blocks. Let's explicitly return all of # them and let external tooling deal with it. # $in_enum = 0 if m/}\s*;/; } exit 0;