#!/bin/sh # Translate given SubX files with debug information on Linux. # # Mu provides 3 canonical ways to translate unsafe SubX programs: # 0. The C++ translator 'bootstrap translate' can generate traces for # debugging on Linux or BSD or Mac, but doesn't support any syntax sugar. # 1. The self-hosted translator can be run natively on Linux using # 'translate_subx'. It is fast and supports all syntax sugar, but you get no # trace for debugging. # 2. The self-hosted translator can be run emulated on Linux or BSD or Mac # using 'translate_subx_emulated'. It supports all syntax sugar. However, it # can be slow if you generate traces. # # This script fills in the gap above by stitching together aspects from # multiple approaches. It translates syntax sugar natively, but emulates lower # levels using the C++ translator. The result is complete and relatively fast # even when generating traces. # # The cost: it needs Linux. There is no script to generate traces while # running emulated on BSD or Mac. That's often impractically slow. set -e cat $* |./braces > a.braces cat a.braces |./calls > a.calls cat a.calls |./sigils > a.sigils bootstrap/bootstrap --debug translate a.sigils -o a.elf chmod +x a.elf