annotate src/parallel_execution/tmp_tool/parse_cerate_each_context.pl @ 568:840597c5d242

add_parse_create_each_context.pl
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sat, 23 Nov 2019 19:36:57 +0900
parents
children 077158ea026c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
568
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #!/usr/bin/env perl
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 use strict;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 use warnings;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 use DDP {deparse => 1};
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 my $context = shift // "context.h";
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open my $fh, '<', $context;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 while (my $line = <$fh>) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 if ($line =~ /^union Data \{/) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 last;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 my @context_cg_str = <$fh>;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 close($fh);
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 chomp @context_cg_str;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 my $res = {};
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 while (my $line = shift @context_cg_str) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 if ($line =~ /\s*struct\s*(\w+)\s*\{/) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 my $struct = $1;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 $line = shift @context_cg_str;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 while ($line !~ /\}\s*$struct/) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 if ($line =~ /\s*([\w ]+)\s*\{/) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 my $tmps = $1;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 my @tmpl = ();
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 $line = shift @context_cg_str;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 while ($line !~ /}/) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 $line =~ s/\s+([\*\w ]+);/$1/g;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 push (@tmpl,$line);
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 $line = shift @context_cg_str;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 push (@{$res->{$struct}},{ $tmps => \@tmpl});
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 $line = shift @context_cg_str;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 while ($line =~ /}/) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 $line = shift @context_cg_str;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 unshift(@context_cg_str,$line);
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 last;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 if ($line =~ /\s+([\*\w ]+);/) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 push (@{$res->{$struct}},$1);
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 if (@context_cg_str) {
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 $line = shift @context_cg_str ;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 }
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 use Data::Dumper;
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
840597c5d242 add_parse_create_each_context.pl
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 print Dumper $res;