- Timestamp:
- 10/05/08 22:20:08 (3 months ago)
- Location:
- misc/elf
- Files:
-
- 3 modified
-
elf_h (modified) (26 diffs)
-
elf_h_src/IRx1_FromAST.pm (modified) (28 diffs)
-
elf_h_src/IRx1_FromAST_create.pl (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
misc/elf/elf_h
r22501 r22517 1978 1978 } 1979 1979 ; 1980 if(GLOBAL::not($GLOBAL::ast2ir_0)) {1981 (do{($GLOBAL::ast2ir_0 = IRx1_Build->new()->init())})1982 };1983 ($GLOBAL::ast2ir_1 = IRx1_Build->new()->init());1984 1980 1985 1981 { package IRx1_Build; 1986 1982 use base "Any";(do{sub irbuild_ir{my($x)=@_; 1987 1983 (do{$x->make_ir_from_Match_tree()})}; 1988 sub init{my $self=CORE::shift;(do{$self->add_constructor("comp_unit",sub {my($m)=@_;1989 (do{IRx1::CompUnit->newp($m, irbuild_ir($m->hash()->{"statementlist"}), GLOBAL::undef())})} );1990 $self->add_constructor("statement",sub {my($m)=@_;1984 my $construct_comp_unit = sub {my($m)=@_; 1985 (do{IRx1::CompUnit->newp($m, irbuild_ir($m->hash()->{"statementlist"}), GLOBAL::undef())})}; 1986 my $construct_statement = sub {my($m)=@_; 1991 1987 (do{my $labels = irbuild_ir($m->hash()->{"label"}); 1992 1988 my $result = (irbuild_ir($m->hash()->{"expr"}) || irbuild_ir($m->hash()->{"control"})); … … 2003 1999 }else { 2004 2000 (do{$result}) 2005 }})} );2006 $self->add_constructor("expect_infix",sub {my($m)=@_;2001 }})}; 2002 my $construct_expect_infix = sub {my($m)=@_; 2007 2003 (do{if(irbuild_ir($m->hash()->{"infix"})) { 2008 2004 (do{if(irbuild_ir($m->hash()->{"infix_postfix_meta_operator"})) { … … 2021 2017 }else { 2022 2018 (do{GLOBAL::die("Unimplemented\ infix_prefix_meta_operator\ or\ infix_circumfix_meta_operator")}) 2023 }})} );2024 $self->add_constructor("fatarrow",sub {my($m)=@_;2025 (do{IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"key"}), irbuild_ir($m->hash()->{"val"}))})} );2026 $self->add_constructor("expect_term",sub {my($m)=@_;2019 }})}; 2020 my $construct_fatarrow = sub {my($m)=@_; 2021 (do{IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"key"}), irbuild_ir($m->hash()->{"val"}))})}; 2022 my $construct_expect_term = sub {my($m)=@_; 2027 2023 (do{{ package IRx1_Build; use vars '$expect_term_base'};local $blackboard::expect_term_base = irbuild_ir($m->hash()->{"noun"}); 2028 2024 my $ops = []; … … 2036 2032 (do{($blackboard::expect_term_base = irbuild_ir($_))}) 2037 2033 }; 2038 $blackboard::expect_term_base})} );2039 $self->add_constructor("term\:expect_term",sub {my($m)=@_;2040 (do{irbuild_ir($m->hash()->{"noun"})})} );2041 $self->add_constructor("post",sub {my($m)=@_;2034 $blackboard::expect_term_base})}; 2035 my $construct_term_58expect_term = sub {my($m)=@_; 2036 (do{irbuild_ir($m->hash()->{"noun"})})}; 2037 my $construct_post = sub {my($m)=@_; 2042 2038 (do{if($m->hash()->{"args"}) { 2043 2039 (do{irbuild_ir($m->hash()->{"args"})->[0]}) 2044 2040 }else { 2045 2041 (do{(irbuild_ir($m->hash()->{"dotty"}) or irbuild_ir($m->hash()->{"postop"}))}) 2046 }})} );2047 $self->add_constructor("pre",sub {my($m)=@_;2042 }})}; 2043 my $construct_pre = sub {my($m)=@_; 2048 2044 (do{if($m->hash()->{"args"}) { 2049 2045 (do{irbuild_ir($m->hash()->{"args"})->[0]}) … … 2052 2048 }else { 2053 2049 (do{GLOBAL::die("pre\ without\ a\ prefix\ is\ unimplemented")}) 2054 }})} );2055 $self->add_constructor("dotty\:methodop",sub {my($m)=@_;2056 (do{IRx1::Call->newp($m, $blackboard::expect_term_base, irbuild_ir($m->hash()->{"ident"}), IRx1::Capture->newp1($m, (irbuild_ir($m->hash()->{"semilist"}) || [])))})} );2057 $self->add_constructor("dotty\:\.\^\!",sub {my($m)=@_;2058 (do{IRx1::Call->newp($m, $blackboard::expect_term_base, ("\^\!" . irbuild_ir($m->hash()->{"methodop"}->hash()->{"ident"})), IRx1::Capture->newp1($m, (irbuild_ir($m->hash()->{"methodop"}->hash()->{"semilist"}) || [])))})} );2059 $self->add_constructor("dotty\:postcircumfix",sub {my($m)=@_;2050 }})}; 2051 my $construct_dotty_58methodop = sub {my($m)=@_; 2052 (do{IRx1::Call->newp($m, $blackboard::expect_term_base, irbuild_ir($m->hash()->{"ident"}), IRx1::Capture->newp1($m, (irbuild_ir($m->hash()->{"semilist"}) || [])))})}; 2053 my $construct_dotty_58_46_94_33 = sub {my($m)=@_; 2054 (do{IRx1::Call->newp($m, $blackboard::expect_term_base, ("\^\!" . irbuild_ir($m->hash()->{"methodop"}->hash()->{"ident"})), IRx1::Capture->newp1($m, (irbuild_ir($m->hash()->{"methodop"}->hash()->{"semilist"}) || [])))})}; 2055 my $construct_dotty_58postcircumfix = sub {my($m)=@_; 2060 2056 (do{my $s = ($m->match_string()); 2061 2057 my $name = ((GLOBAL::substr($s, 0, 1) . "\ ") . GLOBAL::substr($s, (-1), 1)); … … 2065 2061 (do{($args = [$args])}) 2066 2062 }; 2067 IRx1::Call->newp($m, $blackboard::expect_term_base, $ident, IRx1::Capture->newp1($m, ($args || [])))})} );2068 $self->add_constructor("postcircumfix",sub {my($m)=@_;2063 IRx1::Call->newp($m, $blackboard::expect_term_base, $ident, IRx1::Capture->newp1($m, ($args || [])))})}; 2064 my $construct_postcircumfix = sub {my($m)=@_; 2069 2065 (do{my $s = ($m->match_string()); 2070 2066 my $name = ((GLOBAL::substr($s, 0, 1) . "\ ") . GLOBAL::substr($s, (-1), 1)); … … 2074 2070 (do{($args = [$args])}) 2075 2071 }; 2076 IRx1::Call->newp($m, $blackboard::expect_term_base, $ident, IRx1::Capture->newp1($m, ($args || [])))})} );2077 $self->add_constructor("postfix",sub {my($m)=@_;2072 IRx1::Call->newp($m, $blackboard::expect_term_base, $ident, IRx1::Capture->newp1($m, ($args || [])))})}; 2073 my $construct_postfix = sub {my($m)=@_; 2078 2074 (do{my $op = ($m->match_string()); 2079 IRx1::Apply->newp($m, ("postfix\:" . $op), IRx1::Capture->newp1($m, [$blackboard::expect_term_base]))})} );2080 $self->add_constructor("prefix",sub {my($m)=@_;2075 IRx1::Apply->newp($m, ("postfix\:" . $op), IRx1::Capture->newp1($m, [$blackboard::expect_term_base]))})}; 2076 my $construct_prefix = sub {my($m)=@_; 2081 2077 (do{my $op = ($m->match_string()); 2082 IRx1::Apply->newp($m, ("prefix\:" . $op), IRx1::Capture->newp1($m, [$blackboard::expect_term_base]))})} );2083 $self->add_constructor("infix",sub {my($m)=@_;2078 IRx1::Apply->newp($m, ("prefix\:" . $op), IRx1::Capture->newp1($m, [$blackboard::expect_term_base]))})}; 2079 my $construct_infix = sub {my($m)=@_; 2084 2080 (do{my $op = ($m->match_string()); 2085 IRx1::Apply->newp($m, ("infix\:" . $op), IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"left"}), irbuild_ir($m->hash()->{"right"})]))})} );2086 $self->add_constructor("term",sub {my($m)=@_;2081 IRx1::Apply->newp($m, ("infix\:" . $op), IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"left"}), irbuild_ir($m->hash()->{"right"})]))})}; 2082 my $construct_term = sub {my($m)=@_; 2087 2083 (do{my $text = ($m->match_string()); 2088 2084 if(($text eq "self")) { … … 2093 2089 (do{GLOBAL::die("AST\ term\ partially\ unimplemented\.\ 2094 2090 ")}) 2095 }})} );2096 $self->add_constructor("integer",sub {my($m)=@_;2097 (do{IRx1::NumInt->newp($m, ($m->match_string()), 10)})} );2098 $self->add_constructor("subcall",sub {my($m)=@_;2091 }})}; 2092 my $construct_integer = sub {my($m)=@_; 2093 (do{IRx1::NumInt->newp($m, ($m->match_string()), 10)})}; 2094 my $construct_subcall = sub {my($m)=@_; 2099 2095 (do{my $t = irbuild_ir($m->hash()->{"subshortname"}->hash()->{"twigil"}); 2100 2096 if(($t && ($t eq "\."))) { … … 2102 2098 }else { 2103 2099 (do{IRx1::Apply->newp($m, irbuild_ir($m->hash()->{"subshortname"}), IRx1::Capture->newp1($m, (irbuild_ir($m->hash()->{"semilist"}) || [])))}) 2104 }})} );2105 $self->add_constructor("name",sub {my($m)=@_;2106 (do{($m->match_string())})} );2107 $self->add_constructor("subshortname",sub {my($m)=@_;2100 }})}; 2101 my $construct_name = sub {my($m)=@_; 2102 (do{($m->match_string())})}; 2103 my $construct_subshortname = sub {my($m)=@_; 2108 2104 (do{if($m->hash()->{"category"}) { 2109 2105 (do{my $cat = $m->hash()->{"category"}->match_string(); … … 2115 2111 }else { 2116 2112 (do{($m->match_string())}) 2117 }})} );2118 $self->add_constructor("statement_control\:use",sub {my($m)=@_;2119 (do{IRx1::Use->newp($m, "use", irbuild_ir($m->hash()->{"module_name"}), irbuild_ir($m->hash()->{"EXPR"}))})} );2120 $self->add_constructor("module_name\:depreciated",sub {my($m)=@_;2121 (do{($m->match_string())})} );2122 $self->add_constructor("module_name\:normal",sub {my($m)=@_;2123 (do{($m->match_string())})} );2124 $self->add_constructor("role_name",sub {my($m)=@_;2125 (do{($m->match_string())})} );2126 $self->add_constructor("statement_control\:BEGIN",sub {my($m)=@_;2127 (do{IRx1::ClosureTrait->newp($m, "BEGIN", irbuild_ir($m->hash()->{"block"}))})} );2128 $self->add_constructor("term\:listop",sub {my($m)=@_;2113 }})}; 2114 my $construct_statement_control_58use = sub {my($m)=@_; 2115 (do{IRx1::Use->newp($m, "use", irbuild_ir($m->hash()->{"module_name"}), irbuild_ir($m->hash()->{"EXPR"}))})}; 2116 my $construct_module_name_58depreciated = sub {my($m)=@_; 2117 (do{($m->match_string())})}; 2118 my $construct_module_name_58normal = sub {my($m)=@_; 2119 (do{($m->match_string())})}; 2120 my $construct_role_name = sub {my($m)=@_; 2121 (do{($m->match_string())})}; 2122 my $construct_statement_control_58BEGIN = sub {my($m)=@_; 2123 (do{IRx1::ClosureTrait->newp($m, "BEGIN", irbuild_ir($m->hash()->{"block"}))})}; 2124 my $construct_term_58listop = sub {my($m)=@_; 2129 2125 (do{my $not_really_an_arglist = irbuild_ir($m->hash()->{"arglist"}); 2130 2126 if(irbuild_ir($m->hash()->{"arglist"})) { … … 2132 2128 }else { 2133 2129 (do{IRx1::Apply->newp($m, irbuild_ir($m->hash()->{"ident"}), IRx1::Capture->newp1($m, []))}) 2134 }})} );2135 $self->add_constructor("quote\:q",sub {my($m)=@_;2130 }})}; 2131 my $construct_quote_58q = sub {my($m)=@_; 2136 2132 (do{my $s = irbuild_ir($m->hash()->{"text"}); 2137 2133 ($s = $s->re_gsub_pat("\\\\\(\[\\\\\'\]\)", "\$1")); 2138 IRx1::Buf->newp($m, $s)})} );2139 $self->add_constructor("quote\:qq",sub {my($m)=@_;2134 IRx1::Buf->newp($m, $s)})}; 2135 my $construct_quote_58qq = sub {my($m)=@_; 2140 2136 (do{my $s = irbuild_ir($m->hash()->{"text"}); 2141 2137 ($s = $s->re_gsub("\(\?\<\!\\\\\)\\\\n", "\ … … 2143 2139 ($s = $s->re_gsub("\(\?\<\!\\\\\)\\\\t", "\ ")); 2144 2140 ($s = $s->re_gsub_pat("\\\\\(\.\)", "\$1")); 2145 IRx1::Buf->newp($m, $s)})} );2146 $self->add_constructor("quote\:regex",sub {my($m)=@_;2141 IRx1::Buf->newp($m, $s)})}; 2142 my $construct_quote_58regex = sub {my($m)=@_; 2147 2143 (do{my $s = (irbuild_ir($m->hash()->{"text"}) || irbuild_ir($m->hash()->{"quotesnabber"}->hash()->{"text"})); 2148 IRx1::Rx->newp($m, $s, irbuild_ir($m->hash()->{"quotepair"}))})} );2149 $self->add_constructor("scope_declarator\:my",sub {my($m)=@_;2144 IRx1::Rx->newp($m, $s, irbuild_ir($m->hash()->{"quotepair"}))})}; 2145 my $construct_scope_declarator_58my = sub {my($m)=@_; 2150 2146 (do{{ package IRx1_Build; use vars '$scope'};local $blackboard::scope = "my"; 2151 irbuild_ir($m->hash()->{"scoped"})})} );2152 $self->add_constructor("scope_declarator\:has",sub {my($m)=@_;2147 irbuild_ir($m->hash()->{"scoped"})})}; 2148 my $construct_scope_declarator_58has = sub {my($m)=@_; 2153 2149 (do{{ package IRx1_Build; use vars '$scope'};local $blackboard::scope = "has"; 2154 irbuild_ir($m->hash()->{"scoped"})})} );2155 $self->add_constructor("scope_declarator\:our",sub {my($m)=@_;2150 irbuild_ir($m->hash()->{"scoped"})})}; 2151 my $construct_scope_declarator_58our = sub {my($m)=@_; 2156 2152 (do{{ package IRx1_Build; use vars '$scope'};local $blackboard::scope = "our"; 2157 irbuild_ir($m->hash()->{"scoped"})})} );2158 $self->add_constructor("scope_declarator\:temp",sub {my($m)=@_;2153 irbuild_ir($m->hash()->{"scoped"})})}; 2154 my $construct_scope_declarator_58temp = sub {my($m)=@_; 2159 2155 (do{{ package IRx1_Build; use vars '$scope'};local $blackboard::scope = "temp"; 2160 irbuild_ir($m->hash()->{"scoped"})})} );2161 $self->add_constructor("scoped",sub {my($m)=@_;2156 irbuild_ir($m->hash()->{"scoped"})})}; 2157 my $construct_scoped = sub {my($m)=@_; 2162 2158 (do{{ package IRx1_Build; use vars '$typenames'};local $blackboard::typenames = irbuild_ir($m->hash()->{"fulltypename"}); 2163 ((((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"}))})} );2164 $self->add_constructor("variable_decl",sub {my($m)=@_;2159 ((((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"}))})}; 2160 my $construct_variable_decl = sub {my($m)=@_; 2165 2161 (do{my $scope = $blackboard::scope; 2166 2162 { package IRx1_Build; use vars '$scope'};local $blackboard::scope; 2167 2163 my $typenames = $blackboard::typenames; 2168 2164 { package IRx1_Build; use vars '$typenames'};local $blackboard::typenames = GLOBAL::undef(); 2169 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"}))})} );2170 $self->add_constructor("variable",sub {my($m)=@_;2165 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"}))})}; 2166 my $construct_variable = sub {my($m)=@_; 2171 2167 (do{my $tw = irbuild_ir($m->hash()->{"twigil"}); 2172 2168 if($m->hash()->{"postcircumfix"}) { … … 2185 2181 }else { 2186 2182 (do{IRx1::Var->newp($m, irbuild_ir($m->hash()->{"sigil"}), $tw, irbuild_ir($m->hash()->{"desigilname"}))}) 2187 }})} );2188 $self->add_constructor("sigil",sub {my($m)=@_;2189 (do{($m->match_string())})} );2190 $self->add_constructor("twigil",sub {my($m)=@_;2191 (do{($m->match_string())})} );2192 $self->add_constructor("special_variable",sub {my($m)=@_;2183 }})}; 2184 my $construct_sigil = sub {my($m)=@_; 2185 (do{($m->match_string())})}; 2186 my $construct_twigil = sub {my($m)=@_; 2187 (do{($m->match_string())})}; 2188 my $construct_special_variable = sub {my($m)=@_; 2193 2189 (do{my $v = ($m->match_string()); 2194 2190 my $s = GLOBAL::substr($v, 0, 1); 2195 2191 my $n = GLOBAL::substr($v, 1, $v->length()); 2196 IRx1::Var->newp($m, $s, GLOBAL::undef(), $n)})} );2197 $self->add_constructor("circumfix",sub {my($m)=@_;2192 IRx1::Var->newp($m, $s, GLOBAL::undef(), $n)})}; 2193 my $construct_circumfix = sub {my($m)=@_; 2198 2194 (do{my $s = ($m->match_string()); 2199 2195 my $name = ((GLOBAL::substr($s, 0, 1) . "\ ") . GLOBAL::substr($s, (-1), 1)); … … 2202 2198 (do{($args = [$args])}) 2203 2199 }; 2204 IRx1::Apply->newp($m, ("circumfix\:" . $name), IRx1::Capture->newp1($m, ($args || [])))})} );2205 $self->add_constructor("statement_control\:for",sub {my($m)=@_;2206 (do{IRx1::For->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})} );2207 $self->add_constructor("statement_mod_loop\:for",sub {my($m)=@_;2208 (do{IRx1::For->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})} );2209 $self->add_constructor("statement_control\:while",sub {my($m)=@_;2210 (do{IRx1::Loop->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})} );2211 $self->add_constructor("statement_mod_loop\:while",sub {my($m)=@_;2212 (do{IRx1::Loop->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})} );2213 $self->add_constructor("statement_control\:until",sub {my($m)=@_;2200 IRx1::Apply->newp($m, ("circumfix\:" . $name), IRx1::Capture->newp1($m, ($args || [])))})}; 2201 my $construct_statement_control_58for = sub {my($m)=@_; 2202 (do{IRx1::For->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})}; 2203 my $construct_statement_mod_loop_58for = sub {my($m)=@_; 2204 (do{IRx1::For->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})}; 2205 my $construct_statement_control_58while = sub {my($m)=@_; 2206 (do{IRx1::Loop->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})}; 2207 my $construct_statement_mod_loop_58while = sub {my($m)=@_; 2208 (do{IRx1::Loop->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})}; 2209 my $construct_statement_control_58until = sub {my($m)=@_; 2214 2210 (do{my $test = IRx1::Apply->newp($m, "not", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"expr"})])); 2215 IRx1::Loop->newp($m, $test, irbuild_ir($m->hash()->{"block"}))})} );2216 $self->add_constructor("statement_mod_loop\:until",sub {my($m)=@_;2211 IRx1::Loop->newp($m, $test, irbuild_ir($m->hash()->{"block"}))})}; 2212 my $construct_statement_mod_loop_58until = sub {my($m)=@_; 2217 2213 (do{my $test = IRx1::Apply->newp($m, "not", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"modifier_expr"})])); 2218 IRx1::Loop->newp($m, $test, $blackboard::statement_expr)})} );2219 $self->add_constructor("statement_control\:loop",sub {my($m)=@_;2214 IRx1::Loop->newp($m, $test, $blackboard::statement_expr)})}; 2215 my $construct_statement_control_58loop = sub {my($m)=@_; 2220 2216 (do{my $e1 = irbuild_ir($m->hash()->{"loop_eee"}->hash()->{"loop_e1"}); 2221 2217 my $e2 = irbuild_ir($m->hash()->{"loop_eee"}->hash()->{"loop_e2"}); … … 2223 2219 my $block = irbuild_ir($m->hash()->{"loop_block"}); 2224 2220 my $body = IRx1::Loop->newp($m, $e2, IRx1::Block->newp($m, [$block, $e3])); 2225 IRx1::Block->newp($m, [$e1, $body])})} );2226 $self->add_constructor("statement_control\:if",sub {my($m)=@_;2221 IRx1::Block->newp($m, [$e1, $body])})}; 2222 my $construct_statement_control_58if = sub {my($m)=@_; 2227 2223 (do{my $els = irbuild_ir($m->hash()->{"else"}); 2228 2224 if($els) { 2229 2225 (do{($els = $els->[0])}) 2230 2226 }; 2231 IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"if_expr"}), irbuild_ir($m->hash()->{"if_block"})]]->push(irbuild_ir($m->hash()->{"elsif"})->flatten()), $els)})} );2232 $self->add_constructor("elsif",sub {my($m)=@_;2233 (do{[irbuild_ir($m->hash()->{"elsif_expr"}), irbuild_ir($m->hash()->{"elsif_block"})]})} );2234 $self->add_constructor("if__else",sub {my($m)=@_;2227 IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"if_expr"}), irbuild_ir($m->hash()->{"if_block"})]]->push(irbuild_ir($m->hash()->{"elsif"})->flatten()), $els)})}; 2228 my $construct_elsif = sub {my($m)=@_; 2229 (do{[irbuild_ir($m->hash()->{"elsif_expr"}), irbuild_ir($m->hash()->{"elsif_block"})]})}; 2230 my $construct_if__else = sub {my($m)=@_; 2235 2231 (do{my $key; 2236 2232 for(($m->hash()->keys())->flatten){ … … 2244 2240 }; 2245 2241 my $one = irbuild_ir($m->hash()->{$key}); 2246 $one})} );2247 $self->add_constructor("statement_mod_cond\:if",sub {my($m)=@_;2248 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr]], GLOBAL::undef())})} );2249 $self->add_constructor("statement_control\:unless",sub {my($m)=@_;2250 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"})]], GLOBAL::undef(), 1)})} );2251 $self->add_constructor("statement_mod_cond\:unless",sub {my($m)=@_;2252 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr]], GLOBAL::undef(), 1)})} );2253 $self->add_constructor("statement_control\:given",sub {my($m)=@_;2254 (do{IRx1::Given->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})} );2255 $self->add_constructor("statement_mod_loop\:given",sub {my($m)=@_;2256 (do{IRx1::Given->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})} );2257 $self->add_constructor("statement_control\:when",sub {my($m)=@_;2258 (do{IRx1::When->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})} );2259 $self->add_constructor("statement_mod_cond\:when",sub {my($m)=@_;2260 (do{IRx1::When->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})} );2261 $self->add_constructor("statement_control\:default",sub {my($m)=@_;2262 (do{IRx1::When->newp($m, GLOBAL::undef(), irbuild_ir($m->hash()->{"block"}))})} );2263 $self->add_constructor("statement_prefix\:do",sub {my($m)=@_;2264 (do{IRx1::Apply->newp($m, "statement_prefix\:do", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})} );2265 $self->add_constructor("statement_prefix\:try",sub {my($m)=@_;2266 (do{IRx1::Apply->newp($m, "statement_prefix\:try", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})} );2267 $self->add_constructor("statement_prefix\:gather",sub {my($m)=@_;2268 (do{IRx1::Apply->newp($m, "statement_prefix\:gather", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})} );2269 $self->add_constructor("statement_prefix\:contend",sub {my($m)=@_;2270 (do{IRx1::Apply->newp($m, "statement_prefix\:contend", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})} );2271 $self->add_constructor("statement_prefix\:async",sub {my($m)=@_;2272 (do{IRx1::Apply->newp($m, "statement_prefix\:async", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})} );2273 $self->add_constructor("statement_prefix\:lazy",sub {my($m)=@_;2274 (do{IRx1::Apply->newp($m, "statement_prefix\:lazy", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})} );2275 $self->add_constructor("pblock",sub {my($m)=@_;2242 $one})}; 2243 my $construct_statement_mod_cond_58if = sub {my($m)=@_; 2244 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr]], GLOBAL::undef())})}; 2245 my $construct_statement_control_58unless = sub {my($m)=@_; 2246 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"})]], GLOBAL::undef(), 1)})}; 2247 my $construct_statement_mod_cond_58unless = sub {my($m)=@_; 2248 (do{IRx1::Cond->newp($m, [[irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr]], GLOBAL::undef(), 1)})}; 2249 my $construct_statement_control_58given = sub {my($m)=@_; 2250 (do{IRx1::Given->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})}; 2251 my $construct_statement_mod_loop_58given = sub {my($m)=@_; 2252 (do{IRx1::Given->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})}; 2253 my $construct_statement_control_58when = sub {my($m)=@_; 2254 (do{IRx1::When->newp($m, irbuild_ir($m->hash()->{"expr"}), irbuild_ir($m->hash()->{"block"}))})}; 2255 my $construct_statement_mod_cond_58when = sub {my($m)=@_; 2256 (do{IRx1::When->newp($m, irbuild_ir($m->hash()->{"modifier_expr"}), $blackboard::statement_expr)})}; 2257 my $construct_statement_control_58default = sub {my($m)=@_; 2258 (do{IRx1::When->newp($m, GLOBAL::undef(), irbuild_ir($m->hash()->{"block"}))})}; 2259 my $construct_statement_prefix_58do = sub {my($m)=@_; 2260 (do{IRx1::Apply->newp($m, "statement_prefix\:do", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})}; 2261 my $construct_statement_prefix_58try = sub {my($m)=@_; 2262 (do{IRx1::Apply->newp($m, "statement_prefix\:try", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})}; 2263 my $construct_statement_prefix_58gather = sub {my($m)=@_; 2264 (do{IRx1::Apply->newp($m, "statement_prefix\:gather", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})}; 2265 my $construct_statement_prefix_58contend = sub {my($m)=@_; 2266 (do{IRx1::Apply->newp($m, "statement_prefix\:contend", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})}; 2267 my $construct_statement_prefix_58async = sub {my($m)=@_; 2268 (do{IRx1::Apply->newp($m, "statement_prefix\:async", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})}; 2269 my $construct_statement_prefix_58lazy = sub {my($m)=@_; 2270 (do{IRx1::Apply->newp($m, "statement_prefix\:lazy", IRx1::Capture->newp1($m, [irbuild_ir($m->hash()->{"statement"})]))})}; 2271 my $construct_pblock = sub {my($m)=@_; 2276 2272 (do{if($m->hash()->{"signature"}) { 2277 2273 (do{IRx1::SubDecl->newp($m, GLOBAL::undef(), GLOBAL::undef(), GLOBAL::undef(), GLOBAL::undef(), irbuild_ir($m->hash()->{"signature"}), GLOBAL::undef(), irbuild_ir($m->hash()->{"block"}))}) 2278 2274 }else { 2279 2275 (do{irbuild_ir($m->hash()->{"block"})}) 2280 }})} );2281 $self->add_constructor("block",sub {my($m)=@_;2282 (do{IRx1::Block->newp($m, irbuild_ir($m->hash()->{"statementlist"}))})} );2283 $self->add_constructor("plurality_declarator\:multi",sub {my($m)=@_;2276 }})}; 2277 my $construct_block = sub {my($m)=@_; 2278 (do{IRx1::Block->newp($m, irbuild_ir($m->hash()->{"statementlist"}))})}; 2279 my $construct_plurality_declarator_58multi = sub {my($m)=@_; 2284 2280 (do{{ package IRx1_Build; use vars '$plurality'};local $blackboard::plurality = "multi"; 2285 (irbuild_ir($m->hash()->{"pluralized"}) || irbuild_ir($m->hash()->{"routine_def"}))})} );2286 $self->add_constructor("routine_declarator\:routine_def",sub {my($m)=@_;2281 (irbuild_ir($m->hash()->{"pluralized"}) || irbuild_ir($m->hash()->{"routine_def"}))})}; 2282 my $construct_routine_declarator_58routine_def = sub {my($m)=@_; 2287 2283 (do{my $scope = $blackboard::scope; 2288 2284 { package IRx1_Build; use vars '$scope'};local $blackboard::scope; … … 2300 2296 (do{($sig = irbuild_ir($m->hash()->{"multisig"})->[0])}) 2301 2297 }; 2302 IRx1::SubDecl->newp($m, $scope, GLOBAL::undef(), $plurality, $ident, $sig, irbuild_ir($m->hash()->{"trait"}), irbuild_ir($m->hash()->{"block"}))})} );2303 $self->add_constructor("routine_def",sub {my($m)=@_;2298 IRx1::SubDecl->newp($m, $scope, GLOBAL::undef(), $plurality, $ident, $sig, irbuild_ir($m->hash()->{"trait"}), irbuild_ir($m->hash()->{"block"}))})}; 2299 my $construct_routine_def = sub {my($m)=@_; 2304 2300 (do{my $scope = $blackboard::scope; 2305 2301 { package IRx1_Build; use vars '$scope'};local $blackboard::scope; … … 2317 2313 (do{($sig = irbuild_ir($m->hash()->{"multisig"})->[0])}) 2318 2314 }; 2319 IRx1::SubDecl->newp($m, $scope, GLOBAL::undef(), $plurality, $ident, $sig, irbuild_ir($m->hash()->{"trait"}), irbuild_ir($m->hash()->{"block"}))})} );2320 $self->add_constructor("routine_declarator\:method_def",sub {my($m)=@_;2315 IRx1::SubDecl->newp($m, $scope, GLOBAL::undef(), $plurality, $ident, $sig, irbuild_ir($m->hash()->{"trait"}), irbuild_ir($m->hash()->{"block"}))})}; 2316 my $construct_routine_declarator_58method_def = sub {my($m)=@_; 2321 2317 (do{my $plurality = $blackboard::plurality; 2322 2318 { package IRx1_Build; use vars '$plurality'};local $blackboard::plurality; … … 2325 2321 (do{($multisig = [IRx1::Signature->newp($m, [], GLOBAL::undef())])}) 2326 2322 }; 2327 IRx1::MethodDecl->newp($m, GLOBAL::undef(), GLOBAL::undef(), $plurality, irbuild_ir($m->hash()->{"ident"}), $multisig->[0], irbuild_ir($m->hash()->{"trait"}), irbuild_ir($m->hash()->{"block"}))})} );2328 $self->add_constructor("signature",sub {my($m)=@_;2329 (do{IRx1::Signature->newp($m, irbuild_ir($m->hash()->{"parsep"}), GLOBAL::undef())})} );2330 $self->add_constructor("parameter",sub {my($m)=@_;2331 (do{IRx1::Parameter->newp($m, irbuild_ir($m->hash()->{"type_constraint"}), irbuild_ir($m->hash()->{"quantchar"}), irbuild_ir($m->hash()->{"param_var"}))})} );2332 $self->add_constructor("param_var",sub {my($m)=@_;2333 (do{IRx1::ParamVar->newp($m, irbuild_ir($m->hash()->{"sigil"}), irbuild_ir($m->hash()->{"twigil"}), irbuild_ir($m->hash()->{"ident"}))})} );2334 $self->add_constructor("capture",sub {my($m)=@_;2323 IRx1::MethodDecl->newp($m, GLOBAL::undef(), GLOBAL::undef(), $plurality, irbuild_ir($m->hash()->{"ident"}), $multisig->[0], irbuild_ir($m->hash()->{"trait"}), irbuild_ir($m->hash()->{"block"}))})}; 2324 my $construct_signature = sub {my($m)=@_; 2325 (do{IRx1::Signature->newp($m, irbuild_ir($m->hash()->{"parsep"}), GLOBAL::undef())})}; 2326 my $construct_parameter = sub {my($m)=@_; 2327 (do{IRx1::Parameter->newp($m, irbuild_ir($m->hash()->{"type_constraint"}), irbuild_ir($m->hash()->{"quantchar"}), irbuild_ir($m->hash()->{"param_var"}))})}; 2328 my $construct_param_var = sub {my($m)=@_; 2329 (do{IRx1::ParamVar->newp($m, irbuild_ir($m->hash()->{"sigil"}), irbuild_ir($m->hash()->{"twigil"}), irbuild_ir($m->hash()->{"ident"}))})}; 2330 my $construct_capture = sub {my($m)=@_; 2335 2331 (do{if(GLOBAL::not($m->hash()->{"EXPR"})) { 2336 2332 (do{IRx1::Capture->newp1($m, [])}) … … 2355 2351 }else { 2356 2352 (do{GLOBAL::die("capture\ AST\ form\ not\ recognized")}) 2357 }})} );2358 $self->add_constructor("colonpair",sub {my($m)=@_;2353 }})}; 2354 my $construct_colonpair = sub {my($m)=@_; 2359 2355 (do{my $key; 2360 2356 for(($m->hash()->keys())->flatten){ … … 2368 2364 }; 2369 2365 my $one = irbuild_ir($m->hash()->{$key}); 2370 $one})} );2371 $self->add_constructor("colonpair__false",sub {my($m)=@_;2372 (do{IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), IRx1::NumInt->newp($m, 0))})} );2373 $self->add_constructor("colonpair__value",sub {my($m)=@_;2366 $one})}; 2367 my $construct_colonpair__false = sub {my($m)=@_; 2368 (do{IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), IRx1::NumInt->newp($m, 0))})}; 2369 my $construct_colonpair__value = sub {my($m)=@_; 2374 2370 (do{my $value; 2375 2371 if($m->hash()->{"postcircumfix"}) { … … 2378 2374 (do{($value = IRx1::NumInt->newp($m, 1))}) 2379 2375 }; 2380 IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), $value)})} );2381 $self->add_constructor("quotepair",sub {my($m)=@_;2376 IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), $value)})}; 2377 my $construct_quotepair = sub {my($m)=@_; 2382 2378 (do{my $key; 2383 2379 for(($m->hash()->keys())->flatten){ … … 2391 2387 }; 2392 2388 my $one = irbuild_ir($m->hash()->{$key}); 2393 $one})} );2394 $self->add_constructor("quotepair__false",sub {my($m)=@_;2395 (do{IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), IRx1::NumInt->newp($m, 0))})} );2396 $self->add_constructor("quotepair__value",sub {my($m)=@_;2389 $one})}; 2390 my $construct_quotepair__false = sub {my($m)=@_; 2391 (do{IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), IRx1::NumInt->newp($m, 0))})}; 2392 my $construct_quotepair__value = sub {my($m)=@_; 2397 2393 (do{my $value; 2398 2394 if($m->hash()->{"postcircumfix"}) { … … 2401 2397 (do{($value = IRx1::NumInt->newp($m, 1))}) 2402 2398 }; 2403 IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), $value)})} );2404 $self->add_constructor("quotepair__nth",sub {my($m)=@_;2405 (do{IRx1::Pair->newp($m, "nth", irbuild_ir($m->hash()->{"n"}))})} );2406 $self->add_constructor("package_declarator\:role",sub {my($m)=@_;2399 IRx1::Pair->newp($m, irbuild_ir($m->hash()->{"ident"}), $value)})}; 2400 my $construct_quotepair__nth = sub {my($m)=@_; 2401 (do{IRx1::Pair->newp($m, "nth", irbuild_ir($m->hash()->{"n"}))})}; 2402 my $construct_package_declarator_58role = sub {my($m)=@_; 2407 2403 (do{{ package IRx1_Build; use vars '$package_declarator'};local $blackboard::package_declarator = "role"; 2408 irbuild_ir($m->hash()->{"package_def"})})} );2409 $self->add_constructor("package_declarator\:class",sub {my($m)=@_;2404 irbuild_ir($m->hash()->{"package_def"})})}; 2405 my $construct_package_declarator_58class = sub {my($m)=@_; 2410 2406 (do{{ package IRx1_Build; use vars '$package_declarator'};local $blackboard::package_declarator = "class"; 2411 irbuild_ir($m->hash()->{"package_def"})})} );2412 $self->add_constructor("package_declarator\:module",sub {my($m)=@_;2407 irbuild_ir($m->hash()->{"package_def"})})}; 2408 my $construct_package_declarator_58module = sub {my($m)=@_; 2413 2409 (do{{ package IRx1_Build; use vars '$package_declarator'};local $blackboard::package_declarator = "module"; 2414 irbuild_ir($m->hash()->{"package_def"})})} );2415 $self->add_constructor("package_declarator\:package",sub {my($m)=@_;2410 irbuild_ir($m->hash()->{"package_def"})})}; 2411 my $construct_package_declarator_58package = sub {my($m)=@_; 2416 2412 (do{{ package IRx1_Build; use vars '$package_declarator'};local $blackboard::package_declarator = "package"; 2417 irbuild_ir($m->hash()->{"package_def"})})} );2418 $self->add_constructor("package_declarator\:grammar",sub {my($m)=@_;2413 irbuild_ir($m->hash()->{"package_def"})})}; 2414 my $construct_package_declarator_58grammar = sub {my($m)=@_; 2419 2415 (do{{ package IRx1_Build; use vars '$package_declarator'};local $blackboard::package_declarator = "grammar"; 2420 irbuild_ir($m->hash()->{"package_def"})})} );2421 $self->add_constructor("package_def",sub {my($m)=@_;2422 (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"}))})} );2423 $self->add_constructor("fulltypename",sub {my($m)=@_;2424 (do{irbuild_ir($m->hash()->{"typename"})->join("\:\:")})} );2425 $self->add_constructor("typename",sub {my($m)=@_;2426 (do{($m->match_string())})} );2427 $self->add_constructor("trait_verb\:is",sub {my($m)=@_;2428 (do{IRx1::Trait->newp($m, "is", irbuild_ir($m->hash()->{"ident"}))})} );2429 $self->add_constructor("trait_verb\:does",sub {my($m)=@_;2430 (do{IRx1::Trait->newp($m, "does", irbuild_ir($m->hash()->{"role_name"}))})} );2431 $self->add_constructor("circumfix\:pblock",sub {my($m)=@_;2416 irbuild_ir($m->hash()->{"package_def"})})}; 2417 my $construct_package_def = sub {my($m)=@_; 2418 (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"}))})}; 2419 my $construct_fulltypename = sub {my($m)=@_; 2420 (do{irbuild_ir($m->hash()->{"typename"})->join("\:\:")})}; 2421 my $construct_typename = sub {my($m)=@_; 2422 (do{($m->match_string())})}; 2423 my $construct_trait_verb_58is = sub {my($m)=@_; 2424 (do{IRx1::Trait->newp($m, "is", irbuild_ir($m->hash()->{"ident"}))})}; 2425 my $construct_trait_verb_58does = sub {my($m)=@_; 2426 (do{IRx1::Trait->newp($m, "does", irbuild_ir($m->hash()->{"role_name"}))})}; 2427 my $construct_circumfix_58pblock = sub {my($m)=@_; 2432 2428 (do{if((($m->hash()->{"block"}->hash()->{"statementlist"}->elems() == 0) or $m->hash()->{"block"}->hash()->{"statementlist"}->[0]->match_string()->re_matchp("\^\:"))) { 2433 2429 (do{IRx1::Hash->newp($m, irbuild_ir($m->hash()->{"block"}->hash()->{"statementlist"}))}) … … 2440 2436 }else { 2441 2437 (do{GLOBAL::die("AST\ handler\ circumfix\:pblock\ partially\ unimplemented")}) 2442 }})} );2443 $self->add_constructor("regex_declarator\:regex_def",sub {my($m)=@_;2444 (do{IRx1::RegexDef->newp($m, irbuild_ir($m->hash()->{"ident"}), irbuild_ir($m->hash()->{"regex_block"}))})} );2445 $self->add_constructor("regex_block",sub {my($m)=@_;2446 (do{irbuild_ir($m->hash()->{"regex"})})} );2447 $self->add_constructor("regex",sub {my($m)=@_;2448 (do{IRx1::Regex->newp($m, irbuild_ir($m->hash()->{"pattern"}))})} );2449 $self->add_constructor("regex_first",sub {my($m)=@_;2450 (do{IRx1::RxFirst->newp($m, irbuild_ir($m->hash()->{"patterns"}))})} );2451 $self->add_constructor("regex_every",sub {my($m)=@_;2452 (do{IRx1::RxEvery->newp($m, irbuild_ir($m->hash()->{"patterns"}))})} );2453 $self->add_constructor("regex_submatch",sub {my($m)=@_;2454 (do{IRx1::RxSubmatch->newp($m, irbuild_ir($m->hash()->{"patterns"}))})} );2455 $self->add_constructor("regex_any",sub {my($m)=@_;2456 (do{IRx1::RxAny->newp($m, irbuild_ir($m->hash()->{"patterns"}))})} );2457 $self->add_constructor("regex_all",sub {my($m)=@_;2458 (do{IRx1::RxAll->newp($m, irbuild_ir($m->hash()->{"patterns"}))})} );2459 $self->add_constructor("regex_sequence",sub {my($m)=@_;2460 (do{IRx1::RxSequence->newp($m, irbuild_ir($m->hash()->{"patterns"}))})} );2461 $self->add_constructor("regex_quantified_atom",sub {my($m)=@_;2462 (do{IRx1::RxQuantifiedAtom->newp($m, irbuild_ir($m->hash()->{"regex_atom"}), irbuild_ir($m->hash()->{"regex_quantifier"}))})} );2463 $self->add_constructor("regex_quantifier",sub {my($m)=@_;2464 (do{($m->match_string())})} );2465 $self->add_constructor("regex_atom",sub {my($m)=@_;2438 }})}; 2439 my $construct_regex_declarator_58regex_def = sub {my($m)=@_; 2440 (do{IRx1::RegexDef->newp($m, irbuild_ir($m->hash()->{"ident"}), irbuild_ir($m->hash()->{"regex_block"}))})}; 2441 my $construct_regex_block = sub {my($m)=@_; 2442 (do{irbuild_ir($m->hash()->{"regex"})})}; 2443 my $construct_regex = sub {my($m)=@_; 2444 (do{IRx1::Regex->newp($m, irbuild_ir($m->hash()->{"pattern"}))})}; 2445 my $construct_regex_first = sub {my($m)=@_; 2446 (do{IRx1::RxFirst->newp($m, irbuild_ir($m->hash()->{"patterns"}))})}; 2447 my $construct_regex_every = sub {my($m)=@_; 2448 (do{IRx1::RxEvery->newp($m, irbuild_ir($m->hash()->{"patterns"}))})}; 2449 my $construct_regex_submatch = sub {my($m)=@_; 2450 (do{IRx1::RxSubmatch->newp($m, irbuild_ir($m->hash()->{"patterns"}))})}; 2451 my $construct_regex_any = sub {my($m)=@_; 2452 (do{IRx1::RxAny->newp($m, irbuild_ir($m->hash()->{"patterns"}))})}; 2453 my $construct_regex_all = sub {my($m)=@_; 2454 (do{IRx1::RxAll->newp($m, irbuild_ir($m->hash()->{"patterns"}))})}; 2455 my $construct_regex_sequence = sub {my($m)=@_; 2456 (do{IRx1::RxSequence->newp($m, irbuild_ir($m->hash()->{"patterns"}))})}; 2457 my $construct_regex_quantified_atom = sub {my($m)=@_; 2458 (do{IRx1::RxQuantifiedAtom->newp($m, irbuild_ir($m->hash()->{"regex_atom"}), irbuild_ir($m->hash()->{"regex_quantifier"}))})}; 2459 my $construct_regex_quantifier = sub {my($m)=@_; 2460 (do{($m->match_string())})}; 2461 my $construct_regex_atom = sub {my($m)=@_; 2466 2462 (do{my $key; 2467 2463 for(($m->hash()->keys())->flatten){
