diff options
| author | Alasdair Armstrong | 2019-03-27 16:21:05 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2019-03-27 16:32:08 +0000 |
| commit | 790de19f73f1c164aba2259a6fe3f1a50eeff70c (patch) | |
| tree | 10111abcc6596db21754ef8917e77dc80b46cd96 /lib | |
| parent | deab63011f13417cf305d292a5bf959bd20b79bc (diff) | |
Interactive: Refactor sail.ml
Rather than having a separate variable for each backend X,
opt_print_X, just have a single variable opt_print_target, where
target contains a string option, such as `Some "lem"` or `Some
"ocaml"`, then we have a function target that takes that string and
invokes the appropriate backend, so the main function in sail.ml goes
from being a giant if-then-else block to a single call to
target !opt_target ast env
This allows us to implement a :compile <target> command in the
interactive toplevel
Also implement a :rewrites <target> command which performs all the
rewrites for a specific target, so rather than doing e.g.
> sail -c -O -o out $FILES
one could instead interactively do
> sail -i
:option -undefined_gen
:load $FILES
:option -O
:option -o out
:rewrites c
:compile c
:quit
for the same result.
To support this the behavior of the interactive mode has changed
slightly. It no longer performs any rewrites at all, so a :rewrites
interpreter is currently needed to interpret functions in the
interactive toplevel, nor does it automatically set any other flags,
so -undefined_gen is needed in this case, which is usually implied by
the -c flag.
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions
