Removed my last name from the files in the project
Changed the directory structure for the test output; also there are now some "expected output" files to compare to (previous version just compared unoptimized vs. optimized)
Changed the makefile and do-test scripts:
Use the new directory structure
All testing stuff is now in ./do-test, rather than some of it being in the makefile; also you can now run all tests just by typing ./do-test with no arguments
Things no longer depend on Makefile, so my changes to the makefile won't cause the project to be considered dirty (running make on a newly-extracted archive should say that all targets are up-to-date, if modification dates are preserved).
There is now a README with information on compiling and dependencies
Added return 0; to a few programs' main functions, to avoid warnings and undefined behavior.
Made HTML versions of everything, and added a home page. Also the HTML versions fix a misspelling (modifyable → modifiable).
Wrote a transpiler to Rust, and wrote some stuff about it.
Some bugfixes for the transpiler to C:
Fixed a bug where assigning to a member of a nested struct would cause the compiler to go into an infinite loop.
The transpiler now prints out the name of the step it's on (added to debug the previously-mentioned bug, and I left it in).
Now checks that structs are defined before they're used in other structs. This was required by the specification, but not checked; violating this requirement caused the transpiler to generate C code that doesn't compile.
Now checks that main has the right arguments and return type. In the earlier version, this wasn't caught as an error but caused the transpiler to generate C code that doesn't compile. Missing main still doesn't result in an error, because in theory you could use the generated code as a library (not that I'd recommend it).
Added a lot of tests that I wrote for the Rust version.
Also a few minor formatting changes.
Also fixed the size next to the download link. I don't know why that was wrong.