1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
-
+
-
+
|
#!/mfs/pkgs/chicken/4.8.0.5/bin/csi -nbq
;; Coming soon (right?) Usage: plot-code file1.scm,file2.scm "fun1,fun2,x*" *.scm > plot.dot
;; Usage: plot-code file1.scm,file2.scm *.scm > plot.dot
;; dot -Tpdf plot.dot > plot.pdf
;; first param is comma separated list of files to include in the map, use - to do all
;; second param is list of regexs for functions to include in the map
;; third param is list of files to scan
(use regex srfi-69 srfi-13)
(use regex srfi-69 srfi-13 srfi-1 data-structures posix)
;; 1 2 remainder
;; plot-code file1.scm,file2.scm... fn-regex file1.scm file2.scm ...
(define targs #f)
(define files (cdr (cddddr (argv))))
(define targs #f)
(define args (argv))
(if (< (length args) 2) ;; no args provided
(begin
(print "Usage: plot-code file1.scm,file2.scm... 'your.*regex' file3.scm file4.scm file5.scm ...")
(exit)))
(define files (cdddr args))
(let ((targdat (cadddr (argv))))
(let ((targdat (cadr args)))
(if (equal? targdat "-")
(set! targs files)
(set! targs (string-split targdat ","))))
(define function-patt (car (cdr (cdddr (argv)))))
(define function-patt (caddr args))
(define function-rx (regexp function-patt))
(define filedat-defns (make-hash-table))
(define filedat-usages (make-hash-table))
(define defn-rx (regexp "^\\s*\\(define\\s+\\(([^\\s\\)]+).*"))
(define all-regexs (make-hash-table))
|