/collects/compiler/commands/decompile.rkt

http://github.com/gmarceau/PLT · Racket · 25 lines · 23 code · 2 blank · 0 comment · 2 complexity · cd6be2ca0a298588f7e19b187419e3e1 MD5 · raw file

  1. #lang scheme/base
  2. (require scheme/cmdline
  3. raco/command-name
  4. compiler/zo-parse
  5. compiler/decompile
  6. scheme/pretty)
  7. (define source-files
  8. (command-line
  9. #:program (short-program+command-name)
  10. #:args source-or-bytecode-file
  11. source-or-bytecode-file))
  12. (for ([zo-file source-files])
  13. (let ([zo-file (path->complete-path zo-file)])
  14. (let-values ([(base name dir?) (split-path zo-file)])
  15. (let ([alt-file (build-path base "compiled" (path-add-suffix name #".zo"))])
  16. (parameterize ([current-load-relative-directory base]
  17. [print-graph #t])
  18. (pretty-print
  19. (decompile
  20. (call-with-input-file*
  21. (if (file-exists? alt-file) alt-file zo-file)
  22. (lambda (in)
  23. (zo-parse in))))))))))