123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- digraph {
- node[shape="point"]
- mid_var_1[width="0"]
- mid_var_2[width="0"]
- mid_var_3[width="0"]
- mid_var_4[width="0"]
- HELP_var_1 [label="integer_subtraction",shape="rectangle"]
- HELP_var_2 [label="integer_addition",shape="rectangle"]
- HELP_var_3 [label="integer_gt",shape="rectangle"]
- HELP_var_4 [label="fib",shape="rectangle"]
- var_1 -> HELP_var_1 [style="dotted"]
- var_2 -> HELP_var_2 [style="dotted"]
- var_3 -> HELP_var_3 [style="dotted"]
- var_4 -> HELP_var_4 [style="dotted"]
- root -> globals [label="__globals"]
- globals -> mid_var_1 [arrowhead="none"]
- mid_var_1 -> var_1 [constraint="true"]
- mid_var_1 -> var_value_1
- var_value_1 -> signature_1 [label="value"]
- signature_1 -> body_1 [label="body"]
- signature_1 -> params_1 [label="params"]
- params_1 -> params_1_a [label="a"]
- params_1 -> params_1_b [label="b"]
- globals -> mid_var_2 [arrowhead="none"]
- mid_var_2 -> var_2 [constraint="true"]
- mid_var_2 -> var_value_2
- var_value_2 -> signature_2 [label="value"]
- signature_2 -> body_2 [label="body"]
- signature_2 -> params_2 [label="params"]
- params_2 -> params_2_a [label="a"]
- params_2 -> params_2_b [label="b"]
- globals -> mid_var_3 [arrowhead="none"]
- mid_var_3 -> var_3 [constraint="true"]
- mid_var_3 -> var_value_3
- var_value_3 -> signature_3 [label="value"]
- signature_3 -> body_3 [label="body"]
- signature_3 -> params_3 [label="params"]
- params_3 -> params_3_a [label="a"]
- params_3 -> params_3_b [label="b"]
- globals -> mid_var_4 [arrowhead="none"]
- mid_var_4 -> var_4 [constraint="true"]
- mid_var_4 -> var_value_4
- var_value_4 -> signature_4 [label="value"]
- signature_4 -> if_1 [label="body"]
- signature_4 -> params_4 [label="params"]
- params_4 -> params_4_a [label="n"]
- // The actual function begins here
- value_1 [shape="oval",label="1"]
- value_2 [shape="oval",label="1"]
- value_3 [shape="oval",label="1"]
- value_5 [shape="oval",label="2"]
- value_a [shape="oval",label="a"]
- value_b [shape="oval",label="b"]
- value_a2 [shape="oval",label="a"]
- value_b2 [shape="oval",label="b"]
- value_a3 [shape="oval",label="a"]
- value_b3 [shape="oval",label="b"]
- value_a4 [shape="oval",label="a"]
- value_b4 [shape="oval",label="b"]
- value_n [shape="oval",label="n"]
- value_n2 [shape="oval",label="n"]
- value_n3 [shape="oval",label="n"]
- access_resolve_1 [shape="oval",label="ACCESS"]
- access_resolve_3 [shape="oval",label="ACCESS"]
- access_resolve_4 [shape="oval",label="ACCESS"]
- access_resolve_5 [shape="oval",label="ACCESS"]
- access_resolve_7 [shape="oval",label="ACCESS"]
- access_resolve_8 [shape="oval",label="ACCESS"]
- access_resolve_9 [shape="oval",label="ACCESS"]
- if_1 [shape="oval",label="IF"]
- call_1 [shape="oval",label="CALL"]
- call_2 [shape="oval",label="CALL"]
- call_3 [shape="oval",label="CALL"]
- call_4 [shape="oval",label="CALL"]
- call_5 [shape="oval",label="CALL"]
- call_6 [shape="oval",label="CALL"]
- resolve_1 [shape="oval",label="RESOLVE"]
- resolve_2 [shape="oval",label="RESOLVE"]
- resolve_3 [shape="oval",label="RESOLVE"]
- resolve_4 [shape="oval",label="RESOLVE"]
- resolve_5 [shape="oval",label="RESOLVE"]
- resolve_6 [shape="oval",label="RESOLVE"]
- resolve_7 [shape="oval",label="RESOLVE"]
- resolve_8 [shape="oval",label="RESOLVE"]
- resolve_9 [shape="oval",label="RESOLVE"]
- resolve_11 [shape="oval",label="RESOLVE"]
- access_1 [shape="oval",label="ACCESS"]
- access_3 [shape="oval",label="ACCESS"]
- access_4 [shape="oval",label="ACCESS"]
- return_1 [shape="oval",label="RETURN"]
- return_2 [shape="oval",label="RETURN"]
- const_1 [shape="oval",label="CONST"]
- const_2 [shape="oval",label="CONST"]
- const_3 [shape="oval",label="CONST"]
- const_4 [shape="oval",label="CONST"]
- const_5 [shape="oval",label="CONST"]
- if_1 -> call_1 [label="cond"]
- if_1 -> return_2 [label="then"]
- if_1 -> return_1 [label="else"]
- // Condition
- call_1 -> access_resolve_1 [label="func"]
- access_resolve_1 -> resolve_1 [label="var"]
- resolve_1 -> var_3 [label="var",constraint="true"]
- call_1 -> param_1a [label="params"]
- param_1a -> value_a [label="name"]
- param_1a -> access_1 [label="value"]
- access_1 -> resolve_2 [label="var"]
- resolve_2 -> params_4_a [label="var",constraint="true"]
- param_1b -> value_b [label="name"]
- param_1b -> const_1 [label="value"]
- const_1 -> value_1 [label="node"]
- call_1 -> param_1b [label="last_param"]
- param_1a -> param_1b [label="next_param"]
- // Else
- return_1 -> const_2 [label="value"]
- const_2 -> value_2 [label="node"]
- // Then
- return_2 -> call_2 [label="value"]
- call_2 -> access_resolve_3 [label="func"]
- access_resolve_3 -> resolve_3 [label="var"]
- resolve_3 -> var_2 [label="var",constraint="true"]
- call_2 -> param_2a [label="params"]
- call_2 -> param_2b [label="last_param"]
- param_2a -> value_a2 [label="name"]
- param_2a -> call_5 [label="value"]
- param_2b -> value_b2 [label="name"]
- param_2b -> call_3 [label="value"]
- param_2a -> param_2b [label="next_param"]
- // call to self with n - 1
- call_3 -> access_resolve_4 [label="func"]
- access_resolve_4 -> resolve_4 [label="var"]
- resolve_4 -> var_4 [label="var",constraint="true"]
- call_3 -> param_3a [label="params"]
- call_3 -> param_3a [label="last_param"]
- param_3a -> value_n [label="name"]
- param_3a -> call_4 [label="value"]
- // Subtraction operation
- call_4 -> access_resolve_5 [label="func"]
- access_resolve_5 -> resolve_5 [label="var"]
- resolve_5 -> var_1 [label="var",constraint="true"]
- call_4 -> param_4a [label="params"]
- param_4a -> value_a3 [label="name"]
- param_4a -> access_3 [label="value"]
- access_3 -> resolve_6 [label="var"]
- resolve_6 -> params_4_a [label="var"]
- param_4b -> value_b3 [label="name"]
- param_4b -> const_3 [label="value"]
- const_3 -> value_3 [label="node"]
- call_4 -> param_4b [label="last_param"]
- param_4a -> param_4b [label="next_param"]
- // call to self with n - 2
- call_5 -> access_resolve_8 [label="func"]
- access_resolve_8 -> resolve_8 [label="var"]
- resolve_8 -> var_4 [label="var",constraint="true"]
- call_5 -> param_5a [label="params"]
- call_5 -> param_5a [label="last_param"]
- param_5a -> value_n2 [label="name"]
- param_5a -> call_6 [label="value"]
- // Subtraction operation
- call_6 -> access_resolve_9 [label="func"]
- access_resolve_9 -> resolve_9 [label="var"]
- resolve_9 -> var_1 [label="var",constraint="true"]
- call_6 -> param_6a [label="params"]
- param_6a -> value_a4 [label="name"]
- param_6a -> access_4 [label="value"]
- access_4 -> resolve_11 [label="var"]
- resolve_11 -> params_4_a [label="var"]
- param_6b -> value_b4 [label="name"]
- param_6b -> const_5 [label="value"]
- const_5 -> value_5 [label="node"]
- call_6 -> param_6b [label="last_param"]
- param_6a -> param_6b [label="next_param"]
- // Global initial IP
- const_4 [shape="oval",label="CONST"]
- value_4 [shape="oval",label="3"]
- resolve_7 [shape="oval",label="RESOLVE"]
- invoke_fib [shape="oval",label="CALL"]
- globals -> invoke_fib [label="__IP"]
- invoke_fib -> access_resolve_7 [label="func"]
- access_resolve_7 -> resolve_7 [label="var"]
- resolve_7 -> var_4 [label="var",constraint="true"]
- invoke_fib -> invoke_params [label="params"]
- invoke_fib -> invoke_params [label="last_param"]
- invoke_params -> const_4 [label="value"]
- invoke_params -> value_n2 [label="name"]
- const_4 -> value_4 [label="node"]
- }
|