466
|
1 #!/usr/local/bin/perl
|
|
2
|
607
|
3 # /************************************************************************
|
|
4 # ** Copyright (C) 2006 Shinji Kono
|
|
5 # ** 連絡先: 琉球大学情報工学科 河野 真治
|
|
6 # ** (E-Mail Address: kono@ie.u-ryukyu.ac.jp)
|
|
7 # **
|
|
8 # ** このソースのいかなる複写,改変,修正も許諾します。ただし、
|
|
9 # ** その際には、誰が貢献したを示すこの部分を残すこと。
|
|
10 # ** 再配布や雑誌の付録などの問い合わせも必要ありません。
|
|
11 # ** 営利利用も上記に反しない範囲で許可します。
|
|
12 # ** バイナリの配布の際にはversion messageを保存することを条件とします。
|
|
13 # ** このプログラムについては特に何の保証もしない、悪しからず。
|
|
14 # **
|
|
15 # ** Everyone is permitted to do anything on this program
|
|
16 # ** including copying, modifying, improving,
|
|
17 # ** as long as you don't try to pretend that you wrote it.
|
|
18 # ** i.e., the above copyright notice has to appear in all copies.
|
|
19 # ** Binary distribution requires original version messages.
|
|
20 # ** You don't have to ask before copying, redistribution or publishing.
|
|
21 # ** THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
|
|
22 # ***********************************************************************/
|
466
|
23 my $mode = 0;
|
|
24
|
|
25 my $reserve = -1;
|
|
26 my $tags = 1;
|
|
27 my $error = 1;
|
|
28 my $modnum = 0;
|
|
29
|
|
30 while(<>) {
|
|
31 if(m+/\* reserved word start \*/+) { $mode = 1; }
|
|
32 elsif(m+/\* reserved word end \*/+) { $mode = 0; }
|
|
33 elsif(m+/\* tree node tags start \*/+) { $mode = 2; }
|
|
34 elsif(m+/\* tree node tags end \*/+) { $mode = 0; }
|
|
35 elsif(m+/\* error number start \*/+) { $mode = 3; }
|
|
36 elsif(m+/\* error number end \*/+) { $mode = 0; }
|
|
37 elsif(m+/\* mode start \*/+) { $mode = 4; }
|
|
38 elsif(m+/\* mode end \*/+) { $mode = 0; }
|
|
39 elsif(m+/\* statement start \*/+) { $mode = 5; }
|
|
40 elsif(m+/\* statement end \*/+) { $mode = 0; }
|
|
41 else {
|
|
42 if ($mode==0) { ; }
|
|
43 elsif ($mode==1) {
|
|
44 s/-(\d+)/$reserve--/e;
|
|
45 } elsif ($mode==2) {
|
|
46 s/\s(\d+)/"\t".$tags++/e;
|
|
47 } elsif ($mode==3) {
|
|
48 s/(\d+)/$error++/e;
|
|
49 } elsif ($mode==4) {
|
|
50 s/(\d+)/$modenum++/e;
|
|
51 } elsif ($mode==5) {
|
|
52 s/(\d+)/$tags++/e;
|
|
53 }
|
|
54 }
|
|
55 print;
|
|
56 }
|
|
57
|