Mercurial > repos > rhope
annotate geninterp.rhope @ 184:c6ba9fe45910
Strip _c from filenames of current compiler
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 27 Jul 2011 21:28:43 -0700 |
parents | 03e4fa277291 |
children |
rev | line source |
---|---|
174 | 1 |
2 Import parser_old_c.rhope | |
3 Import cbackend_c.rhope | |
4 | |
5 Worker Set[lines,worker:out] | |
6 { | |
7 If[[[worker]Name >>]Starts With["_"]] | |
8 { | |
9 out <- lines | |
10 }{ | |
11 If[[[worker]Name >>]=["Call@Worker"]] | |
12 { out <- lines } | |
13 { out <- [lines]Append[ [[[["\t\t]Set[\""]Append[[worker]Name >>]]Append["\", "]]Append[[worker]Name >>]]Append["[?]]"] ] } | |
14 } | |
15 } | |
16 | |
17 Get Constant Type[func,const:out] | |
18 { | |
19 out <- func | |
20 } | |
21 | |
22 Get Var Type[func,varname:out] | |
23 { | |
24 out <- func | |
25 } | |
26 | |
27 Main[args] | |
28 { | |
29 | |
30 fname <- [args]Index[1] | |
31 { | |
32 file <- [File[~]]Open["r"] | |
33 text <- String[[file]Read[[file]Length]] | |
34 params <- Parser[] | |
35 Print[["Parsing "]Append[fname]] | |
36 Null[text, params, Parse Program[], 0] | |
37 { | |
38 Print["Parsing imports"] | |
39 Process Imports[~, params] | |
40 { | |
175
03e4fa277291
Use worker refs for geninterp
Mike Pavone <pavone@retrodev.com>
parents:
174
diff
changeset
|
41 tree <- [~]Workers << [ Map[[~]Worker Refs >>, Check Worker Literals[?, ~]] ] |
174 | 42 { Print["Compiling"] } |
43 } | |
44 | |
45 program <- Tree to Program Native[tree, [C Program[]]Supported Number Types] | |
46 lines <- Fold[Worker Set[?], (), [program]Workers >>] | |
47 | |
48 out text <- [[[Fold[Append[?, "["], "Func Lookup[:out]\n{\n\tout <- ", Range[0, Length[lines]]] | |
49 ]Append["Dictionary[]\n"] | |
50 ]Append[[lines]Join["\n"]] | |
51 ]Append["\n}\n"] | |
52 | |
53 | |
54 outname <- [args]Index[2] {} | |
55 { outname <- "interplookup.rhope" } | |
56 outfile <- [[File[outname]]Open["w"]]Truncate | |
57 | |
58 [[out text]Write to File[outfile] | |
59 ]Close | |
60 } | |
61 }{ | |
62 Print["You must provide a file name to compile"] | |
63 } | |
64 } | |
65 |