(z_source)
| 77 | }; |
| 78 | |
| 79 | const clone = (z_source) => { |
| 80 | if(Array.isArray(z_source)) { |
| 81 | return z_source.slice().map(z_item => clone(z_item)); |
| 82 | } |
| 83 | else if('object' === typeof z_source) { |
| 84 | let h_clone = {}; |
| 85 | for(let [s_key, z_value] of Object.entries(z_source)) { |
| 86 | h_clone[s_key] = clone(z_value); |
| 87 | } |
| 88 | return h_clone; |
| 89 | } |
| 90 | |
| 91 | return z_source; |
| 92 | }; |
| 93 | |
| 94 | const stack_top = (g_rule, f_set=null) => { |
| 95 | let s_action; |