Mercurial > repos > rhope
diff backendutils.rhope @ 30:914ad38f9b59
Compiler now works for some simple programs
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 28 Sep 2009 19:42:33 -0400 |
parents | e9272f7ebd26 |
children | 3498713c3dc9 |
line wrap: on
line diff
--- a/backendutils.rhope Sat Jun 27 01:50:33 2009 -0400 +++ b/backendutils.rhope Mon Sep 28 19:42:33 2009 -0400 @@ -47,17 +47,17 @@ Blueprint Constant { - Var + Value } Constant[var:out] { - out <- [Build["Constant"]]Var <<[var] + out <- [Build["Constant"]]Value <<[var] } Make Op@Constant[const,func:out] { - out <- [const]Var >> + out <- [func]Lookup Constant[[const]Value >>] } Blueprint Result @@ -105,3 +105,35 @@ { out <- ["!"]Append[[[cond]Condition >>]Make Op[func]] } + +Blueprint OrCond +{ + Condition1 + Condition2 +} + +OrCond[cond1,cond2:out] +{ + out <- [[Build["OrCond"]]Condition1 <<[cond1]]Condition2 <<[cond2] +} + +Make Op@OrCond[cond,func:out] +{ + out <- ["("]Append[[[[cond]Condition1 >>]Append[" || "]]Append[[[cond]Condition2 >>]Append[")"]]] +} + +Blueprint AndCond +{ + Condition1 + Condition2 +} + +AndCond[cond1,cond2:out] +{ + out <- [[Build["AndCond"]]Condition1 <<[cond1]]Condition2 <<[cond2] +} + +Make Op@AndCond[cond,func:out] +{ + out <- ["("]Append[[[[cond]Condition1 >>]Append[" && "]]Append[[[cond]Condition2 >>]Append[")"]]] +}