The dump below is a visual representation of the AST. The -o (optimize) option does some constant folding and optimizes e.g. C<if> and C<while> for constants.
The question is, if and where I should commit it. Its currently totally standalone, so I can tar and send it per PM too.
Comments welcome, leo
Some examples:
$ cat a.i int main() { double x = 4.1 + 2; print x + 10; if (2 + 1 == 2 + 100) { print x; } }
$ ./pir -o <a.i .pcc_sub _main prototyped .sym float x x = 6.1 add $N1, x, 10 print $N1 end .end
$ ./pir -d -o <a.i
(sub (decl (const I) (id main)) (block (seq (seq (= (decl (const N) (id x)) (const 6.1)) (print (add (id x) (const 10)))) (noop))))
$ cat b.i int main() { var x; print x + 10; }
$ ./pir -o <b.i .pcc_sub _main prototyped new_pad 0 .sym PerlUndef x x = new PerlUndef store_lex -1, "x", x $P1 = new PerlUndef add $P1, x, 10 print $P1 pop_pad end .end