Added equal and not equal. Again, gives 0 when its false and 1 when its true. I've checked that 5=4 returns 0. It works.
Added openparen and closeparen. test_program5.do tests (3+5)*6, it correctly returns 48. The microc parser didn't put LPAREN and RPAREN in the %left thing at the beginning of the parser, so I didn't too.
test_program6 is a list of expressions that are separated by new lines. I've added stmt in the ast. So now, a program is a list of stmt. A stmt is currently an expr. In interp, exec takes in a list of stmt (= program) and run eval1 on each of the stmt. eval1 takes in a stmt and runs eval2 on an expression (Expr). The way the program is parsed, the list of statements has the wrong order so I ran reverse first on the program. Not so sure about this, maybe the way I parse the program is wrong?