- Timestamp:
- 07/28/08 00:36:40 (6 months ago)
- Location:
- misc
- Files:
-
- 6 modified
-
STD_red/std.rb (modified) (1 diff)
-
elf/elf_g (modified) (46 diffs)
-
elf/elf_g_src/EmitSimpleP5.pm (modified) (18 diffs)
-
elf/elf_g_src/IRx1_Analysis.pm (modified) (14 diffs)
-
elf/elf_g_src/IRx1_FromAST.pm (modified) (18 diffs)
-
elf/elf_g_src/IRx1_FromAST_create.pl (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
misc/STD_red/std.rb
r21514 r21584 816 816 _match_from(b,h,:scoped)) 817 817 end 818 def_tokens_rest :scope_declarator,false,%w{ my our state constant has },%q{b=pos; s=scoped and _match_from(b,{:scoped=>s},:<sym>) }818 def_tokens_rest :scope_declarator,false,%w{ my our state constant has temp },%q{b=pos; s=scoped and _match_from(b,{:scoped=>s},:<sym>) } #R NONSPEC temp added. 819 819 def_tokens_rest :package_declarator,false,%w{ class grammar module role package },%q{b=pos; pd=package_def and _match_from(b,{:package_def=>pd},:<sym>) } #end;end 820 820 def_tokens_rest :package_declarator,false,%w{ require },%q{ module_name and (_EXPR;true) } -
misc/elf/elf_g
r21553 r21584 1947 1947 my $result = (irbuild_ir($m->{"hash"}->{"expr"}) || irbuild_ir($m->{"hash"}->{"control"})); 1948 1948 if(($m->{"hash"}->{"expr"} && (($m->{"hash"}->{"mod_loop"} || $m->{"hash"}->{"mod_cond"})))) { 1949 (do{{ package main; use vars '$es_blackboard__statement_expr'};local $::es_blackboard__statement_expr = $result;1949 (do{{ package blackboard; use vars '$statement_expr'};local $blackboard::statement_expr = $result; 1950 1950 ($result = (irbuild_ir($m->{"hash"}->{"mod_loop"}) || irbuild_ir($m->{"hash"}->{"mod_cond"}))); 1951 1951 if($m->{"hash"}->{"mod_condloop"}) { 1952 (do{($ ::es_blackboard__statement_expr = $result);1952 (do{($blackboard::statement_expr = $result); 1953 1953 ($result = irbuild_ir($m->{"hash"}->{"mod_condloop"}))}) 1954 1954 }}) … … 1980 1980 (do{IRx1::Pair->newp($m, irbuild_ir($m->{"hash"}->{"key"}), irbuild_ir($m->{"hash"}->{"val"}))})}); 1981 1981 $main::irbuilder->add_constructor("expect_term", sub {my($m)=@_; 1982 (do{{ package main; use vars '$es_blackboard__expect_term_base'};local $::es_blackboard__expect_term_base = irbuild_ir($m->{"hash"}->{"noun"});1982 (do{{ package blackboard; use vars '$expect_term_base'};local $blackboard::expect_term_base = irbuild_ir($m->{"hash"}->{"noun"}); 1983 1983 my $ops = []; 1984 1984 if($m->{"hash"}->{"pre"}) { … … 1989 1989 }; 1990 1990 for(($ops)->flatten){ 1991 (do{($ ::es_blackboard__expect_term_base = irbuild_ir($_))})1992 }; 1993 $ ::es_blackboard__expect_term_base})});1991 (do{($blackboard::expect_term_base = irbuild_ir($_))}) 1992 }; 1993 $blackboard::expect_term_base})}); 1994 1994 $main::irbuilder->add_constructor("term\:expect_term", sub {my($m)=@_; 1995 1995 (do{irbuild_ir($m->{"hash"}->{"noun"})})}); … … 2009 2009 }})}); 2010 2010 $main::irbuilder->add_constructor("dotty\:methodop", sub {my($m)=@_; 2011 (do{IRx1::Call->newp($m, $ ::es_blackboard__expect_term_base, irbuild_ir($m->{"hash"}->{"ident"}), IRx1::Capture->newp($m, (irbuild_ir($m->{"hash"}->{"semilist"}) || [])))})});2011 (do{IRx1::Call->newp($m, $blackboard::expect_term_base, irbuild_ir($m->{"hash"}->{"ident"}), IRx1::Capture->newp($m, (irbuild_ir($m->{"hash"}->{"semilist"}) || [])))})}); 2012 2012 $main::irbuilder->add_constructor("dotty\:\.\^\!", sub {my($m)=@_; 2013 (do{IRx1::Call->newp($m, $ ::es_blackboard__expect_term_base, ("\^\!" . irbuild_ir($m->{"hash"}->{"methodop"}->{"hash"}->{"ident"})), IRx1::Capture->newp($m, (irbuild_ir($m->{"hash"}->{"methodop"}->{"hash"}->{"semilist"}) || [])))})});2013 (do{IRx1::Call->newp($m, $blackboard::expect_term_base, ("\^\!" . irbuild_ir($m->{"hash"}->{"methodop"}->{"hash"}->{"ident"})), IRx1::Capture->newp($m, (irbuild_ir($m->{"hash"}->{"methodop"}->{"hash"}->{"semilist"}) || [])))})}); 2014 2014 $main::irbuilder->add_constructor("dotty\:postcircumfix", sub {my($m)=@_; 2015 2015 (do{my $s = ($m->match_string()); … … 2020 2020 (do{($args = [$args])}) 2021 2021 }; 2022 IRx1::Call->newp($m, $ ::es_blackboard__expect_term_base, $ident, IRx1::Capture->newp($m, ($args || [])))})});2022 IRx1::Call->newp($m, $blackboard::expect_term_base, $ident, IRx1::Capture->newp($m, ($args || [])))})}); 2023 2023 $main::irbuilder->add_constructor("postcircumfix", sub {my($m)=@_; 2024 2024 (do{my $s = ($m->match_string()); … … 2029 2029 (do{($args = [$args])}) 2030 2030 }; 2031 IRx1::Call->newp($m, $ ::es_blackboard__expect_term_base, $ident, IRx1::Capture->newp($m, ($args || [])))})});2031 IRx1::Call->newp($m, $blackboard::expect_term_base, $ident, IRx1::Capture->newp($m, ($args || [])))})}); 2032 2032 $main::irbuilder->add_constructor("postfix", sub {my($m)=@_; 2033 2033 (do{my $op = ($m->match_string()); 2034 IRx1::Apply->newp($m, ("postfix\:" . $op), IRx1::Capture->newp($m, [$ ::es_blackboard__expect_term_base]))})});2034 IRx1::Apply->newp($m, ("postfix\:" . $op), IRx1::Capture->newp($m, [$blackboard::expect_term_base]))})}); 2035 2035 $main::irbuilder->add_constructor("prefix", sub {my($m)=@_; 2036 2036 (do{my $op = ($m->match_string()); 2037 IRx1::Apply->newp($m, ("prefix\:" . $op), IRx1::Capture->newp($m, [$ ::es_blackboard__expect_term_base]))})});2037 IRx1::Apply->newp($m, ("prefix\:" . $op), IRx1::Capture->newp($m, [$blackboard::expect_term_base]))})}); 2038 2038 $main::irbuilder->add_constructor("infix", sub {my($m)=@_; 2039 2039 (do{my $op = ($m->match_string()); … … 2103 2103 IRx1::Rx->newp($m, $s, irbuild_ir($m->{"hash"}->{"quotepair"}))})}); 2104 2104 $main::irbuilder->add_constructor("scope_declarator\:my", sub {my($m)=@_; 2105 (do{{ package main; use vars '$es_blackboard__scope'};local $::es_blackboard__scope = "my";2105 (do{{ package blackboard; use vars '$scope'};local $blackboard::scope = "my"; 2106 2106 irbuild_ir($m->{"hash"}->{"scoped"})})}); 2107 2107 $main::irbuilder->add_constructor("scope_declarator\:has", sub {my($m)=@_; 2108 (do{{ package main; use vars '$es_blackboard__scope'};local $::es_blackboard__scope = "has";2108 (do{{ package blackboard; use vars '$scope'};local $blackboard::scope = "has"; 2109 2109 irbuild_ir($m->{"hash"}->{"scoped"})})}); 2110 2110 $main::irbuilder->add_constructor("scope_declarator\:our", sub {my($m)=@_; 2111 (do{{package main; use vars '$es_blackboard__scope'};local $::es_blackboard__scope = "our"; 2111 (do{{ package blackboard; use vars '$scope'};local $blackboard::scope = "our"; 2112 irbuild_ir($m->{"hash"}->{"scoped"})})}); 2113 $main::irbuilder->add_constructor("scope_declarator\:temp", sub {my($m)=@_; 2114 (do{{ package blackboard; use vars '$scope'};local $blackboard::scope = "temp"; 2112 2115 irbuild_ir($m->{"hash"}->{"scoped"})})}); 2113 2116 $main::irbuilder->add_constructor("scoped", sub {my($m)=@_; 2114 (do{{ package main; use vars '$es_blackboard__typenames'};local $::es_blackboard__typenames = irbuild_ir($m->{"hash"}->{"fulltypename"});2117 (do{{ package blackboard; use vars '$typenames'};local $blackboard::typenames = irbuild_ir($m->{"hash"}->{"fulltypename"}); 2115 2118 ((((irbuild_ir($m->{"hash"}->{"variable_decl"}) || irbuild_ir($m->{"hash"}->{"signature"})) || irbuild_ir($m->{"hash"}->{"plurality_declarator"})) || irbuild_ir($m->{"hash"}->{"routine_declarator"})) || irbuild_ir($m->{"hash"}->{"type_declarator"}))})}); 2116 2119 $main::irbuilder->add_constructor("variable_decl", sub {my($m)=@_; 2117 (do{my $scope = $ ::es_blackboard__scope;2118 { package main; use vars '$es_blackboard__scope'};local $::es_blackboard__scope;2119 my $typenames = $ ::es_blackboard__typenames;2120 { package main; use vars '$es_blackboard__typenames'};local $::es_blackboard__typenames = GLOBAL::undef();2120 (do{my $scope = $blackboard::scope; 2121 { package blackboard; use vars '$scope'};local $blackboard::scope; 2122 my $typenames = $blackboard::typenames; 2123 { package blackboard; use vars '$typenames'};local $blackboard::typenames = GLOBAL::undef(); 2121 2124 IRx1::VarDecl->newp($m, $scope, $typenames, GLOBAL::undef(), irbuild_ir($m->{"hash"}->{"variable"}), GLOBAL::undef(), irbuild_ir($m->{"hash"}->{"traits"}), "\=", irbuild_ir($m->{"hash"}->{"default_value"}))})}); 2122 2125 $main::irbuilder->add_constructor("variable", sub {my($m)=@_; … … 2132 2135 }else { 2133 2136 (do{my $v = IRx1::Var->newp($m, irbuild_ir($m->{"hash"}->{"sigil"}), $tw, irbuild_ir($m->{"hash"}->{"desigilname"})); 2134 { package main; use vars '$es_blackboard__expect_term_base'};local $::es_blackboard__expect_term_base = $v;2137 { package blackboard; use vars '$expect_term_base'};local $blackboard::expect_term_base = $v; 2135 2138 irbuild_ir($m->{"hash"}->{"postcircumfix"})}) 2136 2139 }}) … … 2158 2161 (do{IRx1::For->newp($m, irbuild_ir($m->{"hash"}->{"expr"}), irbuild_ir($m->{"hash"}->{"block"}))})}); 2159 2162 $main::irbuilder->add_constructor("statement_mod_loop\:for", sub {my($m)=@_; 2160 (do{IRx1::For->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $ ::es_blackboard__statement_expr)})});2163 (do{IRx1::For->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $blackboard::statement_expr)})}); 2161 2164 $main::irbuilder->add_constructor("statement_control\:while", sub {my($m)=@_; 2162 2165 (do{IRx1::Loop->newp($m, irbuild_ir($m->{"hash"}->{"expr"}), irbuild_ir($m->{"hash"}->{"block"}))})}); 2163 2166 $main::irbuilder->add_constructor("statement_mod_loop\:while", sub {my($m)=@_; 2164 (do{IRx1::Loop->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $ ::es_blackboard__statement_expr)})});2167 (do{IRx1::Loop->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $blackboard::statement_expr)})}); 2165 2168 $main::irbuilder->add_constructor("statement_control\:until", sub {my($m)=@_; 2166 2169 (do{my $test = IRx1::Apply->newp($m, "not", IRx1::Capture->newp($m, [irbuild_ir($m->{"hash"}->{"expr"})])); … … 2168 2171 $main::irbuilder->add_constructor("statement_mod_loop\:until", sub {my($m)=@_; 2169 2172 (do{my $test = IRx1::Apply->newp($m, "not", IRx1::Capture->newp($m, [irbuild_ir($m->{"hash"}->{"modifier_expr"})])); 2170 IRx1::Loop->newp($m, $test, $ ::es_blackboard__statement_expr)})});2173 IRx1::Loop->newp($m, $test, $blackboard::statement_expr)})}); 2171 2174 $main::irbuilder->add_constructor("statement_control\:loop", sub {my($m)=@_; 2172 2175 (do{my $e1 = irbuild_ir($m->{"hash"}->{"loop_eee"}->{"hash"}->{"loop_e1"}); … … 2198 2201 $one})}); 2199 2202 $main::irbuilder->add_constructor("statement_mod_cond\:if", sub {my($m)=@_; 2200 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->{"hash"}->{"modifier_expr"}), $ ::es_blackboard__statement_expr]], GLOBAL::undef())})});2203 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->{"hash"}->{"modifier_expr"}), $blackboard::statement_expr]], GLOBAL::undef())})}); 2201 2204 $main::irbuilder->add_constructor("statement_control\:unless", sub {my($m)=@_; 2202 2205 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->{"hash"}->{"expr"}), irbuild_ir($m->{"hash"}->{"block"})]], GLOBAL::undef(), 1)})}); 2203 2206 $main::irbuilder->add_constructor("statement_mod_cond\:unless", sub {my($m)=@_; 2204 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->{"hash"}->{"modifier_expr"}), $ ::es_blackboard__statement_expr]], GLOBAL::undef(), 1)})});2207 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->{"hash"}->{"modifier_expr"}), $blackboard::statement_expr]], GLOBAL::undef(), 1)})}); 2205 2208 $main::irbuilder->add_constructor("statement_control\:given", sub {my($m)=@_; 2206 2209 (do{IRx1::Given->newp($m, irbuild_ir($m->{"hash"}->{"expr"}), irbuild_ir($m->{"hash"}->{"block"}))})}); 2207 2210 $main::irbuilder->add_constructor("statement_mod_loop\:given", sub {my($m)=@_; 2208 (do{IRx1::Given->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $ ::es_blackboard__statement_expr)})});2211 (do{IRx1::Given->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $blackboard::statement_expr)})}); 2209 2212 $main::irbuilder->add_constructor("statement_control\:when", sub {my($m)=@_; 2210 2213 (do{IRx1::When->newp($m, irbuild_ir($m->{"hash"}->{"expr"}), irbuild_ir($m->{"hash"}->{"block"}))})}); 2211 2214 $main::irbuilder->add_constructor("statement_mod_cond\:when", sub {my($m)=@_; 2212 (do{IRx1::When->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $ ::es_blackboard__statement_expr)})});2215 (do{IRx1::When->newp($m, irbuild_ir($m->{"hash"}->{"modifier_expr"}), $blackboard::statement_expr)})}); 2213 2216 $main::irbuilder->add_constructor("statement_control\:default", sub {my($m)=@_; 2214 2217 (do{IRx1::When->newp($m, GLOBAL::undef(), irbuild_ir($m->{"hash"}->{"block"}))})}); … … 2234 2237 (do{IRx1::Block->newp($m, irbuild_ir($m->{"hash"}->{"statementlist"}))})}); 2235 2238 $main::irbuilder->add_constructor("plurality_declarator\:multi", sub {my($m)=@_; 2236 (do{{ package main; use vars '$es_blackboard__plurality'};local $::es_blackboard__plurality = "multi";2239 (do{{ package blackboard; use vars '$plurality'};local $blackboard::plurality = "multi"; 2237 2240 (irbuild_ir($m->{"hash"}->{"pluralized"}) || irbuild_ir($m->{"hash"}->{"routine_def"}))})}); 2238 2241 $main::irbuilder->add_constructor("routine_declarator\:routine_def", sub {my($m)=@_; 2239 (do{my $scope = $ ::es_blackboard__scope;2240 { package main; use vars '$es_blackboard__scope'};local $::es_blackboard__scope;2241 my $plurality = $ ::es_blackboard__plurality;2242 { package main; use vars '$es_blackboard__plurality'};local $::es_blackboard__plurality;2242 (do{my $scope = $blackboard::scope; 2243 { package blackboard; use vars '$scope'};local $blackboard::scope; 2244 my $plurality = $blackboard::plurality; 2245 { package blackboard; use vars '$plurality'};local $blackboard::plurality; 2243 2246 my $ident = ""; 2244 2247 if($m->{"hash"}->{"ident"}) { … … 2251 2254 IRx1::SubDecl->newp($m, $scope, GLOBAL::undef(), $plurality, $ident, $sig, irbuild_ir($m->{"hash"}->{"trait"}), irbuild_ir($m->{"hash"}->{"block"}))})}); 2252 2255 $main::irbuilder->add_constructor("routine_def", sub {my($m)=@_; 2253 (do{my $scope = $ ::es_blackboard__scope;2254 { package main; use vars '$es_blackboard__scope'};local $::es_blackboard__scope;2255 my $plurality = $ ::es_blackboard__plurality;2256 { package main; use vars '$es_blackboard__plurality'};local $::es_blackboard__plurality;2256 (do{my $scope = $blackboard::scope; 2257 { package blackboard; use vars '$scope'};local $blackboard::scope; 2258 my $plurality = $blackboard::plurality; 2259 { package blackboard; use vars '$plurality'};local $blackboard::plurality; 2257 2260 my $ident = ""; 2258 2261 if($m->{"hash"}->{"ident"}) { … … 2265 2268 IRx1::SubDecl->newp($m, $scope, GLOBAL::undef(), $plurality, $ident, $sig, irbuild_ir($m->{"hash"}->{"trait"}), irbuild_ir($m->{"hash"}->{"block"}))})}); 2266 2269 $main::irbuilder->add_constructor("routine_declarator\:method_def", sub {my($m)=@_; 2267 (do{my $plurality = $ ::es_blackboard__plurality;2268 { package main; use vars '$es_blackboard__plurality'};local $::es_blackboard__plurality;2270 (do{my $plurality = $blackboard::plurality; 2271 { package blackboard; use vars '$plurality'};local $blackboard::plurality; 2269 2272 my $multisig = irbuild_ir($m->{"hash"}->{"multisig"}); 2270 2273 if(GLOBAL::not($multisig)) { … … 2351 2354 (do{IRx1::Pair->newp($m, "nth", irbuild_ir($m->{"hash"}->{"n"}))})}); 2352 2355 $main::irbuilder->add_constructor("package_declarator\:role", sub {my($m)=@_; 2353 (do{{ package main; use vars '$es_blackboard__package_declarator'};local $::es_blackboard__package_declarator = "role";2356 (do{{ package blackboard; use vars '$package_declarator'};local $blackboard::package_declarator = "role"; 2354 2357 irbuild_ir($m->{"hash"}->{"package_def"})})}); 2355 2358 $main::irbuilder->add_constructor("package_declarator\:class", sub {my($m)=@_; 2356 (do{{ package main; use vars '$es_blackboard__package_declarator'};local $::es_blackboard__package_declarator = "class";2359 (do{{ package blackboard; use vars '$package_declarator'};local $blackboard::package_declarator = "class"; 2357 2360 irbuild_ir($m->{"hash"}->{"package_def"})})}); 2358 2361 $main::irbuilder->add_constructor("package_declarator\:module", sub {my($m)=@_; 2359 (do{{ package main; use vars '$es_blackboard__package_declarator'};local $::es_blackboard__package_declarator = "module";2362 (do{{ package blackboard; use vars '$package_declarator'};local $blackboard::package_declarator = "module"; 2360 2363 irbuild_ir($m->{"hash"}->{"package_def"})})}); 2361 2364 $main::irbuilder->add_constructor("package_declarator\:package", sub {my($m)=@_; 2362 (do{{ package main; use vars '$es_blackboard__package_declarator'};local $::es_blackboard__package_declarator = "package";2365 (do{{ package blackboard; use vars '$package_declarator'};local $blackboard::package_declarator = "package"; 2363 2366 irbuild_ir($m->{"hash"}->{"package_def"})})}); 2364 2367 $main::irbuilder->add_constructor("package_declarator\:grammar", sub {my($m)=@_; 2365 (do{{ package main; use vars '$es_blackboard__package_declarator'};local $::es_blackboard__package_declarator = "grammar";2368 (do{{ package blackboard; use vars '$package_declarator'};local $blackboard::package_declarator = "grammar"; 2366 2369 irbuild_ir($m->{"hash"}->{"package_def"})})}); 2367 2370 $main::irbuilder->add_constructor("package_def", sub {my($m)=@_; 2368 (do{IRx1::PackageDecl->newp($m, GLOBAL::undef(), GLOBAL::undef(), $ ::es_blackboard__package_declarator, irbuild_ir($m->{"hash"}->{"module_name"})->[0], irbuild_ir($m->{"hash"}->{"traits"}), irbuild_ir($m->{"hash"}->{"block"}))})});2371 (do{IRx1::PackageDecl->newp($m, GLOBAL::undef(), GLOBAL::undef(), $blackboard::package_declarator, irbuild_ir($m->{"hash"}->{"module_name"})->[0], irbuild_ir($m->{"hash"}->{"traits"}), irbuild_ir($m->{"hash"}->{"block"}))})}); 2369 2372 $main::irbuilder->add_constructor("fulltypename", sub {my($m)=@_; 2370 2373 (do{irbuild_ir($m->{"hash"}->{"typename"})->join("\:\:")})}); … … 2495 2498 2496 2499 { package IRx1::CompUnit; 2497 use base "Any";(do{sub note_parents{my $self=CORE::shift;(do{{ package main; use vars '$es_whiteboard__parent'};local $::es_whiteboard__parent = $self;2500 use base "Any";(do{sub note_parents{my $self=CORE::shift;(do{{ package whiteboard; use vars '$parent'};local $whiteboard::parent = $self; 2498 2501 for(($self->child_nodes)->flatten){ 2499 2502 (do{$_->note_parents()}) … … 2503 2506 2504 2507 { package IRx1::Base; 2505 use base "Any";(do{sub note_parents{my $self=CORE::shift;(do{($self->notes->{'parent'} = $ ::es_whiteboard__parent);2506 { package main; use vars '$es_whiteboard__parent'};local $::es_whiteboard__parent = $self;2508 use base "Any";(do{sub note_parents{my $self=CORE::shift;(do{($self->notes->{'parent'} = $whiteboard::parent); 2509 { package whiteboard; use vars '$parent'};local $whiteboard::parent = $self; 2507 2510 for(($self->child_nodes)->flatten){ 2508 2511 (do{$_->note_parents()}) … … 2513 2516 { package IRx1::CompUnit_and_Block; 2514 2517 use base "Any";(do{sub note_block_lexical_variable_decls{my $self=CORE::shift;(do{my $a = []; 2515 { package main; use vars '$es_whiteboard__lexical_variable_decls'};local $::es_whiteboard__lexical_variable_decls = $a;2518 { package whiteboard; use vars '$lexical_variable_decls'};local $whiteboard::lexical_variable_decls = $a; 2516 2519 ($self->notes->{'lexical_variable_decls'} = $a); 2517 2520 for(($self->child_nodes)->flatten){ … … 2523 2526 { package IRx1::VarDecl; 2524 2527 use base "Any";(do{sub note_block_lexical_variable_decls{my $self=CORE::shift;(do{if($self->is_lexical) { 2525 (do{$ ::es_whiteboard__lexical_variable_decls->push($self)})2528 (do{$whiteboard::lexical_variable_decls->push($self)}) 2526 2529 }; 2527 2530 ($self->notes->{'is'} = {}); … … 2535 2538 (do{($self->notes->{'is'}->{'context'} = 1)}) 2536 2539 }; 2540 if(($self->scope() eq "temp")) { 2541 (do{($self->notes->{'is'}->{'temp'} = 1)}) 2542 }; 2537 2543 for(($self->child_nodes)->flatten){ 2538 2544 (do{$_->note_block_lexical_variable_decls()}) … … 2543 2549 { package IRx1::SubDecl; 2544 2550 use base "Any";(do{sub note_block_lexical_variable_decls{my $self=CORE::shift;(do{if($_->name()) { 2545 (do{$ ::es_whiteboard__lexical_variable_decls->push($self)})2551 (do{$whiteboard::lexical_variable_decls->push($self)}) 2546 2552 }; 2547 2553 for(($self->child_nodes)->flatten){ … … 2559 2565 2560 2566 { package IRx1::CompUnit; 2561 use base "Any";(do{sub note_environment{my $self=CORE::shift;(do{{ package main; use vars '$es_whiteboard__package_chain'};local $::es_whiteboard__package_chain = [];2562 { package main; use vars '$es_whiteboard__lexical_bindings'};local $::es_whiteboard__lexical_bindings = $self->update_lexical_bindings({}, $self->notes->{'lexical_variable_decls'});2567 use base "Any";(do{sub note_environment{my $self=CORE::shift;(do{{ package whiteboard; use vars '$package_chain'};local $whiteboard::package_chain = []; 2568 { package whiteboard; use vars '$lexical_bindings'};local $whiteboard::lexical_bindings = $self->update_lexical_bindings({}, $self->notes->{'lexical_variable_decls'}); 2563 2569 for(($self->child_nodes)->flatten){ 2564 2570 (do{$_->note_environment()}) … … 2568 2574 2569 2575 { package IRx1::Block; 2570 use base "Any";(do{sub note_environment{my $self=CORE::shift;(do{{ package main; use vars '$es_whiteboard__lexical_bindings'};local $::es_whiteboard__lexical_bindings = $self->update_lexical_bindings($::es_whiteboard__lexical_bindings, $self->notes->{'lexical_variable_decls'});2576 use base "Any";(do{sub note_environment{my $self=CORE::shift;(do{{ package whiteboard; use vars '$lexical_bindings'};local $whiteboard::lexical_bindings = $self->update_lexical_bindings($whiteboard::lexical_bindings, $self->notes->{'lexical_variable_decls'}); 2571 2577 for(($self->child_nodes)->flatten){ 2572 2578 (do{$_->note_environment()}) … … 2591 2597 (do{($new_chain = [$self])}) 2592 2598 }else { 2593 (do{($new_chain = [$ ::es_whiteboard__package_chain->flatten(), $self])})2594 }; 2595 { package main; use vars '$es_whiteboard__package_chain'};local $::es_whiteboard__package_chain = $new_chain;2599 (do{($new_chain = [$whiteboard::package_chain->flatten(), $self])}) 2600 }; 2601 { package whiteboard; use vars '$package_chain'};local $whiteboard::package_chain = $new_chain; 2596 2602 for(($self->child_nodes)->flatten){ 2597 2603 (do{$_->note_environment()}) … … 2601 2607 2602 2608 { package IRx1::Apply; 2603 use base "Any";(do{sub note_environment{my $self=CORE::shift;(do{($self->notes->{'lexical_bindings'} = $ ::es_whiteboard__lexical_bindings);2609 use base "Any";(do{sub note_environment{my $self=CORE::shift;(do{($self->notes->{'lexical_bindings'} = $whiteboard::lexical_bindings); 2604 2610 for(($self->child_nodes)->flatten){ 2605 2611 (do{$_->note_environment()}) … … 2610 2616 { package IRx1::Var; 2611 2617 use base "Any";(do{sub note_environment{my $self=CORE::shift;(do{my $key = ($self->{'sigil'} . $self->{'name'}); 2612 ($self->notes->{'decl'} = $ ::es_whiteboard__lexical_bindings->{$key});2618 ($self->notes->{'decl'} = $whiteboard::lexical_bindings->{$key}); 2613 2619 if($self->notes->{'decl'}) { 2614 2620 (do{($self->notes->{'is'} = $self->notes->{'decl'}->notes()->{'is'})}) … … 2616 2622 (do{($self->notes->{'is'} = {})}) 2617 2623 }; 2624 ($self->notes->{'crnt_package_chain'} = $whiteboard::package_chain); 2625 if(($self->notes->{'crnt_package_chain'}->elems() == 0)) { 2626 (do{($self->notes->{'crnt_package_chain'} = ["Main"])}) 2627 }; 2628 ($self->notes->{'crnt_package'} = $self->notes->{'crnt_package_chain'}->join("\:\:")); 2629 ($self->name =~ qr/(?:(.+)::)?([^:]+)$/); 2630 ($self->notes->{'package'} = ($1 || $self->notes->{'crnt_package'})); 2631 ($self->notes->{'bare_name'} = $2); 2618 2632 for(($self->child_nodes)->flatten){ 2619 2633 (do{$_->note_environment()}) … … 2632 2646 use base "Any";(do{sub is_lexical{my $self=CORE::shift;(do{($self->scope eq "my")})}; 2633 2647 sub is_context{my $self=CORE::shift;(do{$self->notes->{'is'}->{'context'}})}; 2648 sub is_temp{my $self=CORE::shift;(do{$self->notes->{'is'}->{'temp'}})}; 2634 2649 sub name{my $self=CORE::shift;(do{$self->{'var'}->{'name'}})}; 2650 sub bare_name{my $self=CORE::shift;(do{$self->var()->bare_name()})}; 2651 sub package{my $self=CORE::shift;(do{$self->var()->package()})}; 2652 sub crnt_package{my $self=CORE::shift;(do{$self->var()->crnt_package()})}; 2635 2653 sub sigil{my $self=CORE::shift;(do{$self->{'var'}->{'sigil'}})}; 2636 2654 sub is_scalar{my $self=CORE::shift;(do{($self->{'var'}->{'sigil'} eq "\$")})}; … … 2650 2668 { package IRx1::Var; 2651 2669 use base "Any";(do{sub decl{my $self=CORE::shift;(do{$self->notes->{'decl'}})}; 2652 sub is_context{my $self=CORE::shift;(do{(((($self->{'twigil'} || "")) eq "\+") || $self->notes->{'is'}->{'context'})})}}) 2670 sub bare_name{my $self=CORE::shift;(do{$self->notes()->{'bare_name'}})}; 2671 sub package{my $self=CORE::shift;(do{$self->notes()->{'package'}})}; 2672 sub crnt_package{my $self=CORE::shift;(do{$self->notes()->{'crnt_package'}})}; 2673 sub is_context{my $self=CORE::shift;(do{(((($self->{'twigil'} || "")) eq "\+") || $self->notes->{'is'}->{'context'})})}; 2674 sub is_temp{my $self=CORE::shift;(do{$self->notes->{'is'}->{'context'}})}}) 2653 2675 } 2654 2676 ; … … 3064 3086 sub cb__CompUnit{my $self=CORE::shift;my($n)=@_; 3065 3087 (do{$n->do_all_analysis(); 3066 { package main; use vars '$es_whiteboard__in_package'};local $::es_whiteboard__in_package = [];3067 { package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 0;3068 { package main; use vars '$es_whiteboard__compunit_footer'};local $::es_whiteboard__compunit_footer = [];3088 { package whiteboard; use vars '$in_package'};local $whiteboard::in_package = []; 3089 { package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 0; 3090 { package whiteboard; use vars '$compunit_footer'};local $whiteboard::compunit_footer = []; 3069 3091 my $code = (("package\ Main\;\ 3070 3092 " . $self->prelude_for_entering_a_package())); 3071 3093 my $stmts = $self->e($n->statements()); 3072 my $foot = $ ::es_whiteboard__compunit_footer->join("\;\3094 my $foot = $whiteboard::compunit_footer->join("\;\ 3073 3095 "); 3074 3096 ((($code . $stmts->join("\;\ … … 3076 3098 ")})}; 3077 3099 sub cb__Block{my $self=CORE::shift;my($n)=@_; 3078 (do{{ package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 0;3100 (do{{ package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 0; 3079 3101 (("\(do\{" . $self->e($n->statements())->join("\;\ 3080 3102 ")) . "\}\)")})}; … … 3099 3121 }})}; 3100 3122 sub cb__ClosureTrait{my $self=CORE::shift;my($n)=@_; 3101 (do{{ package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 0;3123 (do{{ package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 0; 3102 3124 ((($n->kind() . "\{") . $self->e($n->block())) . "\}")})}; 3103 3125 sub cb__PackageDecl{my $self=CORE::shift;my($n)=@_; 3104 (do{my $in_package = [$ ::es_whiteboard__in_package->flatten(), $n->name()];3126 (do{my $in_package = [$whiteboard::in_package->flatten(), $n->name()]; 3105 3127 my $name = $in_package->join("\:\:"); 3106 3128 my $base = "use\ base\ \"Any\"\;"; … … 3133 3155 ($head = (($head . $base) . $self->prelude_for_entering_a_package())); 3134 3156 if($n->block()) { 3135 (do{{ package main; use vars '$es_whiteboard__in_package'};local $::es_whiteboard__in_package = $in_package;3157 (do{{ package whiteboard; use vars '$in_package'};local $whiteboard::in_package = $in_package; 3136 3158 ((($head . $self->e(($n->traits() || []))->join("\ 3137 3159 ")) . $self->e($n->block())) . $foot)}) 3138 3160 }else { 3139 (do{($ ::es_whiteboard__in_package = $in_package);3140 $ ::es_whiteboard__compunit_footer->unshift($foot);3161 (do{($whiteboard::in_package = $in_package); 3162 $whiteboard::compunit_footer->unshift($foot); 3141 3163 (($head . $self->e(($n->traits() || []))->join("\ 3142 3164 ")) . "\;\ … … 3145 3167 sub cb__Trait{my $self=CORE::shift;my($n)=@_; 3146 3168 (do{if(((($n->verb() eq "is") or ($n->verb() eq "does")))) { 3147 (do{my $pkgname = $ ::es_whiteboard__in_package->join("\:\:");3148 my $name = (($ ::es_whiteboard__in_package->splice(0, (-1))->join("\:\:") . "\:\:") . $self->e($n->expr()));3169 (do{my $pkgname = $whiteboard::in_package->join("\:\:"); 3170 my $name = (($whiteboard::in_package->splice(0, (-1))->join("\:\:") . "\:\:") . $self->e($n->expr())); 3149 3171 $name->re_gsub("\^\:\:", ""); 3150 3172 (((("BEGIN\{push\(\@" . $pkgname) . "\:\:ISA\,\'") . $name) . "\'\)\;\}\ … … 3167 3189 my $code = (((((("sub\ " . $name) . "\ \{\ if\(\@_\=\=2\)\{") . $x) . "\=\$_\[1\]\}else\{") . $x) . "\}\}"); 3168 3190 if($default) { 3169 (do{my $pkg = $ ::es_whiteboard__in_package->join("\:\:");3191 (do{my $pkg = $whiteboard::in_package->join("\:\:"); 3170 3192 ($code = (($code . "\;\ 3171 3193 ") . $self->create_default_for($pkg, $name, $default)))}) … … 3174 3196 }})}; 3175 3197 sub cb__VarDecl{my $self=CORE::shift;my($n)=@_; 3176 (do{{ package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 0;3198 (do{{ package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 0; 3177 3199 if((($n->scope() eq "has"))) { 3178 3200 (do{my $default = ""; … … 3203 3225 ($post = "\}")}) 3204 3226 }; 3205 { package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 1;3227 { package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 1; 3206 3228 ($default = ((("\ \=\ " . $pre) . $self->e($n->default_expr())) . $post))}) 3207 3229 }else { … … 3220 3242 $name->re_sub_g("\^\(\.\)\:\:", "\$1"); 3221 3243 ((((((("\{package\ main\;\ use\ vars\ \'" . $name) . "\'\}\;") . "local") . "\ ") . $self->e($n->var())) . $default))}) 3244 }elsif(($n->is_temp())) { 3245 (do{my $var = $n->var(); 3246 my $nam = $self->encode_varname($var->sigil(), $var->twigil(), $var->bare_name()); 3247 my $pkg = $n->var()->package(); 3248 ((((((((("\{\ package\ " . $pkg) . "\;\ use\ vars\ \'") . $nam) . "\'\}\;") . "local") . "\ ") . $self->e($n->var())) . $default))}) 3222 3249 }else { 3223 3250 (do{((($n->scope() . "\ ") . $self->e($n->var())) . $default)}) … … 3315 3342 }})}; 3316 3343 sub cb__SubDecl{my $self=CORE::shift;my($n)=@_; 3317 (do{{ package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 0;3344 (do{{ package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 0; 3318 3345 my $name = $n->name(); 3319 3346 if($name) { … … 3345 3372 (do{""}) 3346 3373 }else { 3347 (do{{ package main; use vars '$es_whiteboard__signature_inits'};local $::es_whiteboard__signature_inits = "";3374 (do{{ package whiteboard; use vars '$signature_inits'};local $whiteboard::signature_inits = ""; 3348 3375 my $pl = $self->e($n->parameters())->join("\,"); 3349 (((("my\(" . $pl) . "\)\=\@_\;") . $ ::es_whiteboard__signature_inits) . "\3376 (((("my\(" . $pl) . "\)\=\@_\;") . $whiteboard::signature_inits) . "\ 3350 3377 ")}) 3351 3378 }})}; … … 3354 3381 if(($n->quant() && ($n->quant() eq "\*"))) { 3355 3382 (do{my $tmp = ("\@" . $n->param_var()->name()); 3356 ($ ::es_whiteboard__signature_inits = ((((($::es_whiteboard__signature_inits . "\3383 ($whiteboard::signature_inits = ((((($whiteboard::signature_inits . "\ 3357 3384 my\ ") . $enc) . "\ \=\ \\") . $tmp) . "\;")); 3358 3385 $tmp}) … … 3366 3393 $self->encode_varname($s, $t, $dsn)})}; 3367 3394 sub cb__Call{my $self=CORE::shift;my($n)=@_; 3368 (do{{ package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 0;3395 (do{{ package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 0; 3369 3396 my $method = $self->e($n->method()); 3370 3397 if((($method =~ "postcircumfix\:\<\ \>"))) { … … 3534 3561 my $pre = ""; 3535 3562 if(($t eq "\+")) { 3536 (do{($env = " e")})3537 }; 3538 if((($s eq "\$") && ($env eq " e"))) {3563 (do{($env = "x")}) 3564 }; 3565 if((($s eq "\$") && ($env eq "x"))) { 3539 3566 (do{($pre = "s_")}) 3540 3567 }; … … 3566 3593 my $v = (($s . $t) . $dsn); 3567 3594 if(((($v eq "\$\?PACKAGE") || ($v eq "\$\?MODULE")) || ($v eq "\$\?CLASS"))) { 3568 (do{my $pkgname = $ ::es_whiteboard__in_package->join("\:\:");3595 (do{my $pkgname = $whiteboard::in_package->join("\:\:"); 3569 3596 ($pkgname = ($pkgname || "Main")); 3570 3597 (("\'" . $pkgname) . "\'")}) … … 3581 3608 (do{$self->e($n->text())})}; 3582 3609 sub cb__Hash{my $self=CORE::shift;my($n)=@_; 3583 (do{{ package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 1;3610 (do{{ package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 1; 3584 3611 (("\{" . $self->e(($n->hash() || []))->join("\,")) . "\}")})}; 3585 3612 sub cb__Buf{my $self=CORE::shift;my($n)=@_; … … 3590 3617 (("qr\/" . $pat) . "\/")})}; 3591 3618 sub cb__Pair{my $self=CORE::shift;my($n)=@_; 3592 (do{if($ ::es_whiteboard__emit_pairs_inline) {3593 (do{{ package main; use vars '$es_whiteboard__emit_pairs_inline'};local $::es_whiteboard__emit_pairs_inline = 0;3619 (do{if($whiteboard::emit_pairs_inline) { 3620 (do{{ package whiteboard; use vars '$emit_pairs_inline'};local $whiteboard::emit_pairs_inline = 0; 3594 3621 (((("\(" . $self->e($n->key())) . "\ \=\>\ ") . $self->e($n->value())) . "\)")}) 3595 3622 }else { -
misc/elf/elf_g_src/EmitSimpleP5.pm
r21553 r21584 414 414 method cb__CompUnit ($n) { 415 415 $n.do_all_analysis(); 416 my $+whiteboard::in_package = [];417 my $+whiteboard::emit_pairs_inline = 0;418 my $+whiteboard::compunit_footer = [];416 temp $whiteboard::in_package = []; 417 temp $whiteboard::emit_pairs_inline = 0; 418 temp $whiteboard::compunit_footer = []; 419 419 my $code = ( 420 420 "package Main;\n"~ 421 421 self.prelude_for_entering_a_package()); 422 422 my $stmts = $.e($n.statements); 423 my $foot = $ +whiteboard::compunit_footer.join(";\n");423 my $foot = $whiteboard::compunit_footer.join(";\n"); 424 424 $code ~ $stmts.join(";\n")~$foot~";\n"; 425 425 }; 426 426 method cb__Block ($n) { 427 my $+whiteboard::emit_pairs_inline = 0;427 temp $whiteboard::emit_pairs_inline = 0; 428 428 #'# '~$.e($n.notes<lexical_variable_decls>).join(" ")~"\n"~ 429 429 '(do{'~$.e($n.statements).join(";\n")~'})' … … 446 446 }; 447 447 method cb__ClosureTrait ($n) { 448 my $+whiteboard::emit_pairs_inline = 0;448 temp $whiteboard::emit_pairs_inline = 0; 449 449 $n.kind~'{'~$.e($n.block)~'}' 450 450 }; 451 451 452 452 method cb__PackageDecl ($n) { 453 my $in_package = [$ +whiteboard::in_package.flatten,$n.name];453 my $in_package = [$whiteboard::in_package.flatten,$n.name]; 454 454 my $name = $in_package.join('::'); 455 455 my $base = 'use base "Any";';
