diff --git a/src/generate-call-graph.sh b/src/generate-call-graph.sh new file mode 100755 index 0000000000000000000000000000000000000000..8f134834fa7bc95f50ee5a38a8ba990df31376e8 --- /dev/null +++ b/src/generate-call-graph.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +grep -E '^[^C].*(CALL|SUBROUTINE)' bulletin*.for \ + | sed 's/ *! .*//;s/:.*\(CALL\|SUBROUTINE\) / \1 /;s/(.*//' \ + | awk ' + BEGIN { + e="flowchart LR" + } + { + if ($1 != f) { + print e; + sg=$1; gsub(".for", "", sg); + print " subgraph " sg; + print " direction LR"; + e=" end"; + } + } + $2 == "SUBROUTINE" { + f=$1; s=$3; + print " " s "(" s ")"; + } + $2 == "CALL" { + if ($1 != f) { + f=$1; s="main"; + print " " s "(" s ")"; + } + print " " s " --> " $3; + + } + END { + print e; + } + ' \ + | sed 's/\$/__/g' +