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[")"]]]
+}