{number_of_tracks=(1);ticks_per_beat=(4);beats_per_second=(80);heap=[];midi_file=[];instrument_list=[["piano",(0),(0)],["xylophone",(13),(0)],["aguitar",(24),(0)],["eguitar",(29),(0)],["harp",(46),(0)],["drums",(0),(0)]];do_math=(function (math_tree,what,octave_size){var ret=[];if((math_tree["length"] == (1))){ret=math_tree}else{if((math_tree[(0)] == "?")){ret=get_var_from_heap(math_tree[(1)])[(1)][(1)][what]}else{if(((((math_tree[(0)] == "+") || (math_tree[(0)] == "-")) || (math_tree[(0)] == "*")) || (math_tree[(0)] == "/"))){var i=undefined;var num=undefined;var num_list=undefined;var left=do_math(math_tree[(1)],what,octave_size);var right=do_math(math_tree[(2)],what,octave_size);if((right["length"] == (1))){num_list=left;num=right[(0)]}else{if((left["length"] == (1))){num=left[(0)];num_list=right}else{}};for(i=(0);(i < num_list["length"]);i++){if((math_tree[(0)] == "+")){if((num_list == right)){if((num == (0))){ret=ret.concat((0))}else{if(((num < (0)) && ((num + num_list[i]) >= (0)))){ret=ret.concat(((num + num_list[i]) + (1)))}else{ret=ret.concat((num + num_list[i]))}}}else{ret=ret.concat((num_list[i] + num))}}else{if((math_tree[(0)] == "*")){ret=ret.concat((num_list[i] * num))}else{if((math_tree[(0)] == "-")){var result=undefined;if((num_list == right)){if((num == (0))){ret=ret.concat((0))}else{if(((num > (0)) && ((num - num_list[i]) <= (0)))){ret=ret.concat(((num - num_list[i]) - (1)))}else{ret=ret.concat((num - num_list[i]))}}}else{if((num_list[i] == (0))){ret=ret.concat((0))}else{if(((num_list[i] > (0)) && ((num_list[i] - num) <= (0)))){ret=ret.concat(((num_list[i] - num) - (1)))}else{ret=ret.concat((num_list[i] - num))}}}}else{if((math_tree[(0)] == "/")){if((num_list == right)){ret=ret.concat(((num - (num % num_list[i])) / num_list[i]))}else{ret=ret.concat(((num_list[i] - (num_list[i] % num)) / num))}}else{undefined}}}}}}else{if(((math_tree[(0)] == "^") || (math_tree[(0)] == "v"))){var i=undefined;for(i=(1);(i < math_tree["length"]);i++){var temp=do_math(math_tree[i],what,octave_size);var j=undefined;for(j=(0);(j < temp["length"]);j++){if((math_tree[(0)] == "^")){if((temp[j] == (0))){ret=ret.concat((0))}else{if(((temp[j] < (0)) && ((temp[j] + octave_size) >= (0)))){ret=ret.concat(((temp[j] + octave_size) + (1)))}else{ret=ret.concat((temp[j] + octave_size))}}}else{if((temp[j] == (0))){ret=ret.concat((0))}else{if(((temp[j] > (0)) && ((temp[j] - octave_size) <= (0)))){ret=ret.concat(((temp[j] - octave_size) - (1)))}else{ret=ret.concat((temp[j] - octave_size))}}}}}}else{undefined}}}};return ret});expand_variable_part=(function (melody,what,octave_size){var ret=[];var i=undefined;var melody_part=melody[(1)][what];for(i=(0);(i < melody_part["length"]);i++){if((melody_part[i]["length"] == (1))){ret=ret.concat(melody_part[i][(0)])}else{ret=ret.concat(do_math(melody_part[i],what,octave_size))}};return ret});expand_variables_whole=(function (melody){var ret=[];if((melody[(0)] == "!")){var scale=expand_variable_part(melody,(2));var octave_size=(scale["length"] - (1));ret=["!",[expand_variable_part(melody,(0),octave_size),expand_variable_part(melody,(1),octave_size),expand_variable_part(melody,(2),octave_size),expand_variable_part(melody,(3),octave_size)]]}else{if((melody[(0)] == "?")){ret=get_var_from_heap(melody[(1)])[(1)]}else{ret=[melody[(0)],expand_variables_whole(melody[(1)]),expand_variables_whole(melody[(2)])]}};return ret});get_var_from_heap=(function (variable_name){var get_var_from_heap_ret=[];for(i=(0);(i < heap["length"]);i++){if((heap[i][(0)] == variable_name)){get_var_from_heap_ret=heap[i];break}else{undefined}};return get_var_from_heap_ret});add_var_to_heap=(function (arg){var result=[];result=result.concat(arg[(0)]);result=result.concat([expand_variables_whole(arg[(1)])]);heap=heap.concat([result])});num2ff=(function (num){first_loop=true;num2ff_ret=[(0)];while((num > (0))){remainder=(num % (256));num=(num - remainder);num=(num / (256));if(first_loop){num2ff_ret=[remainder];first_loop=false}else{num2ff_ret=[remainder].concat(num2ff_ret)}};return num2ff_ret});num2vlen=(function (num){first_loop=true;num2vlen_ret=[(0)];while((num > (0))){remainder=(num % (128));num=(num - remainder);num=(num / (128));if(first_loop){num2vlen_ret=[remainder];first_loop=false}else{num2vlen_ret=[(remainder + (128))].concat(num2vlen_ret)}};return num2vlen_ret});track_header=(function (size_of_track){track_header_ret=[(77),(84),(114),(107)];ff_size_of_track=num2ff(size_of_track);while((ff_size_of_track["length"] < (4))){ff_size_of_track=[(0)].concat(ff_size_of_track)};track_header_ret=track_header_ret.concat(ff_size_of_track);return track_header_ret});bpm2ff=(function (bpm){return num2ff((((60000000) - ((60000000) % bpm)) / bpm))});file_header=(function (){file_header_ret=[(77),(84),(104),(100)];file_header_ret=file_header_ret.concat([(0),(0),(0),(6)]);file_header_ret=file_header_ret.concat([(0),(1)]);file_header_ret=file_header_ret.concat([(0),number_of_tracks]);fftpb=num2ff(ticks_per_beat);if((fftpb["length"] < (2))){fftpb=[(0)].concat(fftpb)}else{undefined};file_header_ret=file_header_ret.concat(fftpb);file_header_ret=file_header_ret.concat(track_header((17)));file_header_ret=file_header_ret.concat([(0),(255),(89),(2),(0),(0)]);file_header_ret=file_header_ret.concat([(0),(255),(81),(3)]);fftempo=bpm2ff(beats_per_second);while((fftempo["length"] < (3))){fftempo=[(0)].concat(fftempo)};file_header_ret=file_header_ret.concat(fftempo);file_header_ret=file_header_ret.concat(end_of_track());return file_header_ret});note_on=(function (vlength_time,ffnote,channel){return vlength_time.concat([((144) + channel),ffnote,(127)])});note_off=(function (vlength_time,ffnote,channel){return vlength_time.concat([((128) + channel),ffnote,(0)])});end_of_track=(function (){return [(0),(255),(47),(0)]});program_change=(function (channel,instrument){return [(0),((192) + channel),instrument]});note2ff=(function (note,scale,position){var ret=undefined;if((note == (0))){ret=(-(1))}else{if((note < (0))){var positive=((0) - note);var scale_width=(scale["length"] - (1));var scale_height=(scale[scale_width] - scale[(0)]);var remainder=(positive % scale_width);var octave_count=(((positive - remainder) / scale_width) + (1));if((remainder == (0))){ret=(((position - ((octave_count - (1)) * scale_height)) + scale[(0)]) - (1))}else{ret=(((position - (octave_count * scale_height)) + scale[(scale_width - remainder)]) - (1))}}else{var scale_width=(scale["length"] - (1));var scale_height=(scale[scale_width] - scale[(0)]);var remainder=((note - (1)) % scale_width);var octave_count=(((note - (1)) - remainder) / scale_width);ret=(((position + (octave_count * scale_height)) + scale[remainder]) - (1))}};return ret});ir2midi=(function (ir,channel){i_on=(0);i_off=(0);note_on_ir=ir[(0)];note_off_ir=ir[(1)];current_time=(0);ir2midi_ret=[];while(((i_on < note_on_ir["length"]) || (i_off < note_off_ir["length"]))){if((i_on == note_on_ir["length"])){delta=(note_off_ir[i_off][(0)] - current_time);ir2midi_ret=ir2midi_ret.concat(note_off(num2vlen(delta),note_off_ir[i_off][(1)],channel));i_off++;current_time+=delta;continue}else{undefined};if((i_off == note_off_ir["length"])){delta=(note_on_ir[i_on][(0)] - current_time);ir2midi_ret=ir2midi_ret.concat(note_on(num2vlen(delta),note_on_ir[i_on][(1)],channel));i_on++;current_time+=delta;continue}else{undefined};if((note_on_ir[i_on][(0)] < note_off_ir[i_off][(0)])){delta=(note_on_ir[i_on][(0)] - current_time);ir2midi_ret=ir2midi_ret.concat(note_on(num2vlen(delta),note_on_ir[i_on][(1)],channel));i_on++;current_time+=delta}else{delta=(note_off_ir[i_off][(0)] - current_time);ir2midi_ret=ir2midi_ret.concat(note_off(num2vlen(delta),note_off_ir[i_off][(1)],channel));i_off++;current_time+=delta}};return ir2midi_ret});write2file=(function (input){midi_file=midi_file.concat(input)});create_binary=(function (){var raw_data=undefined;eval("\n uuencode64 = function(bytes) {\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"\n var output = \"\"\n var b1, b2, b3\n var e1, e2, e3, e4\n var i = 0\n while (i < bytes.length) {\n b1 = bytes[i++]\n b2 = bytes[i++]\n b3 = bytes[i++]\n e1 = b1 >> 2\n e2 = ((b1 & 3) << 4) | (b2 >> 4)\n e3 = ((b2 & 15) << 2) | (b3 >> 6)\n e4 = b3 & 63\n if (isNaN(b2)) { e3 = e4 = 64 }\n else if (isNaN(b3)) { e4 = 64 }\n output += keyStr.charAt(e1) + keyStr.charAt(e2) + keyStr.charAt(e3) + keyStr.charAt(e4)\n }\n return output\n }\n\n raw_data = uuencode64(midi_file)\n ");midi=document.createElement("embed");midi.setAttribute("src",("data:audio/midi;base64," + raw_data));$("playArea").appendChild(midi)});melody2ir=(function (melody,end_of_melody){var note_on_ir=[];var note_off_ir=[];var ret_end_of_melody=(0);if((melody[(0)] == "!")){var i=undefined;var elapsed=(0);var tune=melody[(1)][(0)];var timing=melody[(1)][(1)];var scale=melody[(1)][(2)];var position=melody[(1)][(3)];for(i=(0);(i < tune["length"]);i++){var note_ff=note2ff(tune[i],scale,position[(0)]);if((note_ff != (-(1)))){note_on_ir=note_on_ir.concat([[elapsed,note_ff]])}else{undefined};elapsed+=timing[i];if((note_ff != (-(1)))){note_off_ir=note_off_ir.concat([[elapsed,note_ff]])}else{undefined}};ret_end_of_melody=elapsed}else{if((melody[(0)] == "&")){var left=melody2ir(melody[(1)]);var right=melody2ir(melody[(2)]);var i=(0);var j=(0);while(((i < left[(0)]["length"]) || (j < right[(0)]["length"]))){if((i == left[(0)]["length"])){note_on_ir=note_on_ir.concat([right[(0)][j]]);j++;continue}else{undefined};if((j == right[(0)]["length"])){note_on_ir=note_on_ir.concat([left[(0)][i]]);i++;continue}else{undefined};if((left[(0)][i][(0)] < right[(0)][j][(0)])){note_on_ir=note_on_ir.concat([left[(0)][i]]);i++}else{note_on_ir=note_on_ir.concat([right[(0)][j]]);j++}};i=(0);j=(0);while(((i < left[(1)]["length"]) || (j < right[(1)]["length"]))){if((i == left[(1)]["length"])){note_off_ir=note_off_ir.concat([right[(1)][j]]);j++;continue}else{undefined};if((j == right[(1)]["length"])){note_off_ir=note_off_ir.concat([left[(1)][i]]);i++;continue}else{undefined};if((left[(1)][i][(0)] < right[(1)][j][(0)])){note_off_ir=note_off_ir.concat([left[(1)][i]]);i++}else{note_off_ir=note_off_ir.concat([right[(1)][j]]);j++}};ret_end_of_melody=note_off_ir[(note_off_ir["length"] - (1))][(0)]}else{if((melody[(0)] == ".")){var left=melody2ir(melody[(1)]);var right=melody2ir(melody[(2)]);end_of_left=left[(2)];var i=(0);var j=(0);for(i=(0);(i < left[(0)]["length"]);i++){note_on_ir=note_on_ir.concat([left[(0)][i]]);note_off_ir=note_off_ir.concat([left[(1)][i]])};for(i=(0);(i < right[(0)]["length"]);i++){note_on_ir=note_on_ir.concat([[(end_of_left + right[(0)][i][(0)]),right[(0)][i][(1)]]]);note_off_ir=note_off_ir.concat([[(end_of_left + right[(1)][i][(0)]),right[(1)][i][(1)]]])};ret_end_of_melody=note_off_ir[(note_off_ir["length"] - (1))][(0)]}else{undefined}}};return [note_on_ir,note_off_ir,ret_end_of_melody]});reset_program_state=(function (){var i=undefined;for(i=(0);(i < instrument_list["length"]);i++){instrument_list[i][(2)]=(0)};midi_file=[];heap=[];number_of_tracks=(1)});get_instrument=(function (name){var ret=[];var i=undefined;for(i=(0);(i < instrument_list["length"]);i++){if((instrument_list[i][(0)] == name)){ret=instrument_list[i];break}else{undefined}};return ret});set_instrument=(function (name){var i=undefined;for(i=(0);(i < instrument_list["length"]);i++){if((instrument_list[i][(0)] == name)){instrument_list[i][(2)]=(1);break}else{undefined}}});A=objectThatDelegatesTo (Parser, {"d":function(){var $elf=this;return $elf._apply("digit")},"n":function(){var $elf=this,x,y;return $elf._or((function(){return (function(){x=$elf._apply("d");y=$elf._apply("n");return (x + y)})()}),(function(){return $elf._apply("d")}))},"a":function(){var $elf=this;return $elf._apply("letter")},"w":function(){var $elf=this,x,y;return $elf._or((function(){return (function(){x=$elf._apply("a");y=$elf._apply("w");return (x + y)})()}),(function(){return $elf._apply("a")}))},"space":function(){var $elf=this;return (function(){$elf._not(function(){return $elf._applyWithArgs("exactly","\n")});return Parser._superApplyWithArgs($elf,"space")})()},"variable":function(){var $elf=this,x;return (function(){$elf._apply("spaces");x=$elf._apply("w");$elf._pred((x != "v"));return ["?",x]})()},"literal":function(){var $elf=this,x;return (function(){$elf._apply("spaces");x=$elf._apply("n");return [parseInt(x)]})()},"nlist":function(){var $elf=this;return $elf._applyWithArgs("listOf","literal","")},"element":function(){var $elf=this;return $elf._or((function(){return $elf._apply("literal")}),(function(){return $elf._apply("variable")}))},"tune_op":function(){var $elf=this,x,x,x,x;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","(");x=$elf._apply("tune_op_add");$elf._applyWithArgs("token",")");return x})()}),(function(){return (function(){$elf._applyWithArgs("token","^");x=$elf._apply("tune_expr_list");return ["^"].concat(x)})()}),(function(){return (function(){$elf._applyWithArgs("token","v");x=$elf._apply("tune_expr_list");return ["v"].concat(x)})()}),(function(){return (function(){x=$elf._apply("element");return x})()}))},"tune_op_mul":function(){var $elf=this,x,y,x,y;return $elf._or((function(){return (function(){x=$elf._apply("tune_op_mul");$elf._applyWithArgs("token","*");y=$elf._apply("tune_op");return ["*"].concat([x]).concat([y])})()}),(function(){return (function(){x=$elf._apply("tune_op_mul");$elf._applyWithArgs("token","/");y=$elf._apply("tune_op");return ["/"].concat([x]).concat([y])})()}),(function(){return $elf._apply("tune_op")}))},"tune_op_add":function(){var $elf=this,x,y,x,y;return $elf._or((function(){return (function(){x=$elf._apply("tune_op_add");$elf._applyWithArgs("token","+");y=$elf._apply("tune_op_mul");return ["+"].concat([x]).concat([y])})()}),(function(){return (function(){x=$elf._apply("tune_op_add");$elf._applyWithArgs("token","-");y=$elf._apply("tune_op_mul");return ["-"].concat([x]).concat([y])})()}),(function(){return $elf._apply("tune_op_mul")}))},"tune_expr":function(){var $elf=this;return $elf._apply("tune_op_add")},"tune_expr_list":function(){var $elf=this;return $elf._applyWithArgs("listOf","tune_expr","")},"op":function(){var $elf=this,x,x;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","(");x=$elf._apply("op_add");$elf._applyWithArgs("token",")");return x})()}),(function(){return (function(){x=$elf._apply("element");return x})()}))},"op_mul":function(){var $elf=this,x,y,x,y;return $elf._or((function(){return (function(){x=$elf._apply("op_mul");$elf._applyWithArgs("token","*");y=$elf._apply("op");return ["*"].concat([x]).concat([y])})()}),(function(){return (function(){x=$elf._apply("op_mul");$elf._applyWithArgs("token","/");y=$elf._apply("op");return ["/"].concat([x]).concat([y])})()}),(function(){return $elf._apply("op")}))},"op_add":function(){var $elf=this,x,y,x,y;return $elf._or((function(){return (function(){x=$elf._apply("op_add");$elf._applyWithArgs("token","+");y=$elf._apply("op_mul");return ["+"].concat([x]).concat([y])})()}),(function(){return (function(){x=$elf._apply("op_add");$elf._applyWithArgs("token","-");y=$elf._apply("op_mul");return ["-"].concat([x]).concat([y])})()}),(function(){return $elf._apply("op_mul")}))},"expr":function(){var $elf=this;return $elf._apply("op_add")},"expr_list":function(){var $elf=this;return $elf._applyWithArgs("listOf","expr","")},"tune":function(){var $elf=this,x;return (function(){$elf._applyWithArgs("token","\"");x=$elf._apply("tune_expr_list");$elf._applyWithArgs("token","\"");return x})()},"timing":function(){var $elf=this,x;return (function(){$elf._applyWithArgs("token",":");x=$elf._apply("expr_list");$elf._applyWithArgs("token",":");return x})()},"scale":function(){var $elf=this,x;return (function(){$elf._applyWithArgs("token","$");x=$elf._apply("expr_list");$elf._applyWithArgs("token","$");return x})()},"position":function(){var $elf=this,x;return (function(){$elf._applyWithArgs("token","@");x=$elf._apply("expr_list");$elf._pred((x["length"] == (1)));return x})()},"melody_literal":function(){var $elf=this,x1,x2,x3,x4;return (function(){x1=$elf._apply("tune");$elf._applyWithArgs("token","\n");x2=$elf._apply("timing");$elf._applyWithArgs("token","\n");x3=$elf._apply("scale");$elf._applyWithArgs("token","\n");x4=$elf._apply("position");return ["!",[x1,x2,x3,x4]]})()},"melody_variable":function(){var $elf=this;return $elf._apply("variable")},"tune_optional":function(){var $elf=this;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","\n");return $elf._apply("tune")})()}),(function(){return (function(){$elf._apply("empty");return [[]]})()}))},"timing_optional":function(){var $elf=this;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","\n");return $elf._apply("timing")})()}),(function(){return (function(){$elf._apply("empty");return [[]]})()}))},"scale_optional":function(){var $elf=this;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","\n");return $elf._apply("scale")})()}),(function(){return (function(){$elf._apply("empty");return [[]]})()}))},"position_optional":function(){var $elf=this;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","\n");return $elf._apply("position")})()}),(function(){return (function(){$elf._apply("empty");return [[]]})()}))},"melody_extend":function(){var $elf=this,x1,x2,x3,x4,x5;return (function(){x1=$elf._apply("variable");$elf._applyWithArgs("token","except");x2=$elf._apply("tune_optional");x3=$elf._apply("timing_optional");x4=$elf._apply("scale_optional");x5=$elf._apply("position_optional");return (function (){var tune=undefined;var timing=undefined;var scale=undefined;var position=undefined;if((x2[(0)]["length"] > (0))){tune=x2}else{tune=[x1]};if((x3[(0)]["length"] > (0))){timing=x3}else{timing=[x1]};if((x4[(0)]["length"] > (0))){scale=x4}else{scale=[x1]};if((x5[(0)]["length"] > (0))){position=x5}else{position=[x1]};return ["!",[tune,timing,scale,position]]})()})()},"melody_element":function(){var $elf=this;return $elf._or((function(){return $elf._apply("melody_literal")}),(function(){return $elf._apply("melody_extend")}),(function(){return $elf._apply("melody_variable")}))},"optional_newlines":function(){var $elf=this;return $elf._many(function(){return $elf._applyWithArgs("token","\n")})},"melody_op":function(){var $elf=this,x;return $elf._or((function(){return (function(){$elf._applyWithArgs("token","(");x=$elf._apply("melody_op_concat");$elf._applyWithArgs("token",")");return x})()}),(function(){return $elf._apply("melody_element")}))},"melody_op_and":function(){var $elf=this,x,y;return $elf._or((function(){return (function(){x=$elf._apply("melody_op_and");$elf._apply("optional_newlines");$elf._applyWithArgs("token","&");$elf._apply("optional_newlines");y=$elf._apply("melody_op");return ["&",x,y]})()}),(function(){return $elf._apply("melody_op")}))},"melody_op_concat":function(){var $elf=this,x,y;return $elf._or((function(){return (function(){x=$elf._apply("melody_op_concat");$elf._apply("optional_newlines");$elf._applyWithArgs("token",".");$elf._apply("optional_newlines");y=$elf._apply("melody_op_and");return [".",x,y]})()}),(function(){return $elf._apply("melody_op_and")}))},"melody_expr":function(){var $elf=this;return $elf._apply("melody_op_concat")},"definition":function(){var $elf=this,x,y,x,y;return $elf._or((function(){return (function(){x=$elf._apply("variable");$elf._applyWithArgs("token","=");$elf._apply("optional_newlines");y=$elf._apply("melody_expr");$elf._pred(((get_instrument(x[(1)])["length"] > (0)) && (get_instrument(x[(1)])[(2)] == (0))));return (function (){number_of_tracks++;set_instrument(x[(1)]);return add_var_to_heap([x[(1)]].concat([y]))})()})()}),(function(){return (function(){x=$elf._apply("variable");$elf._applyWithArgs("token","=");$elf._apply("optional_newlines");y=$elf._apply("melody_expr");$elf._pred((get_instrument(x[(1)])["length"] == (0)));return add_var_to_heap([x[(1)]].concat([y]))})()}))},"at_least_one_newline":function(){var $elf=this;return $elf._many1(function(){return $elf._applyWithArgs("token","\n")})},"definitions":function(){var $elf=this;return $elf._or((function(){return (function(){$elf._apply("definition");$elf._apply("at_least_one_newline");return $elf._apply("definitions")})()}),(function(){return $elf._apply("definition")}))},"program":function(){var $elf=this;return (function(){$elf._apply("optional_newlines");$elf._apply("definitions");$elf._apply("optional_newlines");return (function (){write2file(file_header());var i=undefined;var channel=(0);for(i=(0);(i < instrument_list["length"]);i++){if((instrument_list[i][(2)] == (1))){var heap_melody=get_var_from_heap(instrument_list[i][(0)]);ir=melody2ir(heap_melody[(1)],(0));var midi_events=[];var final_channel=channel;if((instrument_list[i][(0)] == "drums")){final_channel=(9)}else{undefined};midi_events=midi_events.concat(program_change(final_channel,instrument_list[i][(1)]));midi_events=midi_events.concat(ir2midi(ir,final_channel));midi_events=midi_events.concat(end_of_track());write2file(track_header(midi_events["length"]));write2file(midi_events);if((final_channel != (9))){channel++}else{undefined};if((channel == (9))){channel++}else{undefined}}else{undefined}};return create_binary()})()})()}});compile=(function (source_code){reset_program_state();A.matchAll(source_code,"program")})}