note:
this is sparc(ish), with emphasis on the ish. the original sparc specification is clear enough for humans to read and understand, but too ambiguous for a computer to scan and process. we had to modify the specification to 1) be typable on a keyboard (i.e. to not use mathematical symbols) and 2) disambiguate ambiguous things. an example of something ambiguous:
let
x = a
y = b
in x end
as a human (👀), we can see that we're binding a
to x
and b
to y
. however, when scanning the code, the parser sees let x = a y = b in x end
, which could be interpreted as intended or as binding (a y) = b
to x
. thus, we modified the sparc specification to disambiguate things like this.
there are also a few bugs...
input:
(be careful copy/pasting...)
output: