Mercurial > repos > rhope
annotate compile_old_c.rhope @ 135:18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 14 Nov 2010 03:09:49 -0500 |
parents | 25a205094f9b |
children | fc3815b7462f |
rev | line source |
---|---|
114
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 Import parser_old_c.rhope |
135
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
3 Import cbackend_c.rhope |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
4 Import jsbackend.rhope |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
5 |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
6 Other Short[arg,list:out] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
7 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
8 If[[arg]=["-"]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
9 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
10 out <- list |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
11 }{ |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
12 rest,last <- [arg]Slice[ [[arg]Length]-[1] ] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
13 out <- Other Short[rest, [list]Append[last]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
14 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
15 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
16 |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
17 Check Short Val[short,args,cur,shortopts,curopts:fname,opts,next,nofname] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
18 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
19 If[[cur]<[[[args]Length]-[1]]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
20 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
21 val <- [args]Index[cur] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
22 nidx <- [cur]+[1] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
23 }{ |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
24 val <- Yes |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
25 nidx <- Val[cur] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
26 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
27 fname,opts,next,nofname <- Parse Args[args,nidx,shortopts,_Set Short[shortopts,curopts,short,val]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
28 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
29 |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
30 _Set Short[shortopts,dict,short,val:out] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
31 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
32 [shortopts]Index[short] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
33 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
34 out <- [dict]Set[~, val] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
35 }{ |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
36 Print[["Unrecognized short option: "]Append[short]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
37 out <- dict |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
38 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
39 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
40 |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
41 Parse Args[args,cur,shortopts,curopts:fname,opts,next,nofname] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
42 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
43 arg,nofname <- [args]Index[cur] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
44 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
45 If[[~]Starts With["-"]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
46 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
47 If[[arg]Starts With["--"]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
48 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
49 ,,after <- [arg]Partition["="] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
50 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
51 [~]Slice[2] {} |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
52 { nextopts <- [curopts]Set[~, after] } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
53 } {} {} { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
54 [arg]Slice[2] {} |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
55 { nextopts <- [curopts]Set[~, Yes] } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
56 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
57 fname,opts,next,nofname <- Parse Args[args,[cur]+[1],shortopts,nextopts] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
58 }{ |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
59 rest,last <- [arg]Slice[ [[arg]Length]-[1] ] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
60 fname,opts,next,nofname <- Check Short Val[last,args, [cur]+[1], shortopts, |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
61 Fold[_Set Short[shortopts,?,?,Yes], curopts, Other Short[rest, ()]]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
62 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
63 }{ |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
64 fname <- Val[arg] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
65 opts <- curopts |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
66 next <- [cur]+[1] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
67 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
68 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
69 } |
114
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 Main[args] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 { |
135
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
73 |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
74 fname,options <- Parse Args[args,1,[Dictionary[]]Set["b", "backend"],Dictionary[]] |
114
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 { |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 file <- [File[~]]Open["r"] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
77 text <- String[[file]Read[[file]Length]] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
78 params <- Parser[] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
79 Print[["Parsing "]Append[fname]] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
80 Null[text, params, Parse Program[], 0] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
81 { |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
82 Print["Parsing imports"] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
83 Process Imports[~, params] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
84 { |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
85 tree <- [~]Workers << [ Map[[~]Workers >>, Check Worker Literals[?, ~]] ] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
86 { Print["Compiling"] } |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
87 } |
135
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
88 backmap <- [[Dictionary[] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
89 ]Set["javascript", JS Program[?]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
90 ]Set["c", C Program[?]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
91 sel <- [options]Index["backend"] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
92 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
93 backend <- [backmap]Index[~]{} |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
94 { |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
95 Print[[["Unknown backend '"]Append[sel]]Append["' selected. Defaulting to C backend."]] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
96 backend <- C Program[?] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
97 } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
98 }{ backend <- C Program[?] } |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
99 compiled <- [Tree to Program Native[tree]]Compile Program[Call[backend]] |
114
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
100 { Print["Compiled program to backend"] } |
135
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
101 outfname <- [compiled]Text Filename[fname] |
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
102 outfile <- [File[outfname]]Truncate |
114
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
103 [[compiled]Text]Write to File[outfile] |
135
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
104 { Print[["Wrote output to "]Append[outfname]] } |
114
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
105 } |
135
18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
Mike Pavone <pavone@retrodev.com>
parents:
114
diff
changeset
|
106 }{}{}{ |
114
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
107 Print["You must provide a file name to compile"] |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
108 } |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
109 } |
25a205094f9b
More performance optimizations
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
110 |