move getMapIdByValue to FieldMask.h
[hiphop-php.git] / hphp / doc / generate-ir-opcodes.pl
blob107738aa83389f1a9cd807badc6068cbc75fc653
1 #!/usr/bin/perl -w
2 use strict;
4 my $buffer = '';
5 my $output_buffer = '';
7 sub process_buffer {
8 $buffer =~ s/^\s*//g;
9 $buffer =~ s/\s+/ /g;
10 $buffer =~ s/^\s*([a-zA-Z0-9]+)<[^>]+>/$1/g;
11 $output_buffer .= 'O(';
12 $output_buffer .= $buffer.") \\\n";
13 $buffer = '';
16 while (<>) {
17 if ($buffer && !/^\|(.*)$/) {
18 process_buffer;
19 next;
21 if (/^\|(.*)/) {
22 $buffer .= $1;
26 ######################################################################
28 # Print but insert some space so opcode names show up in a clear
29 # column.
30 sub print_pretty {
31 my @lines = split /\n/, $output_buffer;
32 my $max = 0;
33 foreach (@lines) {
34 if (/^(O[^,]*)/) {
35 $max = length $1 if length $1 > $max;
38 foreach (sort @lines) {
39 if (/^(O[^,]*)/) {
40 my $op = $1;
41 print $op . ", ";
42 s/^(O[^,]*),//;
43 print ' ' x ($max - length $op);
45 print;
46 print "\n";
50 print "// \@".
51 "generated\n";
52 print "#define IR_OPCODES \\\n";
53 print "\\\n";
54 print_pretty;
55 print "/**/\n";