See Arc Macro Expander for goals and rationale.
- arc/ssyntax.arc
- ssyntax from Arc3.1’s ac.scm ported to Arc.
- arc/macro.arc
- The macro expander.
- arc/ac-racket.arc
- Demo Arc to Racket cross compiler.
- ar.rkt
- Demo Racket runtime which is the target of the cross compiler.
- Quasiquotation expansion ported from clisp to Arc by fallintothis.
- common-tests
- Tests that can be run both in Arc3.1 and in the subset of Arc needed to implement the macro expander and compiler.
- runtime-tests
- Tests that can only be run in the target runtime because they use features not implemented by Arc3.1.
- more-tests
- Tests for code loaded later in Arc, features not implemented by the subset need by the cross compiler.
- precompile.load-order
- Specifies the order in which to load the code to bootstrap the implementation of Arc.
- precompile.arc
- Run the cross compiler to generate Racket source code (serialized to include injected values), which implements enough of Arc so that the macro expander and compiler can be run in the target runtime.
To run the cross compiler:
racket -f precompile.scm
this will produce /tmp/arc.precompiled
, as well as running tests
during cross compilation (to try to catch bugs as early as possible,
before the added complication of the running deserialized cross
compiled code in a different runtime).
And then:
racket ar.rkt
will load /tmp/arc.precompiled
, and run tests again.