Mercurial > repos > icfp2014
changeset 5:80e224fff567
Fix handling of true case in if:else
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 25 Jul 2014 11:04:00 -0700 |
parents | eaf0a014d18b |
children | 0ab6eb5f0190 |
files | code/lmc.tp |
diffstat | 1 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/code/lmc.tp Fri Jul 25 10:56:27 2014 -0700 +++ b/code/lmc.tp Fri Jul 25 11:04:00 2014 -0700 @@ -123,6 +123,7 @@ args <- args tail tlabel <- prog makeLabel: "true" flabel <- prog makeLabel: "false" + elabel <- prog makeLabel: "end" prog add: (inst: "TSEL" #[ tlabel flabel @@ -131,11 +132,17 @@ foreach: ((args value) expressions) :idx expr { compileExpr: expr } + prog add: (inst: "LDC" #[1]) + prog add: (inst: "TSEL" #[ + elabel + elabel + ]) args <- args tail prog setLabel: flabel foreach: ((args value) expressions) :idx expr { compileExpr: expr } + prog setLabel: elabel } _funHandlers set: "isInteger?" :args { compileExpr: (args value)