Nobody asked, but having now done some work in the WAST/WAT/Wasm Textual format, here's how I would change it if I got the opportunity:
- Keep the S-expression structure, but stop pretending it's "a LISP", describe it as the Wasm S-Expression Syntax or something
- Put the operator at the *end*; parenthesis are now *only* hints to the typechecker.
So (i32.const 10 (i32.const 3 i32.const 8 i32.add) i32.mul) is legal
(i32.const 10 (i32.const 3 i32.mul)) is an error because mul wants 2 i32 args