+my $nacl = 0;
+
+sub parse_file
+{
+ my ($define, $file) = @_;
+ my @enabled = (1);
+ my $i = 0;
+ open (OPS, $file) || die "Cannot open $file: $!";
+ while (<OPS>) {
+ if (/^\s*#\s*if\s+(.*)/) {
+ my $defines = $1;
+ die "fix the genmdesc.pl cpp parser to handle all operators" if /(&&)|([!<>=])/;
+ unshift @enabled, scalar ($defines =~ /defined\s*\(\s*$define\s*\)/);
+ next;
+ }
+ if (/^\s*#\s*ifdef\s+(\S+)/) {
+ my $defines = $1;
+ unshift @enabled, $defines eq $define;
+ next;
+ }
+ if (/^\s*#\s*endif/) {
+ shift @enabled;
+ next;
+ }
+ next unless $enabled [0];
+ next unless /MINI_OP3?\s*\(\s*(\S+?)\s*,\s*"(.*?)"/;
+ my ($sym, $name) = ($1, $2);
+ push @opcodes, [$sym, $name];
+ $table{$name} = {num => $i, name => $name};
+ $i++;
+ }
+ close (OPS);
+}
+