annotate backendutils.rhope @ 21:e9272f7ebd26

Limited compilation from dataflow graph to C backend
author Mike Pavone <pavone@retrodev.com>
date Tue, 23 Jun 2009 01:16:04 -0400
parents ea991f95ae1f
children 914ad38f9b59
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 Escape Rhope Name[name:escaped]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 {
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 escaped <- [[[[[[[[[[[name]Replace["_","__"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 ]Replace["@","_AT_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 ]Replace[" ","_SP_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 ]Replace[":","_CN_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 ]Replace["?","_QN_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 ]Replace["+","_PL_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 ]Replace["-","_MN_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 ]Replace["*","_TM_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 ]Replace["/","_DV_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 ]Replace["<","_LT_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 ]Replace["<","_GT_"]
31f8182f3433 Finished fib test and did some small work on the c backend
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 }
13
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
16
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
17 Blueprint AddRef
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
18 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
19 Value
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
20 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
21
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
22 AddRef[value:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
23 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
24 out <- [Build["AddRef"]]Value <<[value]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
25 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
26
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
27 Make Op@AddRef[addref,func:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
28 {
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
29 //TODO: Make me work with other backends
13
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
30 out <- [["add_ref("]Append[ [[addref]Value >>]Make Op[func] ]]Append[")"]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
31 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
32
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
33 Make Op@String[string,func:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
34 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
35 out <- [func]Resolve[string]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
36 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
37
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
38 Make Op@Whole Number[num,func:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
39 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
40 out <- num
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
41 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
42
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
43 Make Op@Real Number[num,func:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
44 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
45 out <- num
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
46 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
47
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
48 Blueprint Constant
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
49 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
50 Var
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
51 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
52
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
53 Constant[var:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
54 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
55 out <- [Build["Constant"]]Var <<[var]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
56 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
57
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
58 Make Op@Constant[const,func:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
59 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
60 out <- [const]Var >>
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
61 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
62
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
63 Blueprint Result
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
64 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
65 Output Num
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
66 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
67
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
68 Result[num:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
69 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
70 out <- [Build["Result"]]Output Num <<[num]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
71 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
72
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
73 Make Op@Result[result,func:out]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
74 {
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
75 out <- [func]Result Reference[[result]Output Num>>]
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
76 }
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
77
21
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
78 Blueprint OrValue
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
79 {
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
80 Left
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
81 Right
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
82 }
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
83
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
84 OrValue[left,right:out]
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
85 {
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
86 out <- [[Build["OrValue"]]Left <<[left]]Right <<[right]
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
87 }
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
88
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
89 Make Op@OrValue[orval,func:out]
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
90 {
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
91 out <- [func]If Null Else[[[func]Left >>]Make Op[func], [[func]Right >>]Make Op[func]]
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
92 }
e9272f7ebd26 Limited compilation from dataflow graph to C backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
93
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
94 Blueprint NotCond
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
95 {
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
96 Condition
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
97 }
13
23dd9c766699 C backend close to being useable
mpavone@
parents: 12
diff changeset
98
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
99 NotCond[cond:out]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
100 {
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
101 out <- [Build["NotCond"]]Condition <<[cond]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
102 }
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
103
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
104 Make Op@NotCond[cond,func:out]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
105 {
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
106 out <- ["!"]Append[[[cond]Condition >>]Make Op[func]]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 13
diff changeset
107 }