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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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