<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sail/test/ocaml/hello_world, branch sail2</title>
<subtitle>Formal specification language for ISAs</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/'/>
<entry>
<title>Interactive: Refactor sail.ml</title>
<updated>2019-03-27T16:32:08+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2019-03-27T16:21:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=790de19f73f1c164aba2259a6fe3f1a50eeff70c'/>
<id>790de19f73f1c164aba2259a6fe3f1a50eeff70c</id>
<content type='text'>
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 &lt;target&gt; command in the
interactive toplevel

Also implement a :rewrites &lt;target&gt; command which performs all the
rewrites for a specific target, so rather than doing e.g.

&gt; sail -c -O -o out $FILES

one could instead interactively do

&gt; 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 &lt;target&gt; command in the
interactive toplevel

Also implement a :rewrites &lt;target&gt; command which performs all the
rewrites for a specific target, so rather than doing e.g.

&gt; sail -c -O -o out $FILES

one could instead interactively do

&gt; 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update and fix test suite</title>
<updated>2018-01-22T13:41:35+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2018-01-22T13:41:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=1f8ac16d110e2b964a482c083e3782f406e94b69'/>
<id>1f8ac16d110e2b964a482c083e3782f406e94b69</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix ocaml test suite</title>
<updated>2017-11-03T18:15:40+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2017-11-03T18:15:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=e43324b207b13d7e4094e2561b4e4a84c76e1299'/>
<id>e43324b207b13d7e4094e2561b4e4a84c76e1299</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Started work on test suite for ocaml backend</title>
<updated>2017-09-01T13:27:34+00:00</updated>
<author>
<name>Alasdair Armstrong</name>
</author>
<published>2017-09-01T13:27:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/sail/commit/?id=4878a4706e276b8d1aa8a6808e88faeba7789049'/>
<id>4878a4706e276b8d1aa8a6808e88faeba7789049</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
