initial support for statements: just parsing and code generation, no optimization
support inferring matrix shapes for intermediate values defined in assignment statements
simple hack: optimize multi-statement programs by independently optimizing each statement
convert examples to statement syntax
cleanup output a bit